Por que demora tanto tempo para copiar um grande conjunto de dados raster de um geodatabase de arquivo para outro? Posso copiar o banco de dados inteiro no Windows Explorer em minutos, mas copiar uma única varredura no ArcCatalog leva uma eternidade. Eu sempre assumi que não é aconselhável usar o Windows Explorer para copiar dados entre para o File Geodatabases, mas existe uma maneira segura de fazer isso? Se sim, como?
arcgis-10.0
raster
esri-geodatabase
Jakub Sisak GeoGraphics
fonte
fonte
Respostas:
Eu acho que a chave é a diferença entre como o Windows Explorer trata um único arquivo e como o ArcCatalog / ArcGIS trata uma varredura. Existem alguns fatores aqui.
No formato File GDB, uma varredura não é representada por um único arquivo. É composto da tabela de dados, juntamente com provavelmente pirâmides e índices. Por que isso é importante, porque quando o ArcCatalog está copiando a varredura, ele primeiro combina todos esses arquivos separados no que vemos como a varredura. Em seguida, ele é executado na camada de programação do ArcGIS para copiá-lo para um novo File GDB. Isso é muito mais complicado na superfície do que apenas usar os recursos do sistema Windows para copiar um arquivo, pois é uma camada adicional de programação.
A próxima parte está relacionada a algo que você vê quando copia outra classe de recurso no ArcCatalog. Se você copiar e colar no ArcCatalog, será exibida uma janela de progresso mostrando as classes de características originais e de destino e, em seguida, um iterador que conta o número de recursos que foram transferidos. Isso mostra que ele está iterando linha por linha pela classe de recurso. Isso faz sentido do ponto de vista da integridade dos dados, pois cada recurso é copiado e verificado antes de passar para o próximo. Onde isso é relevante para o Raster, é que um raster é composto por centenas, senão milhares de pontos. Se um conjunto de dados rasterizado é copiado da mesma maneira que uma classe de característica de vetor, o ArcCatalog está essencialmente iterando através de cada par de coordenadas no Raster, para copiá-lo de um para outro.
O último fator é o tamanho do conjunto de dados. No seu caso, o arquivo GDB que você está mostrando tem uma tabela com 20.671.104 KB, com aproximadamente 20 GB. Essa é uma grande varredura e definitivamente contém muitos milhões de pontos. São muitos pares de coordenadas para iterar.
Quando você combina o tamanho do seu conjunto de dados Raster, com a necessidade de iterar sobre cada linha (par de coordenadas) e executar isso por toda a camada de programação do ArcGIS, você termina com uma operação muito mais complexa e, portanto, mais longa do que copiar uma única arquivo usando as funções do sistema Windows.
-------Editar
Para responder à sua pergunta original sobre uma maneira mais rápida de copiar rasters entre geodatabases de arquivos, eu diria que uma coisa a tentar seria escrever um script python chamado arcpy. Como você estaria interagindo diretamente com a API, sem o código ArcCatalog / ArcMap adicional em execução, pode ser um pouco mais rápido. Um exemplo de código a seguir:
Não tenho certeza se a diferença de velocidade seria notável, mas é uma opção.
A outra opção, como @ blah238 referido, é não armazenar rasters em um geodatabase, mas em um formato baseado em arquivo, como "geotiff" ou até mesmo um ArcINFO Grid, pois o arquivo pode ser completamente manipulado pela interface do Windows .
Infelizmente, além disso, suas opções para trabalhar com o geodatabase de arquivo fora da interface do ArcGIS são limitadas. Existe uma API para o File GDB que permite aos programadores interagir com ele em diferentes softwares. Um exemplo atualmente é através das bibliotecas GDAL / OGR e, em breve, Quantum GIS. O problema com a API é que ela não suporta conjuntos de dados de varredura no momento. Se isso é algo que você gostaria de defender, eu adicionaria seu apoio a esta entrada no site do ArcGIS Ideas .
fonte