Poszukuję bardziej szczegółowego wyjaśnienia różnic w plikach shp i shx, ale bezskutecznie. Mam na myśli poza „shp zawiera geometrię - shx zawiera indeks geometrii”.
Powodem, dla którego pytam, jest to, że podczas niedawnej pracy w QGIS poczyniłem dwie spostrzeżenia, które doprowadziły do moich pytań dotyczących dokładnych różnic w tych rozmiarach plików:
- QGIS może otwierać i wyświetlać zarówno shx, jak i shp, a każdy plik wydaje się być mniej więcej identyczny pod względem wyników (wyświetlania),
- ale nie do końca tak - zauważyłem, że czasami pasujące pliki shx / shp wyświetlają się nieco „nieprzyzwoicie” względem siebie. Wydaje się, że nie jest to problem z projekcją, po prostu nie rysują się dokładnie w tym samym miejscu.
Te obserwacje zainteresowały mnie, dlaczego istnieją te różnice w wyświetlaniu i dlaczego QGIS może otwierać i obsługiwać shx w taki sam sposób jak shp, kiedy wcześniej rozumiałem, że shp jest plikiem głównym, jeśli chcesz, ale wymaga .dbf i .shx do poprawnego działania jako pojedynczego, całego bytu.
qgis
shapefile
file-formats
Maggie
źródło
źródło
Odpowiedzi:
Ostatecznym odniesieniem do formatu pliku shapefile jest opis techniczny pliku shapefile ESRI .
Opisywanie tego
shx
jako „indeksu” jest mylące . Zamiast tego jest to plik przesunięcia bezpośredniego dostępu. Brak danych wshx
, tylko klon pierwszej setki bajtów i numeru rekordu i przesunięty do bajtu początkowego tego rekordu wshp
. Jedyną lokalizacją dla atrybutów jestdbf
(która jest samodzielna - pomimo „wiedzy” wręcz przeciwnie,shx
nie wiążeshp
idbf
tylko numer rekordu to robi).Możliwe jest, że pliki kształtu mają „luki” w tym,
shp
co czyni jeshx
niezbędnymi, ale w praktyce narzędzia Esri przepisują całośćshp
ishx
usuwają wszelkie luki utworzone przez edycję rekordów. W większości warunków można odzyskaćshx
zawartość, jeśli zaginie; tego samego nie można powiedzieć oshp
lubdbf
.Nazewnictwo
shp
ishx
jest artefaktemVFILE
modułu bezpośredniego dostępu o zmiennej szerokości systemu operacyjnego PrImeOS, najpierw przeniesionego przez Esri do Unix, VAX / VMS, Data General i IBM, a następnie do Microsoft Windows.sbn
/sbx
Przestrzennych akcji pary indeks sama konwencja nazewnictwa (chociaż takie nie są opisane w opisie Shapefile). W oryginalnejVFILE
bibliotece FORTRAN nazwano tylko plik podstawowy, a plik przesunięcia zex
znakiem terminalu pojawił się właśnie podczas tworzenia pliku.źródło
The index file (.shx) contains a 100-byte header followed by 8-byte, fixed-length records. Figure 4 illustrates the index file organization.
Logicznie jest to analogiczne do indeksów baz danycha data structure that improves the speed of data retrieval operations
.shx
absolutnie nie jest to indeks przestrzenny.shx
Faktycznie spowalnia dostęp szeregowy (więcej I / O), ale robi bezpośredni dostęp możliwy , które mogłyby zostać uznane poprawa.shp
ishx
. To nie występuje wdbf
tylko implicite bajt przesunięcie od końca zapisów nagłówków (40 bajtów dla tabeli, która zawiera liczbę pól, a 40 dodatkowych bajtów dla każdego pola) razy większy rekord. Napisałem czytniki i zapisy plików kształtu w „C” i Javie, i jest to zmienna licznika pętli programu, która łączyshp
/shx
zdbf
.shx
Zapewnia powiązanie numeru rekordu, przez przesunięcie z kontroli integralności recNo, do rozpoczęciashp
nagrywania, nic więcej.Shx z pewnością nie ma nic do pokazania na samej mapie, jak można przeczytać w specyfikacji https://www.esri.com/library/whitepapers/pdfs/shapefile.pdf .
Rzeczywiście masz rację, że można otworzyć plik shapefile, wybierając część .shx w QGIS 3.0.3, ale nie widzę żadnej różnicy w lokalizacji. Uważam, że plik kształtu jest nadal otwierany tą samą ścieżką, a wynik jest taki sam. Jeśli możesz zrobić przypadek testowy do odtworzenia problemu innego umiejscowienia geometrii, utwórz zgłoszenie QGIS dotyczące tego problemu.
Jeśli usuniesz część .shp, zobaczysz, że QGIS nie otwiera się tylko .shx.
źródło
.shx
jest indeksem.shp
pliku.Musisz mieć oba te elementy, aby móc otworzyć
.shp
plik. Jeśli otworzysz.shx
plik w QGIS,.shp
plik zostanie otwarty . Jeśli są wyłączone, występuje problem z projekcją.ShapeFile potrzebuje trzech komponentów:
.shp
- przechowuje geometrię.shx
- przechowuje indeks.dbf
- przechowuje atrybuty.prj
Plik jest zwykle zalecane, która przechowuje informacje projekcji. Mogą istnieć inne pliki związane z ShapeFile, ale nie są one absolutnie potrzebne.źródło