Warum dauert das Kopieren eines großen Raster-Datasets von einer Datei-Geodatabase in eine andere so lange? Ich kann die gesamte Datenbank im Windows Explorer in wenigen Minuten kopieren, aber das Kopieren eines einzelnen Rasters in ArcCatalog dauert ewig. Ich habe immer angenommen, dass es nicht ratsam ist, den Windows Explorer zum Kopieren von Daten in File Geodatabases zu verwenden. Gibt es eine sichere Möglichkeit, dies zu tun? Wenn das so ist, wie?
arcgis-10.0
raster
esri-geodatabase
Jakub Sisak GeoGraphics
quelle
quelle
Antworten:
Ich denke, der Schlüssel ist der Unterschied zwischen der Behandlung einer einzelnen Datei durch Windows Explorer und der Behandlung eines Rasters durch ArcCatalog / ArcGIS. Hier gibt es einige Faktoren.
Im Datei-GDB-Format wird ein Raster nicht durch eine einzelne Datei dargestellt. Es besteht aus der Datentabelle zusammen mit wahrscheinlich Pyramiden und Indizes. Dies ist wichtig, da ArcCatalog beim Kopieren des Rasters zunächst alle diese separaten Dateien zu dem zusammenfasst, was wir als Raster betrachten. Anschließend wird es über die ArcGIS-Programmierebene ausgeführt, um es in eine neue Datei-GDB zu kopieren. Dies ist an der Oberfläche viel komplizierter als nur die Verwendung der Windows-Systemressourcen zum Kopieren einer Datei, da dies eine zusätzliche Programmierebene darstellt.
Der nächste Teil bezieht sich auf etwas, das Sie sehen, wenn Sie eine andere Feature-Class in ArcCatalog kopieren. Wenn Sie in ArcCatalog kopieren und einfügen, wird ein Fortschrittsfenster mit den ursprünglichen und Ziel-Feature-Classes und anschließend ein Iterator angezeigt, der die Anzahl der übertragenen Features zählt. Dies zeigt, dass die Feature-Class zeilenweise durchlaufen wird. Dies ist unter dem Gesichtspunkt der Datenintegrität sinnvoll, da jedes Feature kopiert und überprüft wird, bevor zum nächsten übergegangen wird. Für das Raster ist dies relevant, da ein Raster aus Hunderten, wenn nicht Tausenden von Punkten besteht. Wenn ein Raster-Dataset auf die gleiche Weise wie eine Vektor-Feature-Class kopiert wird, durchläuft ArcCatalog im Wesentlichen jedes Koordinatenpaar im Raster, um es von einem zum anderen zu kopieren.
Der letzte Faktor ist die Größe des Datensatzes. In Ihrem Fall hat die angezeigte Datei GDB eine Tabelle mit 20.671.104 KB, was ~ 20 GB entspricht. Das ist ein großes Raster und enthält definitiv viele Millionen Punkte. Das sind viele Koordinatenpaare, die durchlaufen werden müssen.
Wenn Sie die Größe Ihres Raster-Datasets mit der Notwendigkeit kombinieren, über jede Zeile (Koordinatenpaar) zu iterieren und diese durch die gesamte ArcGIS-Programmierebene zu führen, erhalten Sie einen viel komplexeren und damit längeren Vorgang als das Kopieren eines einzelnen Datei mit den Windows-Systemfunktionen.
-------Bearbeiten
Um Ihre ursprüngliche Frage nach einem schnelleren Weg zum Kopieren von Rastern zwischen Datei-Geodatabases zu beantworten, würde ich sagen, dass Sie versuchen sollten, ein Python-Skript mit dem Namen arcpy zu schreiben. Da Sie dann direkt mit der API interagieren würden, ohne dass der zusätzliche ArcCatalog / ArcMap-Code ausgeführt wird, ist dieser möglicherweise etwas schneller. Ein Codebeispiel folgt:
Ich bin nicht sicher, ob der Geschwindigkeitsunterschied bemerkenswert wäre, aber es ist eine Option.
Die andere Option, auf die @ blah238 Bezug nimmt, besteht darin, Raster nicht in einer Datei-Geodatabase zu speichern, sondern in einem dateibasierten Format wie "geotiff" oder sogar einem ArcINFO-Raster, da die Datei dann vollständig über die Windows-Oberfläche bearbeitet werden kann .
Abgesehen davon sind Ihre Möglichkeiten zum Arbeiten mit der Datei-Geodatabase außerhalb der ArcGIS-Oberfläche leider eingeschränkt. Für die Datei GDB gibt es eine API, mit der Programmierer in verschiedenen Softwareprogrammen eine Schnittstelle zu ihr herstellen können. Ein Beispiel sind derzeit die GDAL / OGR-Bibliotheken und bald auch Quantum GIS. Das Problem mit der API besteht darin, dass Raster-Datasets derzeit nicht unterstützt werden. Wenn Sie sich dafür einsetzen möchten, möchte ich diesen Eintrag auf der ArcGIS Ideas-Website unterstützen .
quelle