Identifica shapefile o raster corrotti tramite Python o ArcObjects


9

Sono interessato a un modo per identificare i raster (ad esempio, il formato ESRI GRID) o gli shapefile che sono corrotti e che impedirebbero loro di essere utilizzati in uno strumento di analisi. Ho un gran numero nell'albero delle cartelle strutturate e vorrei essere in grado di eseguire script di qualcosa che percorrerà l'albero dei file e di essere in grado di identificare i raster che, ad esempio, se si tenta di visualizzarlo in ArcCatalog, non consentirebbe che venga visualizzato e di conseguenza farebbe fallire qualsiasi strumento di geoprocessing. Stesso affare per shapefile o classi di feature.

La mia preferenza sarebbe in qualche modo fare questo in Python (e non sarei contrario a un modulo Python non ESRI o altro) ma sono aperto a tutto. Immagino che potresti hackerare qualcosa insieme provando a convalidare la geometria o capitalizzando alcuni aspetti della progettazione dei file, ma cosa avrebbe più senso? O c'è un altro modo per farlo che è specificamente progettato per tale scopo?

Il mio obiettivo è quello di essere in grado di eseguire un semplice meccanismo di controllo qualità su alcuni file di preelaborazione di una settimana per assicurarmi che siano tutti sani prima di iniziare a eseguire l'elaborazione in batch.

grazie Tom

Risposte:


1

Per i raster, perché non utilizzare semplicemente un semplice script per generare le proprietà (dimensione della cella, estensione ecc.) Di tutti i raster che si intende utilizzare. Se ottenere le proprietà fallisce, fallirà anche qualcosa di più avanzato.

Inoltre, puoi scrivere le proprietà raster in un file di registro e verificare che le estensioni, le dimensioni delle celle, i tipi di valore, ecc. Siano tutto ciò che ti aspetti.

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()

Anche la tua menzione dell'elaborazione della settimana è alquanto preoccupante. È molto probabile che dovrai rieseguire i processi, quindi esiste un modo per suddividerlo in più passaggi intermedi più piccoli. In questo modo è possibile controllare i risultati in ogni fase e, se qualcosa non è corretto, è necessario riprendere solo dal passaggio precedente anziché dall'inizio.


grazie per il suggerimento su come ottenere proprietà raster, ho pensato che utilizzare alcune caratteristiche del tipo di dati sarebbe probabilmente la mia scommessa migliore dato che non c'erano strumenti di validazione di cui ero a conoscenza. Per quanto riguarda l'elaborazione che dura una settimana, non vi è alcun problema in quanto la durata è dovuta solo al numero di raster e alle loro dimensioni. Ho un robusto programma Python che lo gestisce, ma parte del problema è che i dati sono sulla nostra rete, quindi sto perdendo un po 'di velocità poiché non sono locali. In realtà ho incorporato funzionalità per rimuovere dall'elenco di elaborazione quelli che hanno già stato eseguito automaticamente
turkishgold

Inoltre, probabilmente farò qualcosa di simile per gli shapefile in termini di controllo della geometria (@Craig Williams). L'intento del mio post era di esplorare se c'è qualcosa là fuori come un modulo Python non ESRI o altro ... ma le prospettive non sono così buone in base a queste risposte.
turkishgold

@turkishgold - Potresti usare la stessa tecnica di lettura di shapefile e raster usando GDAL e gli attacchi Python gdal.org/gdal_tutorial.html
geographika

2

Per le origini dati vettoriali, utilizzare Controlla geometria / Ripara geometria in tandem.


1

Per quanto riguarda i file shp vettoriali userei qualcosa come il controllo dei file di forma su arcript.
controllo file di forma

Per raster L'errore più comune durante il geoprocessing è un tipo di campo non valido.
Potresti considerare di scoprire i tipi di campo nei tuoi moduli di geoprocessing e quindi eseguire il controllo sui tipi di campo nei tuoi raster.
Immagino che altri tipi di errori o alcune altre cose da considerare potrebbero essere la pallette da indicizzare o l'intensità del colore non supportata per una particolare elaborazione.

In realtà essere un po 'coraggioso sembra un po' più raro. Ma sicuro che può succedere. Ecco alcune cose da cercare.
ESRI forum
corrotti DTED
penso che la maggior parte del tempo questi casi potrebbe essere che l'utilizzo di un altro software per aprire il file e salvarlo di nuovo fuori al formato corretto / paramters corregge un sacco di questi problemi.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.