Использование 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 .документации