C#开源GIS使用GDAL读取ArcGIS FileGDB
1. C#中使用GDAL当前使用的环境为:Win10+VS2019+.Net5.0新建一个工程之后,添加引用需要引用的dll路径为:C:\gdal\bin\gdal\csharp示例代码static void Main(string[] args){string strDataPath = @"C:\Users\xiaocai\Desktop\Data\781122PDT.gdb";Gdal.Al
·
1. C#中使用GDAL
当前使用的环境为:Win10+VS2019+.Net5.0
- 新建一个工程之后,添加引用

需要引用的dll路径为:C:\gdal\bin\gdal\csharp
- 示例代码
static void Main(string[] args)
{
string strDataPath = @"C:\Users\xiaocai\Desktop\Data\781122PDT.gdb";
Gdal.AllRegister();
OSGeo.OGR.Driver driver = Ogr.GetDriverByName("OpenFileGDB");
DataSource dataSource = driver.Open(strDataPath, 0);
for (int i = 0; i < dataSource.GetLayerCount(); i++)
{
//获取图层
Layer layer = dataSource.GetLayerByIndex(i);
Console.WriteLine($"{i} {layer.GetName()}");
do
{
//获取图层下的要素
Feature feature = layer.GetNextFeature();
if (null == feature)
{
break;
}
Console.WriteLine(feature.GetStyleString());
//获取geometry
string strWkt = "";
feature.GetGeometryRef().ExportToWkt(out strWkt);
Console.WriteLine(strWkt);//也可以ExportToWkb() gml等等
//获取属性
for (int p = 0; p < feature.GetFieldCount(); p++)
{
Console.WriteLine($"{feature.GetFieldDefnRef(p).GetName()}\t{feature.GetFieldAsString(p)}");
}
Console.WriteLine("------------------------------------------------------");
} while (true);
}
Console.WriteLine("Hello GDAL!");
}
- 示例代码输出结果
0 PDT
MULTIPOLYGON (((42587544.08925 5039173.6094,42592687.63025 5039516.5121,42595545.153 5037287.64435,42590801.6652 5037116.193,42587544.08925 5039173.6094)))
PDJB 1
BSM
SHAPE_Length 17378.4217973541
SHAPE_Area 11380985.1546283
------------------------------------------------------
MULTIPOLYGON (((42589658.6561 5034544.4225,42596516.71075 5035515.98025,42596573.8612 5032601.307,42589772.95705 5031686.89975,42589658.6561 5034544.4225)))
PDJB 1
BSM
SHAPE_Length 19563.6743732507
SHAPE_Area 19791384.6722722
------------------------------------------------------
MULTIPOLYGON (((42587956.3306 5036172.89735,42589645.0705 5036172.89735,42589704.6731 5035258.99105,42587956.3306 5034792.10415,42587956.3306 5036172.89735)))
PDJB 2
BSM
SHAPE_Length 5794.98994046641
SHAPE_Area 1978724.73447388
------------------------------------------------------
MULTIPOLYGON (((42592545.72965 5036222.5662,42594681.489 5036520.5791,42594621.8864 5035864.9507,42592744.40495 5035437.7988,42592545.72965 5036222.5662)))
PDJB 2
BSM
SHAPE_Length 5549.76815585525
SHAPE_Area 1470376.45484607
------------------------------------------------------
Hello GDAL!
C:\Users\xiaocai\Desktop\Code\GDAL\GDALDemo001ReadVector\GDALDemo001ReadVector\bin\Debug\net5.0\GDALDemo001ReadVector.exe (进程 9768)已退出,代码为 0。
要在调试停止时自动关闭控制台,请启用“工具”->“选项”->“调试”->“调试停止时自动关闭控制台”。
按任意键关闭此窗口. . .
2. 小插曲
2.1. 报错Cannot find proj.db
2.1.1. 问题描述
配置完环境变量后,使用GDAL报错
ERROR 1: PROJ: createGeodeticReferenceFrame: Cannot find proj.db
ERROR 1: PROJ: proj_as_wkt: Cannot find proj.db
ERROR 1: PROJ: proj_create_from_wkt: Cannot find proj.db
ERROR 1: PROJ: proj_create_from_wkt: Cannot find proj.db
ERROR 1: PROJ: proj_as_wkt: Cannot find proj.db
ERROR 1: PROJ: proj_create_from_wkt: Cannot find proj.db
ERROR 1: PROJ: proj_create_from_database: Cannot find proj.db
2.1.2. 解决方案
在环境变量中配置变量PROJ_LIB=C:\gdal\bin\proj6\share
注意:如果仍没有解决问题:
1.看变量值那个路径中有没有 proj.db 这个文件,如果没有说明GDAL不完整,需要重新下载或编绎。
2.环境变量设置好后将电脑关机重新启动。
2.2 Could not load file or assembly ‘ogr_csharp, Version=3.2.0.0, Culture=neutral, PublicKeyToken=null’. 试图加载格式不正确的程序。”
2.2.1. 问题描述
System.BadImageFormatException:“Could not load file or assembly ‘ogr_csharp, Version=3.2.0.0, Culture=neutral, PublicKeyToken=null’. 试图加载格式不正确的程序。”
2.1.2. 解决方案
选择环境变量中匹配的目标平台

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐

所有评论(0)