GDB的文件结构
整个GDB数据库在Windows下实质是一个文件夹,里面通过文件名和文件后缀两个维度。
到目前为止,GDB也经历了两个大的规范版本9和10,由于现在主要使用10,所以不对9进行展开。
文件命名格式为a[number in lowercase hex].[extension]
,
a00000001 是第一个文件, a00000002是第二个文件,且数字可能被跳过。
在 FileGDB v10中,前8个文件 (a00000001 to a00000008) 是固定不变的内置文件,被预留来保存数据库本身的元数据,后续的文件被用来存放实际的要素信息(a00000009, a0000000a, ...)
GDB看作一个整体,将整个数据库的文件列表、整个数据库的配置信息、每张数据表的坐标系、每张表的metadata、GDB_ItemRelationships、GDB_ItemRelationshipTypes、GDB_ItemTypes等单独抽离出来存储。从a000000009开始的表才真正存放用户的实际数据,且a000000009之后的所有文件内不存放坐标系和metadata,只存放字段信息和每一行数据。暂时还不清楚GDB_ItemRelationships、GDB_ItemRelationshipTypes、GDB_ItemTypes到底是什么,可能是拓扑检查需要的东西。
-
a00000001
也叫GDB_SystemCatalog
包含一个本数据库中所有文件的列表,也包括它本身。这里记录的表格在磁盘上有可能找不到,比如a00000008。 一行记录中的FID记录了文件名。
例如,FID 37的记录(这里采用的FID编号惯例是从1开始的)将在文件a00000025中(译者注:10进制的37用16进制表示为25)。在这个目录表中可能有被删除的行,因此在FID编号中存在空白。
在.a00000001.gdbtable中暂时没找到FID这一个属性列,里面的ID列实际类型是objectid,所以不能直接拿来对比使用。
这个表里还包含Name
和FileFormat
字段。FileFormat字段的值多数时候是0,在少部分内置保留表中是2。
-
a00000002
叫GDB_DBTune
,主要包含本数据库的一些配置信息。 -
a00000003
也叫GDB_SpatialRefs
,主要用于存储坐标系信息,坐标系以WKT形式存储在SRTEXT字段中,WKT是以ESRI的WKT格式组织的,其它还包括:FalseX, FalseY, XYUnits, FalseZ, ZUnits, FalseM, MUnits, XYTolerance, ZTolerance, MTolerance字段。
所有行都是唯一的,所以如果有3个Feature类,它们都具有相同的坐标系,但其中一个具有不同的ZTolerance,那么就会有两行记录。
-
a00000004
也叫GDB_Items
并且包含layers的 metadata,以XML格式表示。字段包括 :
- UUID (UUID) : UUID
- Type (UUID) : item type
- Name (string) : item/layer name. Matches the Name field of the GDB_SystemCatalog
- PhysicalName (string) : item/layer name in upper case characters.
- Path (string) : "\mylayername" for top-level layers or "\myfeaturedataset\mylayername" for layers attached to a feature dataset "myfeaturedataset"
- DatasetSubType1 (int32) : 1 for user tables (TBC)
- DatasetSubType2 (int32) : layer geometry type. 1 for point layer, 2 for multipoint layers, 3 for linestring layers, 4 for polygon layers
- DatasetInfo1 (string) : "SHAPE" for user tables (TBC)
- DatasetInfo2 (string) : NULL for user tables (TBC)
- URL (string) : empty string (TBC)
- Definition (XML) : DEFeatureClassInfo XML element. Contains an XML version of the information that can be obtained by parsing the header of a table : fields, SRS, ...
- Documentation (XML) : metadata XML element
- ItemInfo (XML) : NULL for user tables (TBC)
- Properties (int32) : 1 for user tables (TBC)
- Defaults (binary) : absent for user tables (TBC)
- Shape (geometry) : 5 point polygon listing the corner of the bounding box of the layer reprojected into EPSG:4326 (even if the layer SRS is not EPSG:4326). Or missing if the layer SRS is undefined.
一些特殊记录:
- The first record is reserved for a kind of root item ( Name = "", Path = "" ).
- The second record is reserved for a Name = "Workspace" item, Path = "", Definition containing a DEWorkspace XML element
- When there are feature datatesets, they also appear as records : e.g. Name = "featuredataset", PhysicalName = "FEATUREDATASET", Path = "\FEATUREDATASET", Definition containing a DEFeatureDataset XML element
-
a00000005
,a00000006
anda00000007
are one ofGDB_ItemRelationships
,GDB_ItemRelationshipTypes
orGDB_ItemTypes
(order may vary depending on datasets) -
a00000008虽然在记录中有,但实际磁盘上可能会不存在。
大佬们如果觉得有用请支持点赞
网友评论