Saya mengalami kesulitan menemukan diskusi atau pembandingan perbandingan format file raster yang berbeda (misalnya, untuk digunakan dalam analisis data dalam R). Adakah yang tahu mengapa format tertentu lebih cepat atau lambat? Atau haruskah perbedaannya minimal?
Secara khusus, saya tertarik jika mengonversi raster (mis., File GEOTIFF) ke format lain (mis., NetCDF) pernah bermanfaat untuk keperluan mempercepat baca / tulis dan operasi lainnya.
raster
geotiff-tiff
r
file-formats
netcdf
George
sumber
sumber
Jawaban:
Berikut ini adalah artikel blog lama saya yang melihat ukuran file dan waktu akses format. Saya tidak menyelidiki kecepatan menulis, hanya waktu akses. Saya akan mengatakan mereka mungkin berhubungan langsung, tetapi tidak akan dapat menjaminnya.
Ringkasan Artikel: Tampaknya Packbits memberi Anda waktu akses terbaik (dengan mengorbankan ruang disk), sedangkan Deflate memberi Anda waktu akses menengah / lambat untuk file menengah / kecil. Selain itu, Anda dapat menguji waktu akses secara lebih empiris dengan membuat thumbnail berbagai ukuran dan menentukan waktu yang diperlukan. Contoh perintah:
time gdal_translate -outsize <thumbnail dimensions> -of GTiff <compressed image file> <thumbnail file>
Dengan asumsi bahwa satu-satunya hal yang relevan dengan R dalam hal ini adalah seberapa cepat ia dapat membaca data dari file, sama seperti proses lainnya, maka itu akan memberi Anda indikasi yang baik.
sumber
Untuk operasi baca / tulis , Anda dapat menguji kecepatan operasi tersebut menggunakan system.time (). Berikut adalah beberapa hasil dari memuat file DEM dalam R (paket Raster) yang diterjemahkan ke dalam empat format (ASCII, IMG dan TIF tanpa kompresi dan Deflate). Misalnya, pada raster ~ 26MB:
'Elapsed' memberikan total waktu (detik) yang diambil untuk operasi. Menjalankan operasi masing-masing 10 kali dan melihat rata-rata waktu yang telah berlalu:
TIFF tanpa kompresi adalah yang tercepat ... diikuti oleh Deflate (0,1% lebih lambat) dan TIFF-Packbits (1,8% lebih lambat), kemudian IMG (3,2% lebih lambat) dan ASC (33% lebih lambat). (Ini pada Macbook Pro 2.4 GHz dengan SSD, jadi operasi disk jadi cepat)
Ini hanya untuk memuat file, bukan memanipulasi mereka.
sumber
Mungkin ini benar-benar bukan pertanyaan format gambar raster mana yang memiliki tolok ukur pembukaan yang lebih baik - melainkan format gambar raster mana yang merupakan format sumber raster paling efisien untuk dibuka dan dibaca sebagai input ke dalam array numerik R. Dan selanjutnya - apa format output paling efisien dari R dengan asumsi Anda akan mengeluarkan hasil kembali ke raster.
Either way, jika Anda akan bekerja dengan raster di R Anda kemungkinan akan menggunakan paket rgdal dan R ncdf untuk melengkapi apa yang terkandung dalam paket r raster . Dengan mengandalkan prinsipal pada perintah gdalwarp . Perlu mengerjakan dependensi format di sana untuk membuat pilihan raster Anda. Anda akan menemukan cakupan yang adil pada SO dan berbagai OSGEO dan forum R / blog / wiki.
Tetapi karena ini adalah forum GIS di mana penggunaan Python dalam kekuasaan relatif, saya akan mencatat bahwa ada keuntungan untuk bekerja dengan data raster dalam array numpy Python, dengan ketergantungan yang sama pada pustaka gdal untuk memuat raster, konversi dan ekspor. Beberapa orang menemukan manajemen memori dan struktur kode dalam Python lebih disukai daripada R asli - mungkin lihat RPy2 atau PypeR karena keduanya mungkin sesuai untuk penggunaan analisis Anda.
sumber
Sebuah pertanyaan besar adalah apakah Anda akan membaca seluruh raster dari file ke dalam memori sebelum memprosesnya, atau apakah file tersebut sangat besar sehingga Anda akan memprosesnya secara bertahap, atau memproses beberapa bagian dari keseluruhan file.
Jika Anda akan memuat semuanya ke dalam memori, maka Anda akan melakukan sebagian besar akses sekuensial, dan format tercepat akan menjadi lemparan antara penyimpanan polos dan terkompresi (tergantung pada hal-hal seperti seberapa cepat CPU Anda versus disk). Salah satu format file biner mungkin akan sangat dekat (ASCII akan lebih lambat).
Jika Anda perlu memproses subset dari file yang sangat besar, maka format yang mengelompokkan subset yang Anda inginkan lebih dekat mungkin lebih cepat - misalnya: petak atau format yang dapat menghitung offset. Kadang-kadang pendekatan tanpa kompresi mendapatkan di sini karena mungkin sepele untuk menghitung di mana bagian tertentu dari gambar berada di dalam file, terutama jika Anda hanya memerlukan bagian dari baris yang sangat besar, tetapi kompresi dapat dilakukan dengan cara granular yang bekerja dengan baik untuk beberapa pola akses.
Maaf, tetapi Anda mungkin harus melakukan benchmark tergantung pada pola akses Anda, daripada mendapatkan satu ukuran untuk semua. Tentu saja ini tergantung tidak hanya pada format file dan faktor-faktor di atas, tetapi pada driver untuk format itu dan perangkat lunak Anda.
sumber
Cara Anda berpikir tentang masalah-masalah semacam ini adalah dalam hal bagaimana aplikasi Anda mengakses file Anda, vs. bagaimana data diletakkan dalam file Anda. Idenya adalah bahwa jika Anda dapat mengakses data Anda secara berurutan, itu akan jauh lebih efisien daripada jika Anda mengaksesnya secara acak.
GeoTIFF adalah kumpulan "gambar" 2D atau array. NetCDF adalah penyimpanan untuk keperluan umum untuk array multidimensi. Tetapi jika Anda menyimpan array dengan cara yang sama di netCDF seperti di GeoTIFF, Anda akan mendapatkan kinerja yang sama, lebih atau kurang.
Anda juga dapat mengatur ulang data dalam netCDF, sehingga secara prinsip dapat mengoptimalkan pola bacaan Anda. Dugaan saya adalah bahwa sebagian besar aplikasi GIS dioptimalkan untuk tata letak GeoTIFF 2D, jadi tidak ada banyak keuntungan dengan menata ulang.
Akhirnya, Id mengatakan itu benar-benar hanya penting ketika Anda memiliki file yang sangat besar, setidaknya puluhan megabita.
sumber
Saya membaca beberapa halaman tentang ini beberapa tahun yang lalu dan sejak itu menggunakan tiff dengan kompresi paket, ubin dengan header geotiff, dan telah senang.
artikel tim arcpad
wiki
Tetapi setelah membaca yang berikut, saya akan mempertimbangkan kembali dan mungkin menggunakan varietas deflate.
Situs Arcpad
sumber
Begitu banyak paket menggunakan GDAL di bawah tenda, misalnya, rgdal, QGIS, GRASS, dll. Jika saya menggunakan salah satu paket itu, maka saya akan berpikir untuk mengubah gambar saya ke vrt. Saya sering melihatnya merekomendasikan bahwa ketika Anda perlu menggunakan dua perintah GDAL, maka file perantara harus berupa file vrt karena overhead baca minimal (misalnya, http://www.perrygeo.com/lazy-raster-processing -dengan-gdal-vrts.html ). Kedengarannya seperti alur kerja Anda: konversi sekali dan baca berkali-kali. Mungkin vrt akan sesuai.
[Sunting: tautan disesuaikan]
sumber