Apakah ada cara cepat untuk menyalin dataset raster besar antara File Geodatabases?

8

Mengapa perlu waktu lama untuk menyalin dataset raster besar dari satu file geodatabase ke yang lain? Saya dapat menyalin seluruh database di windows explorer dalam hitungan menit tetapi menyalin satu raster di ArcCatalog membutuhkan waktu lama. Saya selalu berasumsi tidak disarankan untuk menggunakan windows explorer untuk menyalin data antara ke File Geodatabases tetapi apakah ada cara yang aman untuk melakukan ini? Jika ya, bagaimana caranya?

masukkan deskripsi gambar di sini

Jakub Sisak GeoGraphics
sumber
Apakah itu hanya satu raster (atau segelintir kecil) dalam database? Saya telah menemukan bahwa jumlah waktu untuk menyalin atau menulis raster ke FGDB meningkat dengan jumlah fitur / raster lain di db. Saya semacam punya batas 75-100 saya sendiri sebelum saya merasa itu terlalu lambat (tapi itu dari sudut pandang pemrograman juga. Jarak tempuh Anda mungkin bervariasi).
nicksan
biasanya saya menyalin satu atau dua dataset (ukuran bervariasi 1GB - 20GB). Ada sekitar 50 raster lain di FGDB ini.
Jakub Sisak GeoGraphics

Jawaban:

9

Saya pikir kuncinya adalah perbedaan antara bagaimana Windows Explorer memperlakukan satu file, dan bagaimana ArcCatalog / ArcGIS memperlakukan raster. Ada beberapa faktor di sini.

  1. Dalam format File GDB, raster tidak diwakili oleh satu file. Itu terdiri dari tabel data, bersama dengan mungkin piramida dan indeks. Mengapa ini penting adalah karena ketika ArcCatalog menyalin raster, pertama-tama menggabungkan semua file terpisah ini ke dalam apa yang kita lihat sebagai raster. Itu kemudian menjalankannya melalui lapisan pemrograman ArcGIS untuk menyalinnya ke File GDB baru. Ini jauh lebih rumit di permukaan daripada hanya menggunakan sumber daya Sistem Windows untuk menyalin file karena merupakan lapisan tambahan pemrograman.

  2. Bagian selanjutnya terkait dengan sesuatu yang Anda lihat ketika Anda menyalin kelas fitur lain di ArcCatalog. Jika Anda menyalin dan menempel di ArcCatalog, itu memunculkan jendela progres yang menunjukkan kacamata fitur asli dan target, dan kemudian sebuah iterator yang menghitung jumlah fitur yang telah ditransfer. Ini menunjukkan bahwa itu adalah pengulangan baris demi baris melalui FeatureClass. Ini masuk akal dari sudut pandang integritas data karena setiap fitur disalin dan diverifikasi sebelum pindah ke yang berikutnya. Dimana ini relevan untuk Raster adalah bahwa raster terdiri dari ratusan, jika tidak ribuan Poin. Jika dataset raster disalin dengan cara yang sama seperti vektor featureeclass, maka ArcCatalog pada dasarnya melakukan iterasi melalui setiap pasangan koordinat dalam Raster, untuk menyalinnya dari satu ke yang lain. Bilah progres yang menunjukkan sejumlah fitur yang disalin di ArcCatalog

  3. Faktor terakhir adalah ukuran dataset. Dalam kasus Anda, File GDB yang Anda perlihatkan memiliki tabel yaitu 20.671.104 KB, yaitu ~ 20GB. Itu adalah Raster besar, dan pastinya berisi jutaan poin. Itu banyak pasangan koordinat untuk diulangi.

Ketika Anda menggabungkan ukuran dataset Raster Anda, dengan kebutuhan untuk mengulangi setiap baris (Mengkoordinasikan pasangan), dan menjalankan semua itu melalui lapisan pemrograman ArcGIS, Anda berakhir dengan yang jauh lebih kompleks, dan dengan demikian operasi lebih lama daripada menyalin satu pun. file menggunakan fungsi Sistem Windows.

------- Edit

Untuk menjawab pertanyaan awal Anda tentang cara yang lebih cepat untuk menyalin raster antara file geodatabases, saya akan mengatakan satu hal untuk dicoba adalah menulis skrip python bernama arcpy. Karena Anda kemudian akan langsung berinteraksi dengan API, tanpa menjalankan kode ArcCatalog / ArcMap tambahan, itu mungkin sedikit lebih cepat. Contoh kode mengikuti:

import arcpy
from arcpy import env

env.workspace = "C:/data"
arcpy.Copy_management("olddata.gdb/raster1", "newdata.gdb/raster1")

Saya tidak yakin apakah perbedaan kecepatan akan menonjol, tetapi ini merupakan opsi.
Opsi lain, seperti yang dimaksud @ blah238, adalah tidak menyimpan raster dalam file geodatabase, tetapi dalam format berbasis file, seperti "geotiff", atau bahkan Grid ArcINFO, karena file tersebut kemudian dapat sepenuhnya dimanipulasi melalui antarmuka Windows .

Sayangnya, selain ini, opsi Anda untuk bekerja dengan file geodatabase di luar antarmuka ArcGIS terbatas. Ada API untuk File GDB yang memungkinkan programmer untuk berinteraksi dengannya dalam perangkat lunak yang berbeda. Salah satu contoh saat ini adalah melalui pustaka GDAL / OGR, dan segera, Quantum GIS. Masalah dengan API adalah bahwa ia tidak mendukung dataset Raster saat ini. Jika ini adalah sesuatu yang ingin Anda advokasi, saya akan menambahkan dukungan Anda ke entri ini di situs Ide ArcGIS .

Dapatkan Tata Ruang
sumber
3
Dengan kata lain, gunakan tipe data raster berbasis file atau DBMS (seperti Oracle Spatial GeoRaster ) jika memungkinkan.
blah238
Terima kasih. Ya beberapa raster saya besar. Jadi tidak ada cara untuk menggunakan explorer atau utilitas pihak ke-3 lainnya?
Jakub Sisak GeoGraphics
2
Anda dapat melakukannya menggunakan explorer dengan menduplikasi FGDB yang berisi raster di explorer, kemudian menggunakan Katalog untuk menghapus semua yang tidak Anda inginkan dan akhirnya menggunakan katalog untuk menambahkan semua yang Anda inginkan (yaitu penjelajah melakukan angkat berat dan Katalog merapikan setelah itu). Ini adalah retas jahat dan menganggap bahwa konten lain dari FGDB kecil dan membutuhkan waktu lebih sedikit untuk membunuh / menyalin daripada raster Anda.
MappaGnosis