Использование GDAL.OpenEx() в C# с CSV-файлом

Я пытаюсь прочитать все поля в файле CSV с помощью GDAL v2.1.3 С помощью этой команды она работает:

ogrinfo -ro -al -so test.csv -oo X_POSSIBLE_NAMES=Lon* -oo Y_POSSIBLE_NAMES=Lat* -oo KEEP_GEOM_COLUMNS=NO

Теперь мне нужно сделать это в моем приложении C#. Потому что мне нужно отправить -oo (открыть параметры) я не могу использовать Ogr.Open(), но я должен использовать Gdal.OpenEx(), право? OpenEx возвращает Dataset, который мне как-то нужно преобразовать в ogr datasource так что я могу использовать GetLayerByIndex(), GetFieldCount() а также GetFieldDefn() но я не могу заставить его работать.

Глядя на многочисленные примеры Python, кажется, что в Python преобразование не требуется. Это мой код C#:

var openOptions = new[]
{
    "X_POSSIBLE_NAMES", "Lon*",
    "Y_POSSIBLE_NAMES", "Lat*",
    "KEEP_GEOM_COLUMNS", "NO"
};
using (var ds = Gdal.OpenEx(input, 4, null, openOptions, null))
{
    if (ds == null)
    {
        throw new Exception("Can't open OGR dataset: " + input);
    }
    // var layer = ds.GetLayerByIndex(0); <----- COMPILE ERROR
}

Буду признателен за любую оказанную помощь.

2 ответа

Я вообще не специалист по swig, но похоже, что векторная (OGR) часть набора данных специально НЕ определена для C# в текущем коде GDAL

Я столкнулся с аналогичными проблемами с C ++, пытаясь переключиться с ogr2ogr CLI на GDAL C++. Может, это кому-то поможет.

Мне пришлось отформатировать свой массив опций по-другому, чтобы он заработал:

        const char *optionsArray[5] = {
    "X_POSSIBLE_NAMES=lon*",
    "Y_POSSIBLE_NAMES=lat*",
    "Z_POSSIBLE_NAMES=alt*",
    "KEEP_GEOM_COLUMNS=NO",
    NULL
  };

В C ++ я должен добавить окончание NULL, как указано в GDALOpenEx .документации

Другие вопросы по тегам