如果您有以ESRI形状存储的地理数据,则至少有三个文件:一个以包含vector-data的.shp结尾,一个以包含属性的.dbf结尾,另一个以包含索引的.shx结尾的文件.
我对shx文件感兴趣.它是如何工作的?它是否包含完整的映射,例如"每个几何体的第一个几何图谱映射到dbf中的第三行,第二个几何图谱映射到第一行"?或者它的工作方式不同?
根据规范,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文件中的特定形状记录.