我正在尝试使用GDAL v2.1.3读取CSV文件中的所有字段 使用此命令可以正常工作:
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
}
非常感谢任何帮助。
答案 0 :(得分:0)
我根本不是swig专家,但看起来数据集的向量(OGR)部分没有为current GDAL code
中的C#特别定义答案 1 :(得分:0)
我在使用 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++ 中,我必须添加 GDALOpenEx documentation 所述的结尾 NULL。