Geotiff "veri yok" rengini siyah yerine beyaz / saydam olarak nasıl değiştirebilirim?


17

Haritaların geoserver ile görüntülendiği bir geonetwork düğümüne dahil edilmek üzere veri hazırlıyorum.

Sorun "veri" olmayan hücrelerin geotiff içinde siyah olarak görüntüleniyor ve ben renk beyaz veya şeffaf olarak ayarlanmasını istiyorum olmasıdır.

ArcView kullanıyorum ve Uzamsal Analist veya 3D analiste erişimim yok.

Yeni bir sld dosyası atamak istemiyorum ve şu anda ArcGIS Masaüstü dışa aktarırken "Use colormap" kullanıyorum.


Yanıtlar:


7

Kavram olarak, hangi piksel değerlerinin veri içermeyen hücreleri temsil ettiğini bulmanız ve ardından renk tablonuzdaki KIRMIZI, YEŞİL, MAVİ (RGB) değerleri o hücre değeri için 255,255,255 olarak atamanız gerekir.

Arc'da bunu yapmak için uygun lisansa sahip değilseniz, gdal_translate aracını (gdal / ogr komut satırı araçlarından biri) kullanabilirsiniz.

  1. tif'inizin renk tablosunu XML dosyası olarak dışa aktarın.
    gdal_translate -of VRT myImage.tif outColorTable.vrt

  2. .vrt dosyasını bir metin düzenleyicide açın ve veri piksellerinizin değerine ilişkin girişi bulun. Hücre değerleri için bir dizin numarası olmadığından, doğru girişe geri saymanız gerekir.

  3. bu değeri olmak <Entry c1="255" c2="255" c3="255" c4="255"/>

  4. şimdi, yeni renk tablosuna dayalı yeni bir tif oluşturun
    gdal_translate outColorTable.vrt newCorrected.tif

(aşağıdaki yoruma göre örnek eklendi)

Komutu yukarıdaki # 2 öğesinde çalıştırıp .vrt dosyasını bir metin düzenleyicisinde açtığımda XML içeriğini görüyorum.

Dosyanın bir kısmı buna benzeyen çizgiler içeriyor, çoğunu kesiyorum.


Merhaba DavidF. Teşekkürler FWTools (acemi için gezinmek biraz daha kolay) ile yapmaya çalışıyorum cevap fot. Ama ben not defteri ile dosyayı açtığınızda onların şimdi ayırt edilebilir kelimeler ve çoğunlukla rastgele (kod) metin oluşur çünkü vrt dosyasında "değer" bulmakta sorun yaşıyorum. Yanlış bir şey mi yapıyorum? - herhangi bir ek yardım büyük takdir.
enmapping

@ user1106 - Yukarıdaki komutları tekrar deneyin, çıktı biçimi seçeneğini hariç tutmuştum. Şimdi çalışmalı!
DavidF

9

Bunun için küçük bir gdal python senaryosu yazdım, gdalsetnull.py , yeni bir raster oluşturmadan belirtilen raster değerini NODATA'yı ayarlamak için basit bir komut satırı programı. GDAL'yi pencerelere kurmanın en kolay yolu OSGeo4W'dir . Örnekler:

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

Bazı işlem yükü ve yerinde düzenleme yerine yeni bir görüntü oluşturmak sakıncası yoksa, sadece meta verileri güncellemek yerine hücre değerlerini değiştirmeye izin veren gdal_calc de vardır .

Sıfır ve altındaki değerleri null olarak ayarlayın:

gdal_calc.py -A input.tif --outfile=result.tif --calc="A*(A>0)" --NoDataValue=0

Güzel Matt!
DavidF

Bu gerçekten soruyu cevaplıyor mu? (Güzel!) Betiğiniz NULL olarak bir renk ayarlayacaktır, ancak sanırım hala WMS uygulamasına özgüdür, ki bu renkte (saydam bir renk de diyelim) NODATA değerleri işlenir.
alfonx

@alfonx, evet olarak kaydedilen bir hücre ile benim olduğumunodata söyleyen bir hücre arasında bir fark vardır ve uygulama, bu değerin mi yoksa başka bir değerin mi göz ardı edilmesi gerektiğine karar verir. ArcGIS, gdalsetnull.py sonuçlarına saygı duyar; GeoServer ile deneyimim yok. 0
matt wilkie

1
Tekrar taşınmış gibi görünüyor, şimdi: github.com/maphew/maphew-gcode-archive/blob/…
Steve Bennett

bağlantı düzeltildi, not için teşekkürler! @SteveBennett bu meta yorumları şimdi silmeliyiz.
matt wilkie

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.