Je cherche une explication plus approfondie des différences dans les fichiers shp et shx en vain. Je veux dire au-delà du «shp contient la géométrie - shx contient un index de la géométrie».
La raison pour laquelle je pose la question est que, tout en travaillant récemment dans QGIS, j'ai fait deux observations qui m'ont amené à me poser des questions sur les différences exactes dans ces extensions de fichier:
- QGIS peut ouvrir et afficher à la fois shx et shp, et chaque fichier semble être plus ou moins identique dans leur sortie (affichage),
- mais pas exactement - j'ai remarqué que parfois les fichiers shx / shp correspondants s'affichent légèrement «décalés» les uns par rapport aux autres. Cela ne semble pas être un problème de projection, ils ne dessinent tout simplement pas exactement au même endroit.
Ces observations m'ont rendu curieux de savoir pourquoi ces différences d'affichage existent et pourquoi QGIS peut ouvrir et utiliser le shx de la même manière que le shp, alors qu'auparavant, je croyais que le shp est le fichier `` maître '' si vous voulez, mais nécessite .dbf et .shx pour fonctionner correctement comme une seule entité entière.
la source
Réponses:
La référence définitive sur le format de fichier de formes est la description technique du fichier de formes ESRI .
Il est trompeur de décrire le
shx
comme étant un "index". Il s'agit plutôt du fichier de décalage d'accès direct. Il n'y a pas de données dans leshx
, seulement un clone des cent premiers octets et du numéro d'enregistrement et décalé vers l'octet de départ de cet enregistrement dans leshp
. Le seul emplacement pour les attributs est ledbf
(qui est autonome - malgré la «connaissance» contraire, leshx
ne lie pas leshp
etdbf
, seul le numéro d'enregistrement le fait).Il est possible que les fichiers de formes contiennent des «lacunes»
shp
qui rendent l'shx
indispensable, mais dans la pratique, les outils Esri réécrivent l'intégralitéshp
et deshx
sorte que toute lacune créée par la modification des enregistrements soit supprimée. Dans la plupart des conditions, il est possible de récupérer leshx
contenu s'il disparaît; on ne peut pas en dire autant dushp
oudbf
.La dénomination de
shp
etshx
est un artefact duVFILE
module d'accès direct à largeur variable du système d'exploitation PrImeOS, d'abord porté par Esri vers Unix, VAX / VMS, Data General et IBM, puis vers Microsoft Windows. La pairesbn
/sbx
spatial index partage la même convention de dénomination (bien que celles-ci ne soient pas documentées dans la spécification du fichier de formes). Dans laVFILE
bibliothèque FORTRAN d' origine , seul le fichier de base était nommé et le fichier de décalage avec unx
caractère terminal venait d'apparaître lors de la création du fichier.la source
The index file (.shx) contains a 100-byte header followed by 8-byte, fixed-length records. Figure 4 illustrates the index file organization.
Logiquement, c'est analogue aux index de base de donnéesa data structure that improves the speed of data retrieval operations
.shx
n'est absolument pas un indice spatial.shx
accès série ralentit en fait (plus d'E / S), mais il rend possible l' accès direct , ce qui pourrait être considéré comme une amélioration.shp
etshx
. Il n'est pas présent dans ledbf
, seul l'octet implicite décalé de la fin des enregistrements d'en-tête (40 octets pour la table, qui comprend un décompte de champs, et 40 octets supplémentaires pour chaque champ) fois la taille de l'enregistrement. J'ai écrit des lecteurs et des écrivains de fichiers de formes en 'C' et en Java, et c'est la variable de compteur de boucle du programme qui relie leshp
/shx
audbf
. Leshx
fournit une liaison du numéro d'enregistrement, par décalage avec une vérification d'intégrité Recno, au début de l'shp
enregistrement, rien de plus.Shx n'a certainement rien à afficher sur une carte seule, comme vous pouvez le lire dans la spécification https://www.esri.com/library/whitepapers/pdfs/shapefile.pdf .
Vous avez en effet raison en ce qu'il est possible d'ouvrir le fichier de formes en sélectionnant la partie .shx avec QGIS 3.0.3 mais je ne vois aucune différence sur l'emplacement. Je crois que le fichier de formes est toujours ouvert par le même chemin et le résultat est le même. Si vous pouvez créer un scénario de test pour reproduire le problème de placement différent des géométries, veuillez créer un ticket QGIS sur le problème.
Si vous supprimez la partie .shp, vous verrez que QGIS n'ouvre pas seul .shx.
la source
.shx
est l'index d'un.shp
fichier.Vous avez besoin des deux pour pouvoir ouvrir le
.shp
fichier. Si vous ouvrez un.shx
fichier dans QGIS, il ouvre le.shp
fichier. S'ils sont éteints, il y a un problème de projection.Un ShapeFile a besoin de trois composants:
.shp
- stocke la géométrie.shx
- stocke l'index.dbf
- stocke les attributsUn
.prj
fichier est généralement recommandé, qui stocke les informations de projection. Il peut y avoir d'autres fichiers associés à un ShapeFile, mais ceux-ci ne sont pas absolument nécessaires.la source