mdb(个人地理数据库)转shape file其实并不简单

自定义脚本实现mdb转为shp


摘 要

mdb转shp,你会说,使用ArcMap转换啊!

我没有,且在mdb的问题上,ArcGIS Pro与ArcMap由于64位应用架构的原因,已经各自安好了。

你会说,用FME啊,用ogr2ogr啊,自定义脚本啊,……


        在地理信息系统(GIS)应用中,地理数据的存储和交换是一个常见的需求。个人文件地理数据库(MDB)是一种常见的地理数据存储格式,但是在实际应用中,有时需要将MDB文件转换为Shapefile(SHP)格式,以便在不同的GIS软件中使用。虽然听起来简单,但实际上这个过程可能会面临一些挑战。

        回忆一下,是否还能记清它的脸……

图片

图片

        ArcMap退出历史的舞台,ArcGIS Pro不再支持mdb数据库,我有一丝遗憾,但不痛。

        直到最近,我只有ArcGIS Pro(ArcMap已收藏),基于Pro的Python环境进行开发时,mdb终于成为不能逃避的那一道坎。

一、需求背景

        我需要入库一批数据,数据量很大,是省级量级的成果,数据按州市、区县、成果类型等文件夹一层层递进存放,到地理数据库时,文件夹最深的目录有7级。

        此外,存放矢量数据的格式包括,gdb、mdb、shp,图层名、字段名,中英文切换自如……

        如果使用ArcMap来处理这样的需求,是一个很简单的事情。但是如果使用ArcGIS Pro,那么问题就很大,很大……,全卡在mdb格式上。

### SHP 文件格式与 MDB 文件格式的区别 #### 1. 数据结构复杂度 Shapefile (SHP) 是一种简单的文件格式,由三个主要部分组成:几何特征、属性表以及投影信息。这种简单性使得它易于共享和兼容于大多数 GIS 软件,但也意味着功能有限[^1]。 相比之下,Microsoft Access Database (.mdb),即个人地理数据库,具有更复杂的内部结构。它可以容纳多个要素类、栅格数据集以及其他类型的对象,并支持关系型数据库特性如索引、查询优化等功能[^2]。 #### 2. 存储能力差异 由于 Shapefiles 的设计初衷是为了提供轻量级的数据交换方式,因此它们不适合处理非常庞大的数据集。而 .mdb 文件则能够更好地应对大规模的空间数据分析任务,因为该格式允许定义更加精细的数据模型并能有效管理大量记录。 #### 3. 性能表现对比 当涉及到读取速度时,在某些情况下,Shapefiles 可能在小型项目上表现出更快的速度;然而随着数据量的增长,Geodatabases(包括基于MDB的版本)往往展现出更好的性能优势,尤其是在执行复杂操作的时候。 #### 4. 功能扩展可能性 对于高级应用而言,比如拓扑规则设定或是网络分析工具的支持方面,MDB 提供了更为丰富的选项和支持程度。这是因为 ArcGIS 平台本身对 Geodatabase 格式的全面集成所带来的便利性和灵活性。 ```python import arcpy # Example of reading a shapefile and an mdb file using Python with arcpy module. def read_shapefile(shp_path): shp_desc = arcpy.Describe(shp_path) print(f"Reading from {shp_path}:") print(f"\tType: {shp_desc.shapeType}") def read_mdb(mdb_path, layer_name): gdb_workspace = f"{mdb_path}\\{layer_name}" gdb_desc = arcpy.Describe(gdb_workspace) print(f"Reading from {gdb_workspace} inside the MDB:") print(f"\tFeature Type: {gdb_desc.featureClass.catalogPath}") read_shapefile(r"C:\path\to\your\shapefile.shp") read_mdb(r"C:\path\to\your\db.mdb", "LayerName") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

craybb

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值