ASP.NET - Что такое хороший способ чтения шейп-файлов из бэкэнда? - PullRequest
0 голосов
/ 25 сентября 2019

Мое приложение считывает шейп-файлы со стороны клиента и сервера и отображает их на карте.У меня нет проблем с загрузкой шейп-файлов со стороны клиента.Пользователь сначала загружает файл из браузера, а объект File передается бэкэнду.

public ActionResult ShpRead()
        {
            try
            {
                string resultTest = "";

                //  Get all files from Request object  
                HttpFileCollectionBase files = Request.Files;
                HttpPostedFileBase file = files[0];
                string fname;

                Stream FileStream = file.InputStream;
                BinaryReader br = new BinaryReader(FileStream);

                br.ReadBytes(24);
                int FileLength = br.ReadInt32();
                int FileVersion = br.ReadInt32();
                int ShapeType = br.ReadInt32();
                double xmin = br.ReadDouble();
                double ymin = br.ReadDouble();
                double xmax = br.ReadDouble();
                double ymax = br.ReadDouble();
                double width = xmax - xmin;
                double height = ymax - ymin;
                br.ReadBytes(32);

                //more code for handling each shape type
}

Со стороны сервера интерфейс сначала получает шейп-файл из хранилища Azure, а шейп-файл передаетсяна сервер с AJAX.Затем, используя классы Stream и BinaryReader, программа считывает двоичный файл шейп-файла и извлекает информацию в следующем формате (https://en.wikipedia.org/wiki/Shapefile).

Однако чтение двоичного файла шейп-файла всегда приводит к этой ошибке.

    System.IO.EndOfStreamException: Unable to read beyond the end of the stream.

, что наводит меня на мысль, что либо шейп-файлы, загруженные с обеих сторон, не одинаковы, либо метод ShpRead () нельзя использовать как на стороне клиента, так и на стороне сервера.

Если яКак передать шейп-файл, полученный с сервера, на сервер в виде двоичной строки, каков хороший способ анализа строки и извлечения информации?

...