Bagaimana cara mengubah warna "tidak ada data" geotiff menjadi putih / transparan daripada hitam?

17

Saya menyiapkan data untuk dimasukkan ke dalam simpul geonetwork, di mana peta ditampilkan melalui geoserver.

Masalahnya adalah bahwa sel-sel yang memiliki "tidak ada data" ditampilkan sebagai hitam di geotiff dan saya ingin warna diatur menjadi putih atau transparan.

Saya menggunakan ArcView dan tidak memiliki akses ke Spatial Analyst atau analis 3D.

Saya lebih suka tidak harus menetapkan file sld baru dan saat ini menggunakan "Gunakan colormap" saat mengekspor dari ArcGIS Desktop.

enmapping
sumber

Jawaban:

7

Dalam konsep, Anda perlu mencari tahu nilai piksel yang mewakili sel tanpa data dan kemudian mengedit tabel warna Anda untuk menetapkan nilai RED, GREEN, BLUE (RGB) dalam tabel warna menjadi 255.255.255 untuk nilai sel itu.

Jika Anda tidak memiliki lisensi yang sesuai untuk melakukan ini di Arc, Anda bisa menggunakan alat gdal_translate (salah satu alat commandline gdal / ogr)

  1. ekspor tabel warna untuk tif Anda sebagai file XML.
    gdal_translate -of VRT myImage.tif outColorTable.vrt

  2. buka file .vrt dalam editor teks dan temukan entri untuk nilai piksel tanpa data Anda. Tidak ada nomor indeks untuk nilai sel, jadi Anda harus menghitung mundur ke entri yang benar.

  3. edit nilai ini menjadi <Entry c1="255" c2="255" c3="255" c4="255"/>

  4. sekarang, buat tif baru berdasarkan tabel warna baru
    gdal_translate outColorTable.vrt newCorrected.tif

(contoh ditambahkan berdasarkan komentar di bawah)

Ketika saya menjalankan perintah pada item # 2 di atas dan membuka file .vrt di editor teks, saya melihat konten XML.

Bagian dari file termasuk baris yang terlihat seperti ini, saya telah memotong sebagian besar dari mereka.

DavidF
sumber
Hai DavidF. Terima kasih untuk jawaban yang saya coba lakukan dengan FWTools (sedikit lebih mudah dinavigasi untuk pemula). Tetapi saya mengalami kesulitan menemukan "nilai" dalam file vrt karena ketika saya membuka file dengan notepad mereka sekarang kata-kata yang dapat dilihat dan itu terutama terdiri dari teks (kode) acak. Apakah saya melakukan sesuatu yang salah? - bantuan tambahan sangat dihargai.
memulai
@ user1106 - Coba lagi perintah di atas, saya telah meninggalkan opsi format output. Itu seharusnya bekerja sekarang!
DavidF
9

Saya menulis skrip python gdal kecil untuk ini, gdalsetnull.py , program baris perintah sederhana untuk mengatur nilai raster yang ditentukan NODATA, tanpa membuat raster baru. Rute termudah untuk menginstal GDAL di windows adalah melalui OSGeo4W . Contoh:

python gdalsetnull.py foobar.tif 0            # pure black is transparent
python gdalsetnull.py foobar.tif 0 255 0      # pure green is
python gdalsetnull.py foobar.tif 50 23 77 100 # arbitrary value in 4 band image

Jika Anda tidak keberatan memproses overhead dan membuat gambar baru daripada mengedit di tempat ada juga gdal_calc yang memungkinkan sebenarnya mengubah nilai sel daripada hanya memperbarui metadata.

Tetapkan nilai nol dan di bawah menjadi nol:

gdal_calc.py -A input.tif --outfile=result.tif --calc="A*(A>0)" --NoDataValue=0
matt wilkie
sumber
Matt melakukannya dengan baik!
DavidF
Apakah ini benar-benar menjawab pertanyaan? Skrip (bagus!) Anda akan mengatur warna ke NULL, tapi saya kira itu masih khusus implementasi WMS, di mana warna (katakanlah transparan juga warna) nilai-nilai NODATA dirender.
alfonx
@alfonx, ya ada perbedaan antara sel yang dicatat sebagai nodatadan sel yang mengatakan saya0 dan aplikasi memutuskan apakah itu atau beberapa nilai lain harus diabaikan. ArcGIS menghormati hasil gdalsetnull.py; Saya tidak punya pengalaman dengan GeoServer.
matt wilkie
1
Sepertinya sudah dipindahkan lagi, sekarang di: github.com/maphew/maphew-gcode-archive/blob/…
Steve Bennett
tautan diperbaiki, terima kasih atas catatan! @SteveBennett kita harus menghapus komentar meta ini sekarang.
matt wilkie