许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  .NET5使用GDAL加载Esri的GDB与MDB数据库(第一篇)

.NET5使用GDAL加载Esri的GDB与MDB数据库(第一篇)

阅读数 14
点赞 0
article_banner

.Net5使用Gdal加载Esri的GDB与MDB(一)

概述

最近项目上有在自建的GIS库上解析Arcgis导出的GDB、MDB数据的需求,项目基于.Net5与NTS开发,支持跨平台,所以将几种可用方案进行了对比

一、Esri.FileGDBAPI

Esri官网提供的免费的API,从、基于C++,可在 此处 下载  ,分为linux、mac、 windows  三个版本,windows版下载后有C#调用示例,优点是功能全,支持读写,不过Dll的.net的版本比较老( 最新的应该是.Net45的),并且在linux下可能还要花点功夫研究,本次只有读的需求,并且其并不支持MDB的操作,所以并没有采用该方案

二、GDAL

GDAL本身就不多做介绍了,强大是很强大的,资料及官方API上显示,GDAL从2.0开始支持对GDB与MDB的读写功能,所以本次的预期是找一个GDAL的Core版本,支持跨平台并且同时解决GDB与MDB的读问题。

   本次实验了三个不同的GDAL下的Nuget,分别为ThinkGeo.GdalGdal.CoreMaxRev.Gdal.Core
ThinkGeo.Gdal: 优点是GDAL的版本比较高,缺点是依赖项太多,并且内置数据库等其他一些相关DLL,对我的需求来说比较冗余;
Gdal.Core: 做了一版,这个正式的只有1.0版,其他都是beta版本,不过本身就是GDAL的调用封装而已,影响不大,使用GDAL的版本为2.3.0-dev,但是读出来的属性数据 中文 乱码,网上一大堆读取Shapefile乱码的解决方案并不适用,搜索源码应该是只在SHAPEFILE驱动中对“SHAPEFILE_ENCODING”做了处理,换成“OPENFILEGDB_ENCODING”也并没有什么用。

OSGeo.GDAL.Gdal.SetConfigOption("SHAPEFILE_ENCODING", "UTF-8")

MaxRev.Gdal.Core: 该包使用的是GDAL的3.4.0版,解决了GDB的中文乱码问题,但是没高兴多久,在MDB中又出现了中文乱码的问题- -!,最终无力再搞,采用此包暂时满足项目上的需求,MDB采取了混用的问题临时解决(使用GDAL解析几何数据,使用OLEDB解析属性数据)。

总结

几种方案都不够完美,尤其MDB读了两次文件,性能上肯定是有所损耗,可能更新GDAL版本或者对源码做修改可以解决MDB乱码的问题(C++能力有限,太麻烦),后面对MDB的处理打算采用自己解析MDB二进制的方式,目前已测试过对MDB二进制的读写,后续有时间再共享出来。


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删


相关文章
技术文档
QR Code
微信扫一扫,欢迎咨询~
customer

online

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 board-phone 155-2731-8020
close1
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空