Identifique archivos de forma corruptos o rásteres a través de Python o ArcObjects

9

Estoy interesado en una forma de identificar rásteres (p. Ej., Formato ESRI GRID) o archivos de forma corruptos que impidan su uso en una herramienta de análisis. Tengo un gran número en el árbol de carpetas estructuradas y me gustaría poder escribir algo que recorra el árbol de archivos y pueda identificar rásteres que, por ejemplo, si intenta verlo en ArcCatalog, no permitiría que se muestre y en consecuencia haría que fallara cualquier herramienta de geoprocesamiento. El mismo trato para shapefiles o clases de entidad.

Mi preferencia sería de alguna manera hacer esto en Python (y no me opondría a un módulo de Python que no sea ESRI u otro) pero estoy abierto a cualquier cosa. Supongo que podrían hackear algo juntos al intentar validar la geometría o capitalizar 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 propósito?

Mi objetivo es poder ejecutar un mecanismo de control de calidad simple en algunos archivos grandes de preprocesamiento de una semana para asegurarme de que estén bien antes de comenzar a realizar el procesamiento por lotes real.

gracias Tom

oro turco
fuente

Respuestas:

1

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

Además, puede escribir las propiedades ráster en un archivo de registro y verificar que las extensiones, los tamaños de celda, los tipos de valor, etc. sean todo lo que espera.

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 del procesamiento de una semana es algo preocupante. Es muy probable que tenga que volver a ejecutar los procesos, por lo que hay alguna forma de dividirlo en varios pasos intermedios más pequeños. De esta manera, puede verificar los resultados en cada etapa, y si algo es incorrecto, solo necesita reanudar desde el paso anterior en lugar del comienzo.

geographika
fuente
Gracias por la sugerencia de obtener propiedades ráster, supuse que utilizar algunas características del tipo de datos probablemente sería mi mejor opción dado que no conozco ninguna herramienta de validación. Con respecto al procesamiento de una semana, no hay problema, la duración del tiempo se debe solo a la cantidad de rásteres y su tamaño. Tengo un programa robusto de Python que lo maneja, pero parte del problema es que los datos están en nuestra red, por lo que estoy perdiendo algo de velocidad ya que no son locales. De hecho, desarrollé una funcionalidad para eliminar de la lista de procesamiento aquellos que ya tienen ejecutado automáticamente
2011
Además, probablemente haré algo similar para los shapefiles en términos de solo verificar la geometría (@Craig Williams). La intención de mi publicación fue explorar si hay algo por ahí como un módulo de Python que no sea ESRI u otro ... pero las perspectivas no son tan buenas basadas en estas respuestas.
turkishgold
@turkishgold: puede utilizar la misma técnica de lectura de archivos de forma y rásteres con GDAL y los enlaces de Python gdal.org/gdal_tutorial.html
geographika
2

Para las fuentes de datos vectoriales, use Verificar geometría / Reparar geometría en tándem.

Craig Williams
fuente
1

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

Para ráster El error más común durante el geoprocesamiento es el tipo de campo no válido.
Puede considerar descubrir los tipos de campo en sus módulos de geoprocesamiento y luego ejecutar la verificación de los tipos de campo en sus rásteres.
Supongo que otros tipos de errores o algunas otras cosas a tener en cuenta podrían ser la paleta que se indexa o la profundidad de color no se admite para un procesamiento particular.

En realidad, ser corupt parece un poco más raro. Pero seguro que puede suceder. Aquí puede haber algunas cosas para buscar.
los foros de esri están
corruptos
. Creo que la mayoría de las veces estos casos podrían ser que el uso de otro software para abrir el archivo y guardarlo nuevamente en el formato correcto / parámetros corrige muchos de estos problemas.

Brad Nesom
fuente