Ich suche nach einer ausführlicheren Erklärung der Unterschiede in shp- und shx-Dateien ohne Erfolg. Ich meine jenseits von 'shp enthält Geometrie - shx enthält einen Index der Geometrie'.
Der Grund, den ich frage, ist, dass ich während meiner Arbeit in QGIS in letzter Zeit zwei Beobachtungen gemacht habe, die zu Fragen in meinem Kopf über die genauen Unterschiede in diesen Dateierweiterungen geführt haben:
- QGIS kann sowohl shx als auch shp öffnen und anzeigen, und jede Datei scheint in ihrer Ausgabe (Anzeige) mehr oder weniger identisch zu sein.
- aber nicht genau so - mir ist aufgefallen, dass die passenden shx / shp-Dateien manchmal im Verhältnis zueinander etwas "aus dem Lot" angezeigt werden. Es scheint kein Projektionsproblem zu sein, sie zeichnen einfach nicht genau an der gleichen Stelle.
Diese Beobachtungen haben mich neugierig gemacht, warum diese Unterschiede in der Anzeige bestehen und warum QGIS das shx auf die gleiche Weise wie das shp öffnen und bedienen kann, obwohl ich vorher verstanden habe, dass das shp die 'Master'-Datei ist, wenn Sie so wollen, aber erfordert, dass .dbf und .shx als einzelne, ganze Entität korrekt funktionieren.
quelle
Antworten:
Die endgültige Referenz zum Shapefile-Format ist die technische Beschreibung des ESRI-Shapefiles .
Es ist irreführend, das
shx
als "Index" zu bezeichnen. Stattdessen handelt es sich um die Offsetdatei für den direkten Zugriff. Es gibt keine Daten in dershx
, nur einen Klon der ersten hundert Bytes und der Datensatznummer und einen Versatz zum Startbyte dieses Datensatzes in dershp
. Der einzige Ort für Attribute ist derdbf
(der eigenständig ist - trotz "Wissen" im Gegenteil, dasshx
bindet das nichtshp
unddbf
nur die Datensatznummer macht das).Es ist möglich , Shape - Dateien zu haben „Lücken“ in dem
shp
den die machenshx
unverzichtbar, aber in der Praxis Esri Tools werden die gesamte neu zu schreibenshp
undshx
so , dass jede Lücke durch Bearbeiten von Datensatz erstellt wird entfernt. In den meisten Fällen ist es möglich, denshx
Inhalt wiederherzustellen, wenn er verloren geht. das Gleiche gilt nicht für dasshp
oderdbf
.Die Benennung von
shp
undshx
ist ein Artefakt desVFILE
Direktzugriffsmoduls mit variabler Breite des PrImeOS-Betriebssystems, das zuerst von Esri auf Unix, VAX / VMS, Data General und IBM und dann auf Microsoft Windows portiert wurde. Dassbn
/sbx
räumliche Indexpaar hat dieselbe Namenskonvention (obwohl diese nicht in der Shapefile-Spezifikation dokumentiert sind). In der ursprünglichenVFILE
FORTRAN-Bibliothek wurde nur die Basisdatei benannt, und die Offsetdatei mit einemx
Terminalzeichen wurde gerade bei der Dateierstellung angezeigt.quelle
The index file (.shx) contains a 100-byte header followed by 8-byte, fixed-length records. Figure 4 illustrates the index file organization.
Logischerweise ist es analog zu Datenbankindizesa data structure that improves the speed of data retrieval operations
.shx
ist absolut kein räumlicher Index.shx
tatsächlich verlangsamt seriellen Zugriff (mehr I / O), aber es hat einen direkten Zugang machen möglich , was eine Verbesserung in Betracht gezogen werden könnte.shp
und vorhandenshx
. Es ist nicht imdbf
nur dem impliziten Byte-Offset vom Ende der Header-Datensätze (40 Bytes für die Tabelle, die eine Feldanzahl enthält, und 40 zusätzlichen Bytes für jedes Feld) mal der Datensatzgröße vorhanden. Ich habe Shapefile-Leser und -Schreiber sowohl in 'C' als auch in Java geschrieben, und es ist die Schleifenzählervariable des Programms, die dasshp
/shx
mit dem verknüpftdbf
. Das ermöglichtshx
die Verknüpfung der Datensatznummer durch Versatz mit einer Recno-Integritätsprüfung mit dem Beginn desshp
Datensatzes, nicht mehr.Shx hat auf einer Karte sicherlich nichts zu zeigen, wie Sie der Spezifikation https://www.esri.com/library/whitepapers/pdfs/shapefile.pdf entnehmen können .
Sie haben in der Tat Recht, dass es möglich ist, Shapefile zu öffnen, indem Sie den .shx-Teil mit QGIS 3.0.3 auswählen, aber ich kann keinen Unterschied in der Position feststellen. Ich glaube, dass Shapefile immer noch auf demselben Weg geöffnet wird und das Ergebnis dasselbe ist. Wenn Sie einen Testfall für die Reproduktion des Problems der unterschiedlichen Platzierung der Geometrien erstellen können, erstellen Sie bitte ein QGIS-Ticket zu diesem Problem.
Wenn Sie den .shp-Teil löschen, sehen Sie, dass QGIS .shx nicht alleine öffnet.
quelle
.shx
ist der Index für eine.shp
Datei.Sie benötigen beide, um die
.shp
Datei öffnen zu können . Wenn Sie eine.shx
Datei in QGIS öffnen , wird die.shp
Datei geöffnet . Wenn sie ausgeschaltet sind, liegt ein Projektionsproblem vor.Ein ShapeFile benötigt drei Komponenten:
.shp
- speichert die Geometrie.shx
- speichert den Index.dbf
- speichert die AttributeIn der
.prj
Regel wird eine Datei empfohlen, in der die Projektionsinformationen gespeichert sind. Es können andere Dateien mit einer ShapeFile verknüpft sein, diese werden jedoch nicht unbedingt benötigt.quelle