Я ищу более подробное объяснение различий в файлах shp и shx без особой пользы. Я имею в виду, что «shp содержит геометрию - shx содержит индекс геометрии».
Причина, по которой я спрашиваю, заключается в том, что, работая недавно в QGIS, я сделал два замечания, которые привели меня к мысли о точных различиях в этих расширениях файлов:
- QGIS может открывать и отображать как shx, так и shp, и каждый файл выглядит более или менее идентичным в своем выводе (отображении),
- но не совсем так - я заметил, что иногда совпадающие файлы shx / shp выглядят немного «нестабильно» относительно друг друга. Кажется, это не проблема проецирования, они просто не рисуют в одном и том же месте друг с другом.
Эти наблюдения заставили меня задуматься о том, почему существуют эти различия в отображении, и почему QGIS может открывать и использовать shx так же, как shp, когда ранее я понимал, что shp является «главным» файлом, если хотите, но требует, чтобы .dbf и .shx работали правильно как единое целое.
qgis
shapefile
file-formats
Мэгги
источник
источник
Ответы:
Окончательной ссылкой на формат шейп-файла является Техническое описание шейп-файла ESRI .
Вводить в заблуждение описание
shx
«индекса». Вместо этого это файл смещения прямого доступа. Нет данных вshx
, только клон из первой сотни байтов и номер записи и смещение к начальному байту этой записи вshp
. Единственное место для атрибутов - этоdbf
(которое является автономным - несмотря на «знание», наоборот,shx
оно не связываетshp
иdbf
делает это только номер записи).Вполне возможно , для шейп иметь «пробелы» в
shp
которые делаютshx
незаменимыми, но на практике Esri инструменты переписать всеshp
иshx
так , что удаляется любой пробел , созданный редактирования записей. В большинстве случаев можно восстановитьshx
содержимое, если оно пропало; то же самое нельзя сказать оshp
илиdbf
.Именование
shp
иshx
является артефактомVFILE
модуля прямого доступа переменной ширины операционной системы PrImeOS, который сначала был перенесен Esri в Unix, VAX / VMS, Data General и IBM, затем в Microsoft Windows.sbn
/sbx
Пространственный индекс пар разделяет то же соглашение об именовании (хотя они не описаны в спецификации шейпа). В исходнойVFILE
библиотеке FORTRAN был назван только базовый файл, а смещенный файл сx
символом терминала появился только при создании файла.источник
The index file (.shx) contains a 100-byte header followed by 8-byte, fixed-length records. Figure 4 illustrates the index file organization.
логике это аналогично индексам базы данныхa data structure that improves the speed of data retrieval operations
.shx
это абсолютно не пространственный индекс.shx
Фактически замедляет последовательный доступ (более I / O), но он делает прямой доступ возможное , что можно было бы рассматривать улучшение.shp
и вshx
. Это не присутствует вdbf
только неявное смещение в байтах от конца записи заголовка (40 байт для таблицы, которая включает в себя подсчет поля, и 40 дополнительных байтов для каждого поля) раз размер записи. Я написал читателей и писателей шейп-файлов как на «C», так и на Java, и это переменная счетчика цикла программы, которая связываетshp
/shx
сdbf
.shx
Обеспечивает связь рекордного числа, путем смещения с проверкой на целостность RECNO, в началеshp
записи, больше ничего.Shx определенно нечего показывать на одной карте, как вы можете прочитать из спецификации https://www.esri.com/library/whitepapers/pdfs/shapefile.pdf .
Вы действительно правы в том, что открыть шейп-файл можно, выбрав часть .shx в QGIS 3.0.3, но я не вижу никакой разницы в расположении. Я считаю, что шейп-файл все еще открывается по тому же пути, и результат тот же. Если вы можете создать контрольный пример для воспроизведения вопроса о различном расположении геометрий, пожалуйста, создайте билет QGIS об этой проблеме.
Если вы удалите часть .shp, вы увидите, что QGIS не открывает только .shx.
источник
.shx
это индекс для.shp
файла.Вы должны оба, чтобы иметь возможность открыть
.shp
файл. Если вы откроете.shx
файл в QGIS, он откроет.shp
файл. Если они выключены, есть проблема с проекцией.ShapeFile требуется три компонента:
.shp
- сохраняет геометрию.shx
- хранит индекс.dbf
- хранит атрибуты.prj
Файл, как правило , рекомендуется, которая хранит информацию о проекции. Могут быть другие файлы, связанные с ShapeFile, но они не являются абсолютно необходимыми.источник