Correction d'un fichier de formes corrompu?


10

J'ai un fichier de formes sur lequel je travaillais dans ArcGIS Desktop 9.3 qui est corrompu d'une manière ou d'une autre et cela me donne l'erreur "Le nombre de formes ne correspond pas au nombre d'enregistrements de table.". Ce que je voudrais, c'est récupérer ce fichier de formes car il a beaucoup de modifications que les autres révisions du fichier n'ont pas.

Plus tôt, j'ai récupéré de cette erreur en utilisant ogr2gui mais l'outil se bloque maintenant. J'ai même essayé la version en ligne de commande ogr2ogr mais toujours pas de chance. Ce script, Shapefile Repair Tool du site Web ArcScripts n'a pas aidé non plus.

Des idées? (sauf que j'arrête d'utiliser des fichiers de formes)


Voici la sortie d'ogr2ogr (basée sur une suggestion dans les réponses): entrez la description de l'image ici


1
Il est presque sûrement devenu corrompu parce que sa table d'attributs (un fichier .dbf) était modifiée séparément, créant une incohérence entre les enregistrements de forme et les enregistrements d'attribut. Même si vous parvenez à "corriger" le fichier de formes, assurez-vous de vérifier soigneusement que les bons attributs sont associés aux formes!
whuber

Les messages d'erreur en révèlent beaucoup. Ces nombres de points et de parties indiquent des valeurs comprises entre 2 ^ 30 et 2 ^ 32 (non signé), suggérant fortement un écrasement physique étendu des en-têtes d'enregistrement dans le fichier .shp lui-même (car ils ne seraient jamais des nombres valides). Il est donc très probable que les données de ces enregistrements aient également été écrasées. En bref, vos données de forme n'existent probablement plus, du moins dans de nombreuses parties du fichier .shp, et ne sont donc pas récupérables par le logiciel. Restaurez à partir de vos sauvegardes et commencez à partir de là.
whuber

1
@whuber. Merci. Bien sûr, c'est le cas. Chaque fichier récupéré à partir de ce fichier de formes corrompu contient bien moins d'enregistrements que ma sauvegarde. Je suis depuis revenu à la sauvegarde.
Erick

Recommandation de Brad Nesoms shapecheck.exe, correction de mon fichier de forme corrompu pour la première fois! excellent outil

Réponses:


8

Une option, avec la perte des fonctionnalités corrompues, pourrait être d'utiliser ogr2ogr pour convertir votre fichier de formes en un autre fichier de formes, avec l'option -skipfailures:

ogr2ogr -skipfailures fixed_shapefile.shp corrupted_shapefile.shp

pour plus de détails, consultez cet article du blog PerryGeo:

http://www.perrygeo.net/wordpress/?p=132


Exécutez la commande (y compris -f "ESRI Shapefile" que vous avez omis). Vous avez un rapport d'erreur sur le fichier. [Impossible de publier une capture d'écran ici]. Cela a à voir avec les formes coupables, je suppose. Le format est le suivant: ERREUR 1: fichier .shp corrompu: forme 2352, nPoints = 7, nEntitySize = 88.
Erick

vous pouvez supprimer l'option -f en toute sécurité: le fichier de formes est le format de sortie par défaut. Il serait intéressant, pour de plus amples recherches, si vous pouviez joindre une copie du shapefile
capooti

Dossier de recherche: j'aurais volontiers transmis le fichier mais malheureusement les données sont protégées par copyright. Merci quand même.
Erick

@Erick, si vous mettez la capture d'écran sur imgur.com, je peux la poster ici (si elle est toujours pertinente)
djq

5

J'utilise celui-ci. Cela a toujours résolu ce problème pour moi.

shapecheck.exe


Je suis d'accord avec Brad, ShapeCheck fonctionne - les correctifs autonomes corrigent les fichiers de forme - tronqués si nécessaire.
Mapperz

@Mapperz. Exécuté l'outil, avec plusieurs tronçons. Pourrait en effet ouvrir le fichier de formes par la suite! Mais il contient maintenant moins d'enregistrements que la sauvegarde sur laquelle je dois revenir. Si je n'avais pas de sauvegarde, une récupération comme celle-ci l'aurait été. (Outil d'archivage pour éventualité) Merci.
Erick


4

La réponse officielle d'Esri contient un certain nombre de conseils, mais vous indique l' utilitaire de réparation shp qui m'a évité d'être renvoyé plusieurs fois.

Peu d'autres dont j'ai entendu parler, mais je ne peux pas dire que j'ai essayé:


Merci Simon. Mais mon problème majeur est que je ne peux pas ouvrir le fichier pour commencer, donc la plupart des suggestions ne fonctionneront pas. Je viens de tout essayer sur le premier conseil que vous avez suggéré. Rien n'a fonctionné.
Erick

2

Ok, voici une autre astuce à ajouter à la pile de bonnes réponses ci-dessus.

Celui-ci est un peu plus brutal, la plupart du temps cela aide, parfois non, et bien qu'il ne s'agisse probablement que d'un premier pas vers la résolution du problème (plutôt que d'une solution en soi, ce qui n'est souvent pas le cas), il peut aider vous amène là où vous pouvez ouvrir le fichier de formes. La plupart des cas, vous devrez toujours effectuer plus de réparations manuelles dans ArcMap après l'ouverture du fichier de formes (fonctionnalités corrompues?, Attributs manquants? Attributs mal alignés? Etc.)

  1. Copiez le fichier de formes dans un nouveau dossier vide. N'emportez que le SHP, le SHX et le DBF avec vous. Laissez tous les autres fichiers derrière, et oui cela inclut le prj.

  2. (Windows): cliquez avec le bouton droit sur le fichier SHX et sélectionnez "Propriétés" pour ouvrir les propriétés du fichier.

  3. Dans l'onglet "Général", examinez la taille de fichier EXACT de ce fichier SHX jusqu'à l'octet. Regardez la propriété "Taille" et non la propriété "Taille sur le disque".

  4. Prenez cette taille de fichier en octets et soustrayez 100 octets (l'en-tête). Du reste, divisez par 8 (la taille de chaque "mot"). Le résultat vous donne le nombre d'entités de forme à l'intérieur de la partie SHP du fichier de formes.

  5. Ouvrez le DBF dans certains logiciels qui vous permettront de modifier le DBF et de le sauvegarder en tant que DBF. Ajoutez ou supprimez des enregistrements afin que les lignes du DBF correspondent au nombre d'entités de forme dans le SHP que vous avez calculé à l'étape 4. (Si vous utilisez une ancienne version d'Excel, gardez à l'esprit que la ligne n ° 1 contient les noms des champs, donc si vous recherchez 1 000 enregistrements, cela finira par être 1 001 lignes dans la feuille depuis la première ligne de données est la ligne n ° 2.) Si, pour faire correspondre le nombre de lignes, vous deviez supprimer des lignes et que ces lignes contenaient de vraies données que vous devez conserver, enregistrez-les simplement dans un nouveau DBF, et vous pouvez les lire à nouveau. plus tard, une fois que vous êtes arrivé au point où tout s'ouvre à nouveau dans ArcMap.

  6. Une fois que vous avez utilisé les étapes ci-dessus pour faire correspondre le nombre d'entités du SHP avec le nombre de lignes du DBF, essayez de rouvrir le fichier de formes dans ArcMap.


1

Vous pouvez essayer de compter le nombre de formes dans vos fichiers .shp avec ogrinfo (pas sûr que cela fonctionnera):

 ogrinfo -sql 'select count(*) from myshp' myshp.shp

Si vous êtes en mesure de compter le nombre de formes, vous pouvez alors ouvrir votre fichier .dbf avec open office pour le terminer (ou supprimer des lignes supplémentaires)


Merci pour la suggestion, mais je ne suis pas exactement un pro des outils GDAL. ou 'très' alphabète sql. Outil de course essayé avec les paramètres que vous avez fournis, mais erreur liée à l'outil. Msgstr "Impossible d 'ouvrir le nombre de sources de données (*)".
Erick

pourriez-vous copier / coller la ligne de commande?
simo

Je peux mais toujours la même erreur. Mais la solution de @capooti semble avoir produit quelques résultats / formes coupables identifiées.
Erick

1

J'ai eu de la chance en supprimant les fichiers d'index (.idx et .shx), que votre SIG régénérera une fois reconnecté.


J'ai essayé sans succès. Merci d'avoir suggéré.
Erick

0

Si votre fichier de formes était une couche de points et avait des valeurs de champ XY, vous pouvez exécuter l'outil Créer une couche d'événements XY pour créer une autre couche à partir du fichier de formes corrompu dbf.


C'est un fichier de routes (polylignes). Mais gardez votre indice à l'esprit pour un scénario de points. Merci.
Erick
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.