Пояснення різниці між shx та shp файлами shapefile?


11

Я шукаю більш глибоке пояснення відмінностей у файлах shp та shx, але безрезультатно. Я маю на увазі поза межами 'shp містять геометрію - shx містить індекс геометрії'.

Причина, яку я запитую, полягає в тому, що, працюючи в QGIS останнім часом, я зробив два спостереження, які призвели до моїх питань щодо точних відмінностей у цих файлах:

  1. QGIS може відкривати та відображати як shx, так і shp, і кожен файл видається більш-менш однаковим у своєму виведенні (відображенні),
  2. але не зовсім так - я помітив, що іноді відповідні файли shx / shp відображаються злегка один від одного. Це, здається, не є проблемою проекції, вони просто не малюють в точно такому ж місці, як один до одного.

Ці спостереження змусили мене зацікавити, чому існують ці відмінності у відображенні, і чому QGIS може відкривати та керувати shx таким же чином, як і shp, коли раніше я розумів, що shp - це "головний" файл, якщо ви хочете, але Для коректної роботи як єдиного цілого цілого об'єкта потрібні .dbf та .shx.



Відповіді:


19

Остаточним посиланням на формат форм-файлу є технічний опис шаблону 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символом терміналу щойно з'явився при створенні файлу.


1
І пізніше: 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.
користувач30184

2
Ні, shxце абсолютно не просторовий індекс.
Вінс

1
shxФактично уповільнює послідовний доступ (більш I / O), але він робить прямий доступ можливе , що можна було б розглядати поліпшення.
Вінс

1
"..., лише клон із першої сотні байтів і число записів і ..." . "... shx не пов'язує shp і dbf, це робить лише номер запису " . Спочатку ви скажете, що "номер запису" знаходиться в межах .shx. Пізніше ви кажете .shx не пов'язує .shp та .dbf, але це "число запису". Якщо "число запису" пов'язує два цитовані формати, і він є частиною .shx, то чому його не можна сказати .shx зв'язки .shp та .dbf? Мене бентежить ця частина вашої відповіді. Ви можете уточнити? Ткс.
Андре Сільва

2
Номер запису присутній і в, shpі в shx. Він не присутній у dbf, лише неявне зміщення байтів із кінця записів заголовка (40 байтів для таблиці, що включає кількість полів, і 40 додаткових байтів для кожного поля) перевищує розмір запису. Я написав читачів і авторів формфайлів як на "C", так і на Java, і це змінна лічильник циклів програми, яка пов'язує shp/ shxдо dbf. shxЗабезпечує зв'язок рекордного числа, шляхом усунення з перевіркою на цілісність RECNO, на початку shpзапису, більше нічого.
Vince

12

Shx, безумовно, нічого не може показувати на карті, як це можна прочитати зі специфікації https://www.esri.com/library/whitepapers/pdfs/shapefile.pdf .

Ви справді маєте рацію в тому, що відкрити форм-файл можна, вибравши .shx частину за допомогою QGIS 3.0.3, але я не бачу різниці в розташуванні. Я вважаю, що файл файлу все ще відкривається тим самим шляхом, і результат той самий. Якщо ви можете скласти тестовий випадок для відтворення випусків різного розміщення геометрій, будь ласка, створіть білет QGIS про цю проблему.

Якщо ви видалите .shp частину, ви побачите, що QGIS не відкривається .shx самостійно.


Моя помилка, я знову перевірив ті самі файли, і це справді невідповідна проекція. Коли я їх вирівняв, версії shx і shp одного шару вишикувалися і були однаковими, як очікувалося. Цікаво, що QGIS дозволяє завантажувати і.
Меггі

2

.shx- індекс для .shpфайлу.

Вам потрібно обом мати можливість відкрити .shpфайл. Якщо ви відкриєте .shxфайл у QGIS, він відкриє .shpфайл. Якщо вони вимкнено, виникає проблема прогнозування.

ShapeFile потребує трьох компонентів:

  1. .shp - зберігає геометрію
  2. .shx - зберігає індекс
  3. .dbf - зберігає атрибути

.prjФайл, як правило , рекомендується, яка зберігає інформацію про проекції. Можуть бути й інші файли, пов’язані з ShapeFile, але вони абсолютно не потрібні.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.