Gis SHX文件是如何工作的?
如果地理数据存储在ESRI形状中,则至少有三个文件:一个文件以包含矢量数据的.shp结尾,一个文件以包含属性的.dbf结尾,另一个文件以包含索引的.shx结尾 我对shx文件感兴趣。它是如何工作的?它是否包含完整的映射,如每个几何体的“第一个几何体映射到dbf中的第三行,第二个几何体映射到第一行”?或者它的工作原理不同吗?根据shx包含一个100字节的头,后面是一系列8字节的记录。每条记录在main.shp数据文件中存储记录的4字节偏移量和4字节内容长度Gis SHX文件是如何工作的?,gis,shapefile,Gis,Shapefile,如果地理数据存储在ESRI形状中,则至少有三个文件:一个文件以包含矢量数据的.shp结尾,一个文件以包含属性的.dbf结尾,另一个文件以包含索引的.shx结尾 我对shx文件感兴趣。它是如何工作的?它是否包含完整的映射,如每个几何体的“第一个几何体映射到dbf中的第三行,第二个几何体映射到第一行”?或者它的工作原理不同吗?根据shx包含一个100字节的头,后面是一系列8字节的记录。每条记录在main.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\u file\u length-100)/8中计算出记录的数量,并使用该索引随机或按顺序访问.shp文件中的特定形状记录。Paul Dixon的精细回答
虽然我想知道你会怎么处理它!如果您打算编写代码来读取或写入SHP文件,我强烈建议您改用库-有一些好的免费开源软件,比如,也有一些好的商业软件。所以dbf文件中的项目顺序与此无关,只是为了快速访问形状文件中的正确几何图形?如果你的解释是正确的,那么公式应该是(index_file_length-100)/8(这也将与我的示例数据完全匹配)。dbf记录的顺序与形状的顺序相同。我知道非常古老的帖子,但我并没有遵循您所展示的公式,规范说长度字节表示.shx中16位字的数量;因此,表示为32位short的值应该是50+(4*nRec)
的值。如果我有10条记录,那么90条记录被存储为32位短信息。您的公式如何生成10条记录的结果?除非您的意思是说,索引文件长度
是以字节为单位的“磁盘上”文件大小,而不是以16位字为单位测量长度的标头字节24中的文件长度指示符。