¿Por qué tarda tanto tiempo para copiar un gran conjunto de datos raster a partir de una geodatabase de archivos a otro? Puedo copiar toda la base de datos en el explorador de windows en cuestión de minutos, pero la copia de un mapa de bits único en ArcCatalog lleva para siempre. Siempre he asumido que no es recomendable utilizar el explorador de windows para copiar datos entre las Geodatabases de Archivos, pero hay una forma segura de hacer esto? Si es así, ¿cómo?
Respuesta
¿Demasiados anuncios?Creo que la clave es la diferencia entre cómo el Explorador de Windows trata de un solo archivo, y cómo ArcCatalog/ArcGIS tratar una trama. Hay un par de factores.
En el Archivo GDB formato de una trama no está representado por un único archivo. Se compone de la tabla de datos, junto con las pirámides y los índices. Por qué esto es importante porque es cuando ArcCatalog es la copia de la trama, es la combinación de todos estos archivos separados en lo que vemos como la trama. Luego se ejecuta a través de ArcGIS programación de la capa para copiar un nuevo Archivo GDB. Esto es mucho más complicado en la superficie que la utilización de los recursos del Sistema de Windows para copiar un archivo, ya que es una capa adicional de programación.
La siguiente parte está relacionada con algo que se ve cuando se copia en otra clase de entidad en ArcCatalog. Si copia y pega en ArcCatalog, se abre una ventana de progreso que muestra el original y de destino featureclasses y, a continuación, un iterador que cuenta el número de características que han sido transferidos. Esto muestra que es la iteración de fila por fila a través de la featureclass. Esto tiene sentido desde un punto de vista de la integridad de los datos como en cada función se copian y verificado antes de pasar a la siguiente. Donde esto es relevante para la Trama, es que una trama se compone de cientos, si no miles de Puntos. Si un dataset ráster se copia de la misma manera como un vector featureclass, a continuación, ArcCatalog es esencialmente la iteración a través de cada par de coordenadas en la Trama, para copiar de uno a otro.
El último factor es el tamaño del conjunto de datos. En su caso, el Archivo GDB que se muestra tiene una tabla que se 20,671,104 KB, que es de ~20 GB. Que es una gran Trama, y sin duda contiene muchos millones de puntos. Eso es un montón de pares de coordenadas para recorrer.
Cuando se combinan el tamaño de su dataset Ráster, con la necesidad de iterar sobre cada fila (par de Coordenadas), y ejecutar a través de todo el ArcGIS programación de la capa, se termina con una mucho más compleja, y por lo tanto más tiempo de operación de copiar un archivo único con las funciones del Sistema de Windows.
\begin{array}{rcll} (m,e,c,d) & \to & (m-2, e + 1, c + 1, d + 1) &\qquad\text{if %#%#%}\\ (m,e,c,d) & \to & (m, e - 1, c + 1, d + 1) &\qquad\text{if %#%#%} \\ (m,e,c,d) & \to & (m, e + 1, c - 3, d + 1) &\qquad\text{if %#%#%} \\ \end--Editar
Para responder a tu pregunta original de una manera más rápida de copiar los rásteres entre las geodatabases de archivos, yo diría que una cosa es intentar, sería escribir una secuencia de comandos de python llamada de arcpy. Desde entonces usted podría ser la interacción directa con la API, sin el ArcCatalog/ArcMap código que se ejecuta, puede ser un poco más rápido. Un ejemplo de código de la siguiente manera:
import arcpy
from arcpy import env
env.workspace = "C:/data"
arcpy.Copy_management("olddata.gdb/raster1", "newdata.gdb/raster1")
No estoy seguro de si la diferencia de velocidad sería notable, pero es una opción.
La otra opción, como @blah238 se refiere, es para no almacenar los rásteres en una geodatabase de archivos, pero en un archivo de formato, como "geotiff", o incluso un ArcINFO red, ya que el archivo puede ser completamente manipulada a través de la interfaz de Windows.
Por desgracia, aparte de esto, las opciones para trabajar con la geodatabase de archivos fuera de la interfaz de ArcGIS son limitados. Hay una API para el Archivo GDB que permite a los programadores de la interfaz con diferentes software. Un ejemplo en la actualidad es a través de la GDAL/OGR bibliotecas, y de pronto, Quantum GIS. El problema con la API es que No admite datasets Ráster en este momento. Si esto es algo que te gustaría recomendar, me gustaría añadir su apoyo a esta entrada en el ArcGIS Ideas de sitio.