Bagaimana cara mengatasi proses mosaik besar yang gagal?


11

Saya perlu membuat mosaik tentang 550Gb citra tif bersama-sama dan perangkat lunak yang saya coba terus gagal. Area ini telah dibagi menjadi beberapa zona sehingga yang terkecil memiliki sekitar 200 ubin.

Saya telah menggunakan versi terbaru dari ERDAS (Imagine and Mapper), ArcINFO dan Global Mapper pada 3,30 gigahertz Intel Xeon E31245, DELL, RAM 16GB, 64-bit Win 7 Professional. Mesin Mullti-core (4 total), Hyper-threaded (8 total). C saya memiliki 700GB gratis dan D memiliki 1,5TB.

Saya melihat ke dalam menggunakan Grass (belum pernah sebelumnya) tetapi saya.image.mosaic tampaknya hanya menangani 4 file ... beberapa dari saya memiliki 600 ubin. Adakah pilihan lain atau perangkat lunak sumber terbuka untuk dicoba?

Maaf harus menambahkan bahwa kami tidak dapat menggunakan dataset mosaik (atau yang setara dalam perangkat lunak lain) karena kami perlu membuat zona dengan area tanpa-data yang ditentukan sebagai EC sehingga mereka dapat dibuka di perangkat lunak SIG apa pun dan dikombinasikan dengan resolusi yang lebih rendah / lebih tua data saat data baru tidak ada dengan mulus.

masukkan deskripsi gambar di siniContoh bagaimana beberapa file mosaik terlihat di perangkat lunak yang berbeda. Global Mapper / ERDAS baik-baik saja tetapi itu tidak benar di arcgis.

--- INFO TUA ---

masukkan deskripsi gambar di sini

Maaf untuk gambar kasarnya. Jadi memiliki area berwarna sebagai 5 zona akan meminimalkan area tanpa data di AOI yang lebih besar.

Dalam arcgis kodenya adalah sebagai berikut (ini dijalankan sebagai model dan bukan dengan python karena saya tidak bisa mendapatkannya untuk mengambil input tifList).

arcpy.MosaicToNewRaster_management(tifList+";" +mask,RootOutput,"Tile1.tif","PROJCS['GDA_1994_MGA_Zone_55',GEOGCS['GCS_GDA_1994',DATUM['D_GDA_1994',SPHEROID['GRS_1980',6378137.0,298.257222101]],PRIMEM['Greenwich',0.0],UNIT['Degree',0.0174532925199433]],PROJECTION['Transverse_Mercator'],PARAMETER['False_Easting',500000.0],PARAMETER['False_Northing',10000000.0],PARAMETER['Central_Meridian',147.0],PARAMETER['Scale_Factor',0.9996],PARAMETER['Latitude_Of_Origin',0.0],UNIT['Meter',1.0]]","16_BIT_UNSIGNED","0.5","3","MAXIMUM","#")

# Replace a layer/table view name with a path to a dataset (which can be a layer file) or create the layer/table view within the script
# The following inputs are layers or table views: "test2"

arcpy.CopyRaster_management(OutputFile,RootOutput+"Tile1b.tif","#","256","256","NONE","NONE","16_BIT_UNSIGNED")

di mana tifList harus dibaca dari file csv tapi ini tidak berfungsi dengan python jadi saya menjalankan di atas dalam model sebagai gantinya ...

Saya memiliki ruang kosong 1,5TB + di drive saya, tetapi proses macet dengan kesalahan 9999.

Akankah 100 ubin diproses? -yaitu kita harus melihat memecah zona lebih jauh?


3
Itu adalah jumlah data yang gila untuk didorong. Anda tidak mencoba untuk menggabungkannya menjadi satu file TIF ginormous kan? Saya menyarankan untuk membuat dataset mosaik atau layanan peta dalam cache .
blah238

ya itu ... tidak akan idealnya 7 individu atau tif (jika menggunakan arcgis). Saya dapat menambahkan visual dari ukuran / zona tetapi tidak yakin apakah itu akan membantu.
GeorgeC

Berdasarkan komentar Anda tentang organisasi Anda menggunakan MapInfo dan perangkat lunak lain, alih-alih ArcGIS, saya menghapus jawaban saya, karena itu benar-benar tidak menyelesaikan kebutuhan Anda sama sekali. Namun saya akan menyarankan agar Anda memasukkan beberapa detail tentang persyaratan perangkat lunak Anda dalam pertanyaan Anda untuk mencegah perjalanan lebih jauh ke jalur Esri.
Dapatkan Spasial

@ GetSpatial - terima kasih atas jawaban terinci. Ini adalah salah satu solusi untuk jangka pendek dan kami mungkin akan menggunakannya tetapi seperti yang saya sebutkan dalam pertanyaan saya, kami benar-benar perangkat lunak independen dan memiliki biggies (ESRI / ERDAS / MAPINFO dan Global Mapper). Kuncinya bagi kami adalah hasilnya - ~ 5 Mosaik dengan area tanpa-data yang ditentukan sehingga citra lain dapat digunakan. ECW harus memiliki no-data yang ditentukan dalam semua perangkat lunak -kami telah menemukan beberapa mosaik tidak mempertahankan properti no-data dalam perangkat lunak yang berbeda. Saya akan memposting contoh. Terima kasih lagi. Saya ingin meminta Anda untuk menyimpan jawaban Anda di sini, saya akan memilihnya.
GeorgeC

Jawaban:


9

Saya harus saran 2 @ blah238 tentang menggunakan beberapa metode lain dari akses data daripada membuat gambar mosaik tunggal. Tebakan sederhana akan mengatakan bahwa tidak ada desktop di luar sana yang dapat menangani jumlah data yang harus Anda proses untuk membuat mosaik semua ubin itu.
Untuk memecahnya, mungkin ada dua tempat di mana Anda kehabisan ruang.

  1. Yang pertama akan berada di buffer RAM Anda. Untuk mem-mosaik data, Anda menggabungkan semuanya menjadi satu file, yang berarti idealnya, seluruh file akan disimpan dalam memori. Anda tidak memiliki RAM 550GB, artinya akan ada baca / tulis dari memori virtual. Itu cukup untuk menghentikan proses di sana.
  2. Masalah lainnya adalah ruang hard disk. Banyak operasi raster membuat file temp di direktori "ruang kerja" Anda yang cukup besar. Mungkin ada 2 atau 3 atau lebih dari ini bahkan sebelum dataset final ditulis, sehingga mungkin untuk menggunakan semua ruang disk Anda selama pemrosesan.

Sekarang, untuk solusi lain. Seperti disebutkan dalam komentar di atas, ada opsi untuk membuat Dataset Mosaic . Dataset ini akan memungkinkan Anda untuk tidak hanya memperlakukan semua ubin individual sebagai gambar tanpa batas tunggal, tetapi juga memelihara metadata tentang ubin individual yang terkandung di dalamnya. Ini juga memungkinkan Anda melakukan operasi raster seperti Hillshade .

Opsi lain yang akan saya rekomendasikan, berdasarkan komentar Anda tentang keinginan memisahkan zona adalah membuat Katalog Raster . Katalog Raster pada dasarnya adalah lapisan grup. Anda dapat menambahkan beberapa dataset raster ke dalamnya. Mereka dapat dikelola dalam geodatabase, dan mengimpor raster, atau cukup membuat dataset yang tidak dikelola di mana Katalog Raster memelihara jalur ke set data raster asli. Ketika Anda memuat lapisan ini ke ArcMap, Anda dapat mengatur properti tampilan untuk hanya memuat sejumlah ubin raster sekaligus, atau mengatur skala tampilan dan resolusi.
Saat ini saya menggunakan katalog raster untuk memasang set foto udara 100 + GB. Performanya sangat bagus. Jika Anda mencari jenis penyimpanan data yang berbeda hanya untuk cara mengelola sejumlah besar ubin, maka saya akan sangat merekomendasikannya.

Berikut ini adalah kode yang dapat Anda gunakan untuk membuat Katalog Raster dan kemudian mengimpor ruang kerja ubin ke dalamnya:

import arcpy
import os

newdir = r"c:\data"
dbname = "Aerialphotos.gdb"
gdbdir = os.path.join(newdir, dbname)
rcat = "AerialCatalog"

arcpy.CreateRasterCatalog_management(gdbdir, rcat,
                                     "NAD 1983 StatePlane California VI FIPS 0406 (US Feet).prj", 
                                     "NAD 1983 StatePlane California VI FIPS 0406 (US Feet).prj",
                                     "MAX_FILE_SIZE_4GB", "1000", "3000", "9000",
                                     "UNMANAGED", "")

#Load all raster datasets in workspace to Raster Catalog
rcatdir = os.path.join(gdbdir, rcat)
rastertiledir = os.path.join(newdir, "tiles")

arcpy.WorkspaceToRasterCatalog_management(rastertiledir, rcatdir,
                                          "INCLUDE_SUBDIRECTORIES",
                                          "PROJECT_ONFLY")

Semoga ini membantu!

------------- Edit

Ini adalah grafik ubin yang ditangani oleh katalog raster saya. Perhatikan bahwa Anda dapat memilih agar gambar rangka ditampilkan atau data raster. Katalog raster memiliki tabel atribut yang dapat Anda tambahkan bidang, misalnya jika Anda ingin menambahkan penunjukan zona seperti pada grafik Anda. Kemudian, Anda dapat memilih untuk hanya menampilkan raster tersebut di zona tertentu.
Saat mencetak dalam grafik dari tampilan tata letak, resolusi penuh raster digunakan, sehingga tidak ada kehilangan kualitas dalam cetakan.

masukkan deskripsi gambar di sini

Berikut adalah grafik yang sama, tetapi menunjukkan beberapa data raster, bersama dengan beberapa gambar rangka.

masukkan deskripsi gambar di sini


Terima kasih atas waktu Anda untuk ini. Ini adalah solusi jangka pendek yang baik tetapi karena organisasi menggunakan Mapinfo dan perangkat lunak lain, kita benar-benar harus dapat membuat burung hantu dengan area dewan dibagi menjadi sekitar 5 zona. Mapinfo memiliki lapisan mulus (mirip dengan Katalog Raster). Tetapi penting bahwa tidak ada area data yang ditentukan sehingga kami dapat mendasari citra baru dengan citra lama yang memiliki cakupan lebih luas dan kami mengurangi jumlah file untuk dibuka.
GeorgeC

1
Di masa depan, Anda mungkin akan mendapatkan jawaban yang lebih relevan jika Anda memberikan informasi semacam ini di pertanyaan awal Anda.
Dapatkan Spasial

1
Sudahkah Anda melihat ke layanan peta web apa yang bisa dikonsumsi MapInfo? Saya menduga Anda ingin meletakkan versi cache semua data ini di server untuk dikonsumsi oleh organisasi Anda, bukan data mentah. Saya pikir hal no-data adalah titik diperdebatkan dengan layanan peta karena Anda tidak akan membuat petak di mana tidak ada data, dan apa pun yang ada di bawahnya akan ditampilkan.
blah238

7

Saya tahu saya terlambat ke pesta. Tapi ini saran saya.

1) ukuran gambar
Jika sumber asli 550GB Anda tidak terkompresi, Anda harus mengubahnya menjadi file tiff terkompresi jpeg. Pertahankan secara individual (tidak digabung). Anda dapat mengompres menggunakan arcgis, gdal, apa pun yang Anda suka. Kompresi akan membuat Anda sekitar 23GB. Jangan membuat piramida / ikhtisar dulu. Untuk kompres, Anda dapat menggunakan program gis yang Anda suka, tapi saya suka menggunakan gdal jadi perintahnya adalah ini:

gdalwarp -multi -wm 512 --config  GDAL_CACHEMAX 512 -co compress=jpeg -co tiled=yes -co jpeg_quality=70 -co PHOTOMETRIC=YCBCR -co INTERLEAVE=PIXEL uncompressed.tif compressed.tif

Anda dapat dengan mudah membuat file kelelawar yang melewati semua tiff terkompresi Anda. Saya suka menggunakan gdalwarp untuk memampatkan citra saya alih-alih gdal_translate yang biasa, karena lebih cepat (menggunakan multi opsi untuk multi-core, dan -wm untuk banyak memori).

2) menangani sebagai gambar tunggal
Anda dapat membuat mosaik "virtual" menggunakan format gdal vrt. Ini kompatibel dengan arcgis, qgis, mapserver, dll. Tidak yakin tentang global mapper dan mapinfo. Format .vrt hanya satu file xml yang mencantumkan gambar Anda. Itu satu perintah untuk membuat:

gdalbuildvrt nameofmosaic.vrt compressed_tif_folder\*.tif

File ini berukuran beberapa kb.

3) visualisasi yang cepat
Anda harus membangun piramida / ikhtisar. Cukup gunakan perangkat lunak pilihan Anda untuk ini. Menjaga dengan alat gdal Anda dapat:

gdaladdo -ro -r average --config COMPRESS_OVERVIEW JPEG --config JPEG_QUALITY_OVERVIEW 70 nameofmosaic.vrt 2 4 8 16 32 64 128

Ini akan memakan waktu lama. Bersiaplah untuk menunggu 2 hingga 3 hari pemrosesan tanpa henti.

4) menggunakan mosaik
Muat mosaik virtual dalam program gis Anda. Ini akan cepat karena membaca ikhtisar yang hanya dalam 1 file seperti seorang ecw. Ketika Anda memperbesar resolusi nyata dari gambar Anda, maka hanya beberapa yang visibile dari gambar yang dikompresi akan dibaca, dan itu juga sangat cepat.

5) menangani area tanpa data Anda yang berwarna hitam.
Anda memiliki 3 solusi untuk ini: i) menggunakan format file yang menangani nodata, yang akan menjadi rumit; atau ii) menggunakan pita alpha atau iii) file topeng. Anda dapat membuat pita alpha secara otomatis pada langkah 2 dengan memberi tahu GDAL bahwa Anda ingin area nodata berada di pita alpha - Anda cukup menambahkan opsi -addalpha:

gdalbuildvrt -addalpha nameofmosaic.vrt compressed_tif_folder\*.tif

Masalah dengan pita alpha adalah bahwa mereka kompres buruk. Jadi ikhtisar Anda akan menjadi lebih besar. Jika tidak apa-apa dengan Anda maka Anda sudah selesai.

Jika Anda ingin membuat file mask, maka itu sedikit lebih rumit. Dan saya menemukan ini tidak sesuai dengan pertanyaan ini.

Jadi harap ini membantu. Anda dapat menemukan info tentang alat gdal dengan googling. Banyak hal menarik di sekitar.


1
Pos yang bagus. Harap perhatikan gdalwarp ketika benar-benar membengkokkan (misalnya memproyeksikan, resampling, dll) memiliki masalah lama dengan menciptakan output yang jauh lebih besar dari yang dibutuhkan ketika kompresi digunakan. Dalam hal ini lebih baik untuk melewatkan kompresi pada fase gdalwarp dan menindaklanjutinya dengan gdal_translate -co compress=xxxsetelahnya. Ini bukan masalah jika hanya digunakan sebagai penerjemah (seperti yang disarankan di sini).
matt wilkie

1
Terima kasih. Saya pikir masalah itu terpecahkan karena saya telah memproyeksikan dan mengompresi pada saat yang sama belakangan ini dan mendapat rasio yang baik.
Duarte Carreira

5

Input 550gb data TIF mudah ditangani oleh satu file ECW. Kami memiliki banyak pelanggan yang mengompres kumpulan data yang jauh lebih besar dari ini, jadi jangan berpikir formatnya tidak mampu di area ini.

Strategi Anda membagi proyek menjadi ubin kecil untuk meminimalkan area nol juga merupakan pendekatan yang baik untuk dilakukan dengan versi format saat ini karena akan mengurangi waktu kompresi

Contoh Anda termasuk referensi ke data input 16bit yang tidak ditandatangani. Saya akan merekomendasikan pengubahan ukuran ke 8bit jika memungkinkan (tergantung pada kebutuhan Anda)

Tolong jelaskan mengapa Anda tidak dapat memproses proyek Anda menggunakan IMAGINE atau ERMapper karena tanpa informasi ini saya tidak dapat membantu Anda. Atau lebih baik lagi hubungi tim dukungan lokal

Harap diperhatikan bahwa dengan menggunakan format ESRI Mosaic Dataset, jawaban yang tidak disebutkan di atas adalah persyaratan untuk menghasilkan lapisan piramida / ikhtisar. Tanpanya kinerja akan sangat menderita. Kemungkinan Anda dapat membuat file setara ECW dalam jumlah waktu yang sama tetapi telah meningkatkan kualitas gambar dan persyaratan penyimpanan keluaran yang jauh lebih kecil.


1
Berdasarkan informasi baru yang diberikan, area Null ECW tidak ditampilkan dengan benar di ESRI karena mereka masih mengemas v3 SDK yang sangat lama yang tidak memiliki dukungan saluran opacity (hanya diabaikan). Untuk memperbaikinya, kunjungi erdas.com dan unduh ArcGIS ECW Plugin yang akan menginstal v4 SDK dengan dukungan opacity dan ECW akan menampilkan hal yang sama seperti pada perangkat lunak Globalmapper dan ERDAS
Chris Tweedie

Hanya untuk dicatat bahwa plugin ini memperbaiki "masalah" di ArcGIS tetapi kemudian memecah tampilan Mapinfo ecw dan karenanya harus dihapus instalasinya pada mesin yang memiliki keduanya.
GeorgeC

4

Meskipun jelas lebih baik menggunakan salah satu opsi lain yang disebutkan, Anda dapat mencoba yang berikut:

gdalbuildvrt index.vrt *.tif
gdal_translate -of "GTiff" -co "COMPRESS=LZW" -co "TILED=YES" -co "BIGTIFF=YES" index.vrt out.tif

Ini membangun format virtual GDAL dan kemudian mengonversi ke GeoTiff tunggal.


3

Kedengarannya cukup akrab bagi saya, kami juga menghasilkan File ECW tunggal besar dari 500 juga 1TB File TIF. Tapi saya tidak akan bertahan di ArcGIS (ArcObjects dan Geoprocessing Engine), karena tidak dapat membuat mosaik jumlah ini dengan cara yang dapat diandalkan. Jika Anda ingin tinggal di Dunia ESRI, saya akan merekomendasikan potongan mosaik sekitar 50 GB atau bahkan lebih kecil sekaligus ke Raster Dataset yang disimpan dalam File Geodatabase. Alat mosaik cenderung macet setelah beberapa saat, jadi itu ide yang baik untuk membiarkan ArcGIS membebaskan memori setelah beberapa GigaBytes.

Kemungkinan lain adalah Menggunakan Enterprise atau Workgroup SDE Geodatabase. Dengan SDE Anda mendapatkan Alat Command Line SDE kuno, yang dibangun di atas arsitektur C ++ yang kuat selain dari hal-hal ArcObjects yang tidak dapat diandalkan. Dengan perintah "sderaster -o mosaic ...", Anda dapat melakukan mosaik ke RasterDataset hingga toko Database Anda penuh. Ada juga Perintah untuk membangun piramida dan statistik untuk RasterDataset, jika tidak sangat berguna, karena sebagian besar Klien tidak dapat menyimpan citra dalam memori ketika membacanya, seperti yang disebutkan di atas. Tapi Piramida (sebenarnya pengindeksan spasial) harus menyelesaikan masalah ini.

Tetapi solusi ini tidak membantu Anda dengan MapInfo pasti. Anda menyebutkan bahwa Anda sudah mencoba ERDAS Mapper. Itu juga Alat yang saya inginkan. Kami sudah merapikan 16.000 file TIF, masing-masing berukuran 50 MB, yang berukuran 800GB. Kemudian kami mengompresnya menjadi satu ECW dengan rasio kompresi 1:20 yang menghasilkan 30GB ECW File. Saya ingin tahu bahwa ini tidak berfungsi untuk Anda ...

Setidaknya seluruh proses itu berjalan pada single core Pentium 4 1,6 GHz dengan 2 GB RAM, sehingga perangkat keras seharusnya tidak menjadi masalah. Kami menggunakan Windows Server 2003 (atau Sistem Operasi server lain) karena lebih baik menggunakan sumber daya harware. Perlu diingat, bahwa seluruh proses kompresi membutuhkan banyak waktu. Mesin kami bekerja sekitar 5 minggu pada file tunggal itu, dan karena kadang-kadang crash juga kami harus melakukan ini beberapa kali, tetapi pada akhirnya kami mendapatkan File ECW kami.

Saya tidak tahu sistem atau mekanisme lain untuk menyimpan raster dalam jumlah besar dengan cara yang sebagian besar vendor netral. Semua cara yang disebutkan di atas sangat spesifik ESRI. Setidaknya dengan Oracle RASTER dan implementasi yang hampir serupa di PostGIS, ada dua varian berbasis database yang, juga tidak vendor netral tetapi dibuka melalui SQL / MM Interface.

Semoga ini bisa membantu sedikit.


Terima kasih atas dorongan Anda - itu berhasil pada dataset yang lebih besar. Dengan ERDAS - masalah bukan hanya ukuran dataset yang menyebabkan kerusakan tetapi juga area data tidak didefinisikan dengan benar. Lihat pertanyaan terbaru. Sudahkah Anda mendokumentasikan proses yang Anda gunakan di ERDAS dan dapatkah Anda membagikannya?
GeorgeC
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.