对于ESRI个人地理数据库(Personal Geodatabase)直接支持的GIS库很少,但是ESRI Shapefile格式应用极为广泛,几乎所有GIS库均支持。为了利用个人地理数据库的数据,需要将其转换为Shapefile。关于ESRI个人地理数据库的格式说明资料极少,笔者在工作中需要读取这类GIS数据,根据探索总结了本文资料,并开发了读取个人地理数据库转换为Shapefile的程序,并已开源。
「https://github.com/sunzechang/PersonalGeoDatabase2Shapefile(或点击文末
01ESRI个人地理数据库表格关系ESRI个人地理数据库实质是微软Access数据库,可以用微软Access软件打开。几何数据以Ole 对象类型存储,实质是二进制格式,格式与Shapefile几何存储格式近乎一致,区别在于文件头不同。个人地理数据库中以“GDB_”开头的表格均是元数据表格,有几个关键元数据表:GDB_SpatialRefs、GDB_ObjectClasses、GDB_GeoColumns、GDB_FeatureDataset,他们之间的关系如下图所示。
GDB_FeatureDataset:是要素数据集表,“Name”是要素数据集的名称;“SRID”是外键,与“GDB_SpatailRefs”表中”ID”对应。该表是对要素类图层的管理,一个要素数据集可包含1个或多个要素类图层,同属一个要素数据集的所有要素类图层的空间参考是一样的。
GDB_ObjectClasses:是要素对象表,“Name”表示要素图层的表格名,“DatasetID”是外键,好的表示该要素图层所属的要素数据集的ID,对应“GDB_FeatureDataset”表中的“ID”。
GDB_SpatialRefs:是空间参考表,”SRTEXT”记录空间参考信息。
GDB_GeoColumns:是几何类型表,记录要素图层的几何类型和几何字段。“TableName”表示要素图层的表格名;“FieldName”表示该要素图层表格中的该字段存储的是几何信息,默认是Shape;“ShapeType”表示该要素图层的几何类型,取值说明如下表所示。“SRID”是外键,与“GDB_SpatailRefs”表中”ID”对应,记录该要素图层的空间参考。
表1 ShapeType取值说明
ShapeType取值 |
< |