9 votos

Identificar shapefiles o rasters corruptos mediante Python o ArcObjects

Estoy interesado en una forma de identificar los rasters (por ejemplo, el formato GRID de ESRI) o los shapefiles que están corruptos y que impedirían su uso en una herramienta de análisis. Tengo un gran número en el árbol de carpetas estructuradas y me gustaría ser capaz de script algo que va a caminar el árbol de archivos y ser capaz de identificar rásteres que, por ejemplo, si se trató de ver en ArcCatalog no permitiría que se muestra y, en consecuencia, haría que cualquier herramienta de geoprocesamiento fallar. Lo mismo ocurre con los shapefiles o las clases de características.

Mi preferencia sería de alguna manera hacer esto en Python (y no me opondría a un módulo de python no ESRI u otro) pero estoy abierto a cualquier cosa. Supongo que se podría piratear algo intentando validar la geometría o aprovechando algún aspecto del diseño del archivo, pero ¿qué tendría más sentido? ¿O hay otra forma de hacerlo que esté específicamente diseñada para tal fin?

Mi objetivo es poder ejecutar un sencillo mecanismo de control de calidad en algunos archivos grandes de preprocesamiento de una semana para asegurarme de que están bien antes de empezar a hacer el procesamiento por lotes propiamente dicho.

gracias, Tom

5voto

Jim Puntos 4057

No hay herramientas para hacer la validación en ArcToolbox. ¿Ha identificado algo dentro de ArcObjects que pueda hacer esto? Sospecho que una solución de Python no funcionará, ya que está vinculada a las herramientas de ArcToolbox, por lo que, a falta de cargar cada archivo en ArcMap, sospecho que no tiene suerte.

2voto

Ryan Guest Puntos 2262

Para las fuentes de datos vectoriales, utilice conjuntamente Comprobar geometría/Reparar geometría.

2voto

Swinders Puntos 1042

Para los rasters, ¿por qué no utilizar simplemente un simple script para obtener las propiedades (tamaño de celda, extensión, etc.) de todos los rásteres que vaya a utilizar. Si la obtención de las propiedades falla, cualquier cosa más avanzada también fallará.

Además, puede escribir las propiedades de la trama en un archivo de registro y comprobar que las extensiones, los tamaños de las celdas, los tipos de valores, etc. son los esperados.

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

También su mención a la semana de tramitación es algo preocupante. Es muy probable que tenga que volver a ejecutar los procesos, así que ¿hay alguna forma de dividirlo en varios pasos intermedios más pequeños? De este modo, podrá comprobar los resultados en cada etapa y, si algo es incorrecto, sólo tendrá que reanudar el proceso desde el paso anterior en lugar de hacerlo desde el principio.

1voto

Niall C. Puntos 1234

En cuanto a los archivos vectoriales shp yo usaría algo como el comprobador de archivos de forma en arcscripts.
comprobador de archivos de forma

Para Raster El error más común durante el geoprocesamiento es el tipo de campo no válido.
Podría considerar descubrir los tipos de campo en sus módulos de geoprocesamiento y luego ejecutar la comprobación de los tipos de campo en sus rásters.
Supongo que otros tipos de erros o algunas otras cosas a tener en cuenta podrían ser que la paleta esté indexada, o que la profundidad de color no sea compatible con un procesamiento concreto.

En realidad, ser corupto parece un poco más raro. Pero seguro que puede ocurrir. Aquí hay algunas cosas que se pueden buscar.
foros de esri
corrupto dted
Creo que en la mayoría de los casos, el uso de otro software para abrir el archivo y guardarlo de nuevo en el formato/parámetros correctos soluciona muchos de estos problemas.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X