前边几篇文章,介绍了mdb地理数据库结构解析、mdb转出为shp示例,以及mdb转为gdb的几种技术路线探讨,并未对mdb转出为shp、或gdb格式进行完整实现。
为了方便使用,并支持更加复杂的使用场景,小编已将前边几篇文章中的内容进行集成,将mdb数据转出为shp或gdb格式的功能封装为Python工具箱,并分别在ArcMap10.8.1和ArcGIS Pro3.1中进行使用演示。
(1)在ArcMap中将mdb(批量)转出为gdb;
(2)在ArcGIS Pro中将mdb(批量)转出为gdb或shp,开源实现;
(3)使用方便,在目录树中展开即可使用,不需要再折腾环境。
MDB转出为GDB,内容比较多,每一篇文章的内容篇幅都很长,希望对大家有帮助。
(1) mdb(个人地理数据库)转shape file其实并不简单
(2) mdb转gdb实现过程介绍(1)mdb地理数据库结构解析和gdb库的创建
(3)mdb转gdb实现过程介绍(2)三种方式实现GDB数据库的读、写,并将实现方式与ArcGIS环境共存配置
在ArcMap中将mdb(批量)转出为gdb,难度不大,使用arcpy很容易实现mdb数据结构的解析、图层创建以及数据的复制等。唯一的缺点就是转出的效率不高,速度较慢。
python工具箱截图如下:
将指定的mdb转出为gdb
ArcMap毕竟是原生支持mdb格式,mdb中的关系类、表、注记类等都能很好的支持。为什么单独提到关系类、表、注记类呢?因为在开源实现时,会碰到很多问题,后续将进行介绍。
工具使用过程和截图如下图:
录屏如下:
批量将mdb转出为gdb
递归指定文件目录,将文件下的所有mdb数据转出为gdb。支持将gdb输出在mdb当前所在位置或指定输出位置。
工具使用过程和截图如下图:
录屏如下:
将指定的mdb转出为gdb
这部分是本文分享的重点。由于ArcGIS Pro不再支持mdb格式的地理数据,给仍存留mdb数据,或收集到mdb数据将如何在pro中使用的单位或部门带来了很多不便。
而对于热爱技术,喜欢使用开源或第三方库实现一些GIS小工具的小伙伴,能否不依赖于arcpy,实现mdb、gdb数据的读写,同样倍感困惑(至少小编之前就为此苦恼)。
python工具箱截图如下:
① mdb转gdb
在实现mdb转gdb的过程汇总,大概可以分为三个步骤:
一是解析mdb结构;
二是复制一个与mdb结构一致的gdb;
三是将mdb中的数据写入gdb中。
对于第一步,解析mdb结构。小编使用的是pyodbc库,其只能解析要素数据集、要素类和表,所以,小编的代码只支持这三类数据结构的解析、创建和读写(一般来说,够用了)。
对于第二步,复制一个与mdb结构一致的gdb。小编使用ogr实现,碰到的困难主要是创建数据集(开源中没有数据集的概念)。
对于第三步,将mdb中的数据写入gdb中。主要是字段类型之间的一些对应关系,一开始很担心写入效率,但比arcmap中快5倍左右。
工具使用过程和截图如下图:
录屏如下:
② mdb批量转gdb
递归指定文件目录,将文件下的所有mdb数据转出为gdb。支持将gdb输出在mdb当前所在位置或指定输出位置。
工具使用过程和截图如下图:
录屏如下:
将指定的mdb转出为shp
① mdb转shp
在ArcMap中,就没有写mdb转shp的功能,感觉意义不大,本身ArcMap支持mdb。但在Pro中,或基于技术研究的冲动,mdb转shp是很有必要的。这里的一个困难,是导出mdb中的表,无论是创建dbf还是将数据写入dbf,都有些麻烦。至于字段名长度上,就没有什么纠结的了,无论是shp还是dbf,都不能超过10个字符。但是Esri对dbf进行了重写,字段长度是没有10个字符的限制的。
工具使用过程和截图如下图:
录屏如下:
②mdb批量转shp
递归指定文件目录,将文件下的所有mdb数据转出为shp。支持将shp文件输出在mdb当前所在位置或指定输出位置。
工具使用过程和截图如下图:
录屏如下:
有需要工具的,按下图操作。私信关键词“mdb数据转出”免费获取。
每一篇文章的背后都凝聚了很多心血和努力,如果您觉得这些内容对您有帮助或启发,请考虑转发、关注。这不仅是对我工作的肯定,也会帮助我继续创作更多有价值的内容。谢谢大家的支持!