экспорт на вкладку MapInfo с использованием GDAL и C# - PullRequest
0 голосов
/ 14 февраля 2020

, поэтому я пытаюсь преобразовать файл kml в слой вкладки mapinfo, используя пакет nuget GDAL. У меня работает код, который преобразует kml в geo json с использованием gdal, но всякий раз, когда я пытаюсь выполнить преобразование во вкладку MapInfo, происходит сбой с ошибкой: CreateFeature () не работает: недопустимый идентификатор функции 1 в строке кода CopyLayer.

Вот текущий код, с которым я работаю:

var sourcePath = @"C:\Temp\gdal\sample.kml";
var destPath = @"C:\Temp\gdal\tab\";
var destPathJ = @"C:\Temp\gdal\tab\sample.geojson";

var files = Directory.GetFiles(Path.GetDirectoryName(destPath));

foreach(var file in files) {
    File.Delete(file);
}

using (var kmlDriver = Ogr.GetDriverByName("KML")) {
    using (var kmlDatasource = Ogr.Open(sourcePath, 0)) {
        if (kmlDatasource != null) {
            Debug.WriteLine($"layers {kmlDatasource.GetLayerCount()}");

            var kmlLayer = kmlDatasource.GetLayerByIndex(0);

            Debug.WriteLine($"features {kmlLayer.GetFeatureCount(0)}");

            using (var tabDriver = Ogr.GetDriverByName("MapInfo File")) {
                if (tabDriver != null) {
                    using (var tabDatasource = tabDriver.CreateDataSource(destPath, new string[] { "FORMAT=TAB", "SPACIAL_INDEX_MODE=OPTIMIZED", "BLOCKSIZE=512" })) {
                        if (tabDatasource != null) {    
                            tabDatasource.CopyLayer(kmlLayer, "test", new string[] { "DESCRIPTION=test", "BOUNDS=-180,-90,180,90" });
                        }
                    }
                }
            }

            //using (var jsonDriver = Ogr.GetDriverByName("GeoJSON")) {
            //    if (jsonDriver != null) {
            //        using (var jsonDatasource = jsonDriver.CreateDataSource(destPathJ, Array.Empty<string>())) {
            //            if (jsonDatasource != null) {
            //                jsonDatasource.CopyLayer(kmlLayer, kmlLayer.GetName(), Array.Empty<string>());
            //            }
            //        }
            //    }
            //}
        }
    }
}

Вывод на вкладке создает файлы .dat, .map, .tab и .id в выходной папке, хотя они не t работа.

Документация для этого кажется ограниченной (или я просто еще не нашел). У кого-нибудь есть предложения по тому, что мне не хватает?

Спасибо,

...