Согласно spec shx содержит 100-байтовый заголовок, за которым следует последовательность 8-байтовых записей. Каждая запись хранит смещение 4 байта и длину содержимого 4 байта для записи в основном файле данных .shp.
+-----------------------------------------------+
| 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 в произвольном порядке или в последовательности.