Identifizieren Sie beschädigte Shapefiles oder Raster über Python oder ArcObjects

9

Ich bin an einer Möglichkeit interessiert, Raster (z. B. ESRI GRID-Format) oder Shapefiles zu identifizieren, die beschädigt sind und deren Verwendung in einem Analysetool verhindern würde. Ich habe eine große Anzahl in einem strukturierten Ordnerbaum und möchte in der Lage sein, Skripte für den Dateibaum zu erstellen und Raster zu identifizieren, die beispielsweise beim Anzeigen in ArcCatalog nicht angezeigt werden können und würde dementsprechend jedes Geoverarbeitungswerkzeug zum Scheitern bringen. Gleiches Angebot für Shapefiles oder Feature-Classes.

Ich würde es irgendwie vorziehen, dies in Python zu tun (und ich wäre nicht gegen ein Nicht-ESRI-Python-Modul oder ein anderes), aber ich bin offen für alles. Ich denke, Sie könnten etwas zusammen hacken, indem Sie versuchen, die Geometrie zu validieren oder einen Aspekt des Dateidesigns zu nutzen, aber was wäre am sinnvollsten? Oder gibt es eine andere Möglichkeit, die speziell für diesen Zweck entwickelt wurde?

Mein Ziel ist es, nur einen einfachen Qualitätskontrollmechanismus für einige große einwöchige Vorverarbeitungsdateien ausführen zu können, um sicherzustellen, dass alle einwandfrei sind, bevor ich mit der eigentlichen Stapelverarbeitung beginne.

Danke, Tom

türkischgold
quelle

Antworten:

1

Verwenden Sie für die Raster einfach ein einfaches Skript, um die Eigenschaften (Zellengröße, Ausdehnung usw.) aller Raster auszugeben, die Sie verwenden möchten. Wenn das Abrufen der Eigenschaften fehlschlägt, schlägt auch alles Fortgeschrittene fehl.

Außerdem können Sie die Rastereigenschaften in eine Protokolldatei schreiben und überprüfen, ob die Extents, Zellengrößen, Werttypen usw. Ihren Erwartungen entsprechen.

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

Auch Ihre Erwähnung der einwöchigen Verarbeitung ist etwas besorgniserregend. Es ist sehr wahrscheinlich, dass Sie die Prozesse erneut ausführen müssen. Es gibt also eine Möglichkeit, sie in mehrere kleinere Zwischenschritte aufzuteilen. Auf diese Weise können Sie die Ergebnisse in jeder Phase überprüfen. Wenn etwas nicht stimmt, müssen Sie nur den vorherigen Schritt und nicht den Anfang fortsetzen.

geographika
quelle
Vielen Dank für den Vorschlag, Rastereigenschaften zu erhalten. Ich dachte, die Verwendung einiger Merkmale des Datentyps wäre wahrscheinlich meine beste Wahl, da mir keine Validierungswerkzeuge bekannt sind. In Bezug auf die einwöchige Verarbeitung ist die Zeitdauer dort kein Problem, da nur die Anzahl der Raster und ihre Größe vorhanden sind. Ich habe ein robustes Python-Programm, das damit umgeht, aber ein Teil des Problems ist, dass sich die Daten in unserem Netzwerk befinden, sodass ich etwas an Geschwindigkeit verliere, da sie nicht lokal sind. Ich habe tatsächlich Funktionen eingebaut, um diejenigen, die bereits vorhanden sind, aus der Verarbeitungsliste zu entfernen wurde automatisch ausgeführt
türkischgold
Außerdem werde ich wahrscheinlich nur etwas Ähnliches für Shapefiles tun, indem ich nur die Geometrie überprüfe (@Craig Williams). Die Absicht meines Beitrags war es zu untersuchen, ob es da draußen etwas gibt, wie ein Nicht-ESRI-Python-Modul oder ein anderes ... aber die Aussichten sind aufgrund dieser Antworten nicht so gut.
Turkgold
@turkishgold - Sie können die gleiche Technik zum Lesen von Shapefiles und Rastern mit GDAL und den Python-Bindungen verwenden. gdal.org/gdal_tutorial.html
geographika
2

Verwenden Sie für die Vektordatenquellen Geometrie prüfen / Geometrie reparieren im Tandem.

Craig Williams
quelle
1

Was Vektor-SHP-Dateien betrifft, würde ich so etwas wie die Formdateiprüfung für Arcscripts verwenden.
Formdatei-Prüfer

Für Raster Der häufigste Fehler bei der Geoverarbeitung ist ein ungültiger Feldtyp.
Möglicherweise möchten Sie die Feldtypen in Ihren Geoverarbeitungsmodulen ermitteln und anschließend die Feldtypen in Ihren Rastern überprüfen.
Ich denke, andere Arten von Fehlern oder andere Dinge, die berücksichtigt werden müssen, sind möglicherweise die indizierte Palette oder die Farbtiefe, die für eine bestimmte Verarbeitung nicht unterstützt wird.

Eigentlich scheint es etwas seltener zu sein, korrupt zu sein. Aber sicher kann es passieren. Hier könnten einige Dinge zu suchen sein.
Esri-Foren
beschädigt dted
Ich denke, dass diese Fälle meistens darin bestehen könnten, dass die Verwendung einer anderen Software zum Öffnen der Datei und zum Zurückspeichern in das richtige Format / die richtigen Parameter viele dieser Probleme behebt.

Brad Nesom
quelle