如果您有以ESRI形状存储的地理数据,则至少有三个文件:一个以.shp结尾,其中包含矢量数据,一个以.dbf包含属性结尾,另一个文件以包含索引的.shx结尾。SHX文件如何工作?
我对shx文件很感兴趣。它是如何工作的?它是否包含完整的映射,如每个几何图形中'第一个几何图映射到dbf中的第三行,第二个几何图映射到第一行'?或者它有什么不同?
如果您有以ESRI形状存储的地理数据,则至少有三个文件:一个以.shp结尾,其中包含矢量数据,一个以.dbf包含属性结尾,另一个文件以包含索引的.shx结尾。SHX文件如何工作?
我对shx文件很感兴趣。它是如何工作的?它是否包含完整的映射,如每个几何图形中'第一个几何图映射到dbf中的第三行,第二个几何图映射到第一行'?或者它有什么不同?
根据spec,shx包含一个100字节的标题,后跟一个8字节的记录序列。每个记录在主.shp数据文件中存储一个4字节偏移量和一个4字节内容长度的记录。
+-----------------------------------------------+
| header (100 bytes) |
+-----------------+------------------+----------+
| offset(4 bytes) | length (4 bytes) |
+-----------------+------------------+
| offset(4 bytes) | length (4 bytes) |
+-----------------+------------------+
| offset(4 bytes) | length (4 bytes) |
+-----------------+------------------+
| offset(4 bytes) | length (4 bytes) |
+-----------------+------------------+
| .... |
+-----------------+------------------+
注意,偏移16个字被指定,所以对于第一个记录的偏移为50(作为.SHP头是100个字节,或50个字,长)。内容长度也用16位字指定。
因此,您可以计算出(index_file_length-100)/8
中的记录数,并使用该索引随机或依次访问.shp文件中的特定形状记录。
Paul Dixon很好的回答。
虽然我想知道你打算怎么处理它!如果您要编写代码来读取或写入SHP文件,我强烈建议您改用库 - 有一些很好的免费开源代码,例如GDAL,也有一些很好的商业版本。
因此,dbf文件中的项目顺序与它没有任何关系,仅用于快速访问形状文件中的正确几何?如果你的解释很重要,公式应该是(index_file_length-100)/ 8(这也与我的示例数据完全一致)。 – Mnementh 2009-01-27 11:19:18