¿Por qué lleva tanto tiempo copiar un gran dataset ráster de una geodatabase de archivos a otra? Puedo copiar toda la base de datos en Windows Explorer en minutos, pero copiar un solo ráster en ArcCatalog lleva una eternidad. Siempre supuse que no es aconsejable usar el explorador de Windows para copiar datos entre las geodatabases de archivos, pero ¿hay alguna forma segura de hacerlo? ¿Si es así, cómo?
arcgis-10.0
raster
esri-geodatabase
Jakub Sisak GeoGraphics
fuente
fuente
Respuestas:
Creo que la clave es la diferencia entre cómo Windows Explorer trata un solo archivo y cómo ArcCatalog / ArcGIS trata un ráster. Hay algunos factores aquí.
En el formato Archivo GDB, un ráster no está representado por un solo archivo. Está compuesto por la tabla de datos, junto con probablemente pirámides e índices. Por qué esto es importante es porque cuando ArcCatalog está copiando el ráster, primero está combinando todos estos archivos separados en lo que vemos como el ráster. Luego lo ejecuta a través de la capa de programación ArcGIS para copiarlo en un nuevo archivo GDB. Esto es mucho más complicado en la superficie que simplemente usar los recursos del sistema de Windows para copiar un archivo porque es una capa adicional de programación.
La siguiente parte está relacionada con algo que ve cuando copia otra clase de entidad en ArcCatalog. Si copia y pega en ArcCatalog, aparece una ventana de progreso que muestra las clases de entidades originales y de destino, y luego un iterador que cuenta la cantidad de entidades que se han transferido. Esto muestra que está iterando fila por fila a través de la clase de entidad. Esto tiene sentido desde el punto de vista de la integridad de los datos, ya que cada característica se copia y verifica antes de pasar a la siguiente. Donde esto es relevante para el Ráster es que un ráster está formado por cientos, si no miles de Puntos. Si un dataset ráster se copia de la misma manera que una clase de entidad vectorial, entonces ArcCatalog esencialmente está iterando a través de cada par de coordenadas en el Ráster, para copiarlo de uno a otro.
El último factor es el tamaño del conjunto de datos. En su caso, el archivo GDB que está mostrando tiene una tabla de 20,671,104 KB, que es ~ 20GB. Ese es un gran Ráster, y definitivamente contiene muchos millones de puntos. Hay muchos pares de coordenadas para recorrer en iteración.
Cuando combina el tamaño de su conjunto de datos Ráster, con la necesidad de iterar sobre cada fila (par de coordenadas) y ejecutar todo esto a través de la capa de programación ArcGIS, termina con una operación mucho más compleja y, por lo tanto, más larga que copiar una sola archivo utilizando las funciones del sistema de Windows.
-------Editar
Para responder a su pregunta original sobre una forma más rápida de copiar rásteres entre geodatabases de archivos, diría que una cosa para intentar sería escribir un script de Python que llame a arcpy. Dado que estaría interactuando directamente con la API, sin el código adicional ArcCatalog / ArcMap ejecutándose, puede ser un poco más rápido. Sigue un ejemplo de código:
No estoy seguro de si la diferencia de velocidad sería notable, pero es una opción.
La otra opción, como se hace referencia a @ blah238, es no almacenar rásteres en una geodatabase de archivos, sino en un formato basado en archivos, como "geotiff", o incluso una cuadrícula ArcINFO, ya que el archivo puede manipularse completamente a través de la interfaz de Windows .
Desafortunadamente, aparte de esto, sus opciones para trabajar con la geodatabase de archivos fuera de la interfaz de ArcGIS son limitadas. Existe una API para el archivo GDB que permite a los programadores interactuar con él en diferentes softwares. Un ejemplo actualmente es a través de las bibliotecas GDAL / OGR, y pronto, Quantum GIS. El problema con la API es que no admite conjuntos de datos ráster en este momento. Si esto es algo por lo que le gustaría abogar, agregaría su apoyo a esta entrada en el sitio de ArcGIS Ideas .
fuente