如果您有以ESRI形状存储的地理数据,则至少有三个文件:一个以包含vector-data的.shp结尾,一个以包含属性的.dbf结尾,另一个以包含索引的.shx结尾的文件。 / p>
我对shx文件感兴趣。它是如何工作的?它是否包含完整的映射,例如“每个几何体的第一个几何图谱映射到dbf中的第三行,第二个几何图谱映射到第一行”?或者它的工作原理有何不同?
答案 0 :(得分:6)
根据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文件中的特定形状记录。
答案 1 :(得分:2)
Paul Dixon的精彩回答。
虽然我想知道你将如何处理它!如果您要编写代码来读取或写入SHP文件,我强烈建议您使用库 - 有一些很好的免费开源代码,如GDAL,也有一些很好的商业代码。