¿Existe una forma rápida de copiar grandes conjuntos de datos ráster entre geodatabases de archivos?

8

¿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?

ingrese la descripción de la imagen aquí

Jakub Sisak GeoGraphics
fuente
¿Es solo un solo ráster (o un pequeño puñado) en la base de datos? Descubrí que la cantidad de tiempo para copiar o escribir un ráster en un FGDB aumenta con la cantidad de otras características / rásteres en la base de datos. Tengo mi propio límite de 75-100 antes de sentir que es mucho más lento (pero eso también es desde el punto de vista de la programación. Su millaje puede variar).
Nicksan
generalmente copio uno o dos conjuntos de datos (el tamaño varía de 1 GB a 20 GB). Hay otros 50 rásteres en este FGDB.
Jakub Sisak GeoGraphics

Respuestas:

9

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í.

  1. 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.

  2. 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. Barra de progreso que muestra la cantidad de entidades copiadas en ArcCatalog

  3. 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:

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 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 .

Consigue espacial
fuente
3
En otras palabras, utilice tipos de datos de trama basados ​​en archivos o específicos de DBMS (como Oracle Spatial GeoRaster ) siempre que sea posible.
blah238
Gracias. Sí, algunos de mis rásteres son grandes. Entonces, ¿no hay forma de usar el explorador o alguna otra utilidad de terceros?
Jakub Sisak GeoGraphics
2
Puede hacerlo usando el explorador duplicando el FGDB que contiene el ráster en el explorador, luego usar el Catálogo para eliminar todo lo que no desea y finalmente usar el catálogo para agregar todo lo que desea (es decir, el explorador hace el trabajo pesado y el Catálogo ordena después). Este es un truco desagradable y supone que los otros contenidos del FGDB son pequeños y toman menos tiempo para matar / copiar que su ráster.
MappaGnosis