Identifiez les fichiers de formes ou rasters corrompus via Python ou ArcObjects

9

Je suis intéressé par un moyen d'identifier les rasters (par exemple, le format ESRI GRID) ou les fichiers de formes qui sont corrompus et qui empêcheraient leur utilisation dans un outil d'analyse. J'ai un grand nombre dans l'arborescence des dossiers structurés et je voudrais pouvoir écrire quelque chose qui parcourra l'arborescence des fichiers et pourra identifier les rasters qui, par exemple, si vous avez essayé de le visualiser dans ArcCatalog, il ne permettrait pas qu'il soit affiché et par conséquent, tout outil de géotraitement échouerait. Même chose pour les fichiers de formes ou les classes d'entités.

Ma préférence serait en quelque sorte de le faire en Python (et je ne serais pas opposé à un module python non ESRI ou autre) mais je suis ouvert à tout. Je suppose que vous pourriez pirater quelque chose ensemble en essayant de valider la géométrie ou en capitalisant sur un aspect de la conception du fichier, mais qu'est-ce qui aurait le plus de sens? Ou existe-t-il une autre façon de le faire spécialement conçue à cette fin?

Mon objectif est de pouvoir simplement exécuter un mécanisme de contrôle de la qualité simple sur certains gros fichiers de prétraitement d'une semaine pour m'assurer qu'ils sont tous sains avant de commencer le traitement par lots proprement dit.

merci, Tom

turc
la source

Réponses:

1

Pour les rasters, pourquoi ne pas simplement utiliser un simple script pour afficher les propriétés (taille de cellule, étendue, etc.) de tous les rasters que vous allez utiliser. Si l'obtention des propriétés échoue, tout élément plus avancé échouera également.

De plus, vous pouvez écrire les propriétés du raster dans un fichier journal et vérifier que les étendues, les tailles de cellule, les types de valeurs, etc. sont tout ce que vous attendez.

import arcgisscripting, sys, string, os
gp = arcgisscripting.create()

try:
    # Set local variables
    InRaster = "D:/Data/elevation"
    InPropertyType = "MAXIMUM"

    # Process: GetRasterProperties
    zmax = gp.GetRasterProperties (InRaster, InPropertyType)
    # log these to a file or apply logic here to 
    # make sure values are in the expected ranges


except:
    # Print error message if an error occurs
    # likely to be an invalid raster
    print gp.GetMessages()

De plus, votre mention du traitement d'une semaine est quelque peu inquiétante. Il est très probable que vous deviez réexécuter les processus, il existe donc un moyen de le décomposer en plusieurs étapes intermédiaires plus petites. De cette façon, vous pouvez vérifier les résultats à chaque étape, et si quelque chose est incorrect, il vous suffit de reprendre à partir de l'étape précédente plutôt que du début.

geographika
la source
merci pour la suggestion d'obtenir des propriétés raster, j'ai pensé que l'utilisation de certaines caractéristiques du type de données serait probablement mon meilleur choix étant donné qu'il n'y a pas d'outils de validation que je connaissais. En ce qui concerne le traitement d'une semaine, pas de problème, la durée est uniquement due au nombre de rasters et à leur taille. J'ai un programme python robuste qui le gère, mais une partie du problème est que les données sont sur notre réseau, donc je perds de la vitesse car elles ne sont pas locales.J'ai en fait intégré des fonctionnalités pour supprimer de la liste de traitement celles qui ont déjà été exécuté automatiquement
turkishgold
De plus - je vais probablement faire quelque chose de similaire pour les fichiers de formes en termes de vérification de la géométrie (@Craig Williams). L'intention de mon article était d'explorer s'il y avait quelque chose comme un module Python non ESRI ou autre ... mais des perspectives pas si bonnes sur la base de ces réponses.
turkishgold
@turkishgold - Vous pouvez utiliser la même technique de lecture des fichiers de formes et des rasters à l'aide de GDAL et des liaisons Python gdal.org/gdal_tutorial.html
geographika
2

Pour les sources de données vectorielles, utilisez Vérifier la géométrie / Réparer la géométrie en tandem.

Craig Williams
la source
1

En ce qui concerne les fichiers vectoriels shp, j'utiliserais quelque chose comme le vérificateur de fichiers de forme sur les arcscripts.
vérificateur de fichier de forme

Pour le raster L'erreur la plus courante lors du géotraitement est un type de champ non valide.
Vous pouvez envisager de découvrir les types de champs dans vos modules de géotraitement, puis d'exécuter la vérification des types de champs dans vos rasters.
Je suppose que d'autres types d'erreurs ou d'autres éléments à considérer peuvent être la palette en cours d'indexation ou la profondeur de couleur non prise en charge pour un traitement particulier.

En fait, être corupt semble un peu plus rare. Mais bien sûr, cela peut arriver. Voici peut-être des éléments à rechercher.
esri forums
corrupt dted
Je pense que la plupart du temps, ces cas pourraient être que l'utilisation d'un autre logiciel pour ouvrir le fichier et le sauvegarder au format / paramètres corrects résout beaucoup de ces problèmes.

Brad Nesom
la source