Вопрос

Если у вас есть географические данные, хранящиеся в фигурах ESRI, у вас есть как минимум три файла:один заканчивается на .shp, содержащий векторные данные, другой заканчивается на .dbf, содержащий атрибуты, и файл, заканчивающийся на .shx, содержащий индекс.

Меня интересует shx-файл.Как это работает?Содержит ли он полное сопоставление, например «первая геометрия отображает третью строку в dbf, а вторая геометрия отображает первую строку» для каждой геометрии?Или это работает по-другому?

Это было полезно?

Решение

Согласно спецификация 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 в произвольном или последовательном порядке.

Другие советы

Прекрасный ответ Пола Диксона.

Хотя мне было интересно, что ты собираешься с этим делать!Если вы собираетесь писать код для чтения или записи файлов SHP, я настоятельно рекомендую вместо этого использовать библиотеку — есть несколько хороших бесплатных с открытым исходным кодом, например ГДАЛ, а также несколько хороших коммерческих.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top