J'ai un de mes techniciens SIG qui numérise certaines lignes dans QGIS au format shapefile. Je ne sais pas comment il l'a fait (et lui non plus), mais le fichier de formes est devenu corrompu. Cela créait des lignes aléatoires ou certaines des lignes qu'il avait créées disparaîtraient simplement. Je suis entré dans ArcCatalogue pour voir à quoi cela ressemblait dans ArcGIS et voici ce que j'ai vu:
Remarquez l'icône de point d'interrogation où je devrais voir une icône de ligne de fichier de formes. Évidemment, ArcCatalogue ne peut pas lire ce fichier. En outre, un deuxième fichier dbf semblait avoir été créé avec le «_packed» attaché à la fin. Lorsque je regarde le fichier de formes à l'aide de l'explorateur Windows, je vois qu'il existe déjà un fichier .dbf pour le fichier de formes 'M3_PRE_SMU_lines_10Apr13_SMC.dbf', donc je ne sais pas d'où provient ce fichier de formes _packed et je n'arrive pas à trouver quoi que ce soit en ligne qui en parle.
J'ai essayé d'ajouter ce fichier dans ArcMap et j'ai reçu l'erreur suivante:
L'erreur est assez explicite ... le nombre de formes ne correspond pas au nombre d'enregistrements. Je ne sais tout simplement pas pourquoi cela se produit. Il ne semble pas y avoir quoi que ce soit en ligne qui explique comment cela se produit dans QGIS, mais je vois quelques outils de réparation. En fait, j'ai réparé cela moi-même en ouvrant simplement QGIS, en ajoutant la couche, puis en cliquant avec le bouton droit sur la couche et en 'enregistrant sous' un autre fichier de formes. J'ai donc trouvé un moyen de contourner le problème, mais j'espère trouver une solution qui empêchera cela de se produire en premier lieu. Merci, Mike
Réponses:
Explication
OGR (partie de GDAL) est la bibliothèque utilisée par QGIS pour accéder aux fichiers de formes. Lorsque OGR supprime des fonctionnalités, il ne les supprime pas immédiatement, mais marque simplement les fonctionnalités comme supprimées. De temps en temps, une commande appelée repack est exécutée, ce qui crée un nouveau fichier avec le suffixe _repack et copie toutes les fonctionnalités qui ne sont pas marquées comme supprimées dans ce nouveau fichier. Une fois terminé, le .dbf d'origine est remplacé par le _repack.dbf. Il fait ensuite la même chose pour le fichier de formes: en créer une nouvelle (_packed.shp), copier toutes les fonctionnalités non supprimées et éventuellement remplacer le .shp d'origine.
Il semble quelque part dans ce processus, quelque chose a échoué (peut-être un crash?).
Dans ce processus, les identifiants des fonctionnalités changent, donc je suppose que le shp (géométrie) que vous avez et le dbf (table d'attributs) utilisent des identifiants de fonctionnalités différents pour les mêmes fonctionnalités, ce qui conduit au comportement étrange que vous rencontrez. Il semble que l'un des deux fichiers contienne (une partie de) les fonctionnalités supprimées alors que l'autre n'en contient pas.
Comment y faire face
Mise à jour, novembre 2016: GDAL 2.2 est livré avec une fonctionnalité intégrée pour appeler automatiquement le reconditionnement chaque fois que le fichier est écrit sur le disque. Donc, avant de faire quoi que ce soit d'autre: vérifiez la version GDAL dans la boîte de dialogue QGIS à propos et mettez à jour votre version GDAL (souvent livrée avec QGIS) vers une version récente.
Il n'y a probablement pas grand-chose à faire à part faire des sauvegardes régulières afin de ne pas perdre plus de données que vous ne pouvez en gérer (vous le faites quand même, n'est-ce pas? Right). Et si vous trouvez un moyen de reproduire cela (mieux avec un exemple de jeu de données), créez un rapport de bogue .
Si vous rencontrez à nouveau ce problème, vous pouvez également essayer de créer un index spatial sur le fichier de formes. Dans ce processus, QGIS appellera à nouveau repack sur le fichier de formes et pourrait "réparer" le shp / dbf. Mais ce n'est qu'une supposition non vérifiée.
Comme mentionné par @rhm et dans les commentaires, il peut également être utile de renommer le fichier {xyz} _packed. {Ext} en {xyz}. {Ext} . Si le fichier compressé a déjà été complètement écrit et que ce n'est que le changement de nom qui a échoué, il est absolument valide de faire cette étape manuellement. Cependant, si le fichier _packed n'a pas été complètement écrit, il se peut que des informations manquent dans certaines parties de vos fonctionnalités. Donc, avant d'essayer, faites des copies de sauvegarde de tous les fichiers impliqués.
Informations générales sur l'appel du reconditionnement
Entre QGIS 2.0 et 2.8, le reconditionnement a été appelé chaque fois que la couche était déchargée (quitter QGIS, charger un projet différent ...). Si une entité a été supprimée ou une géométrie modifiée, des fichiers .shp et .dbf avec des enregistrements marqués comme supprimés étaient présents.
À partir de QGIS 2.10, le reconditionnement est appelé chaque fois que la couche est enregistrée après une opération qui a le potentiel d'ajouter l'indicateur supprimé aux enregistrements. Par conséquent, les fichiers doivent désormais toujours être dans un état sain pour être traités par d'autres applications.
la source
Cela m'est arrivé dans QGIS. J'ai réussi à résoudre le problème en supprimant simplement '_packed' du nom de fichier, comme quelqu'un l'a suggéré dans la section des commentaires ci-dessus.
la source
C'est peut-être un autre problème d'un fichier d'index .shx cassé. Le type de géométrie doit être stocké dans l'en-tête .shp et .shx. S'ils ne correspondent pas, le logiciel générera une erreur.
Il semble que QGIS ne soit pas très strict sur les fichiers d'index cassés, et peut le recréer avec
Save As...
, tandis qu'ARCGIS insiste sur un fichier d'index correct et crée un dbf (table d'attributs) compressé pour les fonctionnalités qui pourraient être trouvées via les parties correctes de la fichier d'index, ou peut-être sans utiliser l'index.la source
La réapparition des entités supprimées et / ou le comportement étrange des fichiers de formes dont les entités ont été supprimées dans QGIS est un bogue connu, consultez ce rapport de bogue 11007 et cette question connexe - Les polygones supprimés semblent revenir aux anciennes versions . En plus d'ArcGIS rencontrant des problèmes avec de tels fichiers de formes, lorsqu'ils sont enregistrés dans QGIS en tant que fichiers MapInfo TAB, ils provoquent ensuite le blocage du plug-in MapInfo RouteFinder, sauf si les tables sont d'abord compressées dans MapInfo avant de charger RouteFinder. Échec de l'exécution de Universal Translator pour convertir ces fichiers de formes corrompus dans MapInfo.
Comme vous l'avez trouvé, le problème peut être résolu en effectuant une «sauvegarde sous» dans QGIS.
la source