3

如果您将地理数据存储在 ESRI 形状中,则至少有三个文件:一个以包含矢量数据的 .shp 结尾,一个以包含属性的 .dbf 结尾,以及一个以包含索引的 .shx 结尾的文件。

我对 shx 文件感兴趣。它是如何工作的?它是否包含完整的映射,例如每个几何的“第一个几何映射到 dbf 中的第三行,第二个几何映射到第一行”?或者它的工作方式不同?

4

2 回答 2

6

根据规范,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 文件中的特定形状记录。

于 2009-01-27T10:40:19.687 回答
2

Paul Dixon 的回答很好。

虽然我想知道你打算用它做什么!如果您要编写代码来读取或写入 SHP 文件,我强烈建议您改用库 - 有一些很好的免费开源库,例如GDAL,也有一些很好的商业库。

于 2009-02-19T22:11:56.647 回答