Açık kaynak araçlarını kullanarak uydu görüntülerinin görüntü sınırını / kapladığı alanı hesaplamak


10

Ben burada gösterildiği gibi birkaç tek katmanlı raster görüntü, kapsam / sınırlama kutusu, ancak nodata değerleri olmayan alan çokgen anahatları oluşturmak gerekir: Raster ayak izlerini gösteren şekil dosyası oluşturma? .

Yukarıdaki sorunun cevabında, Image Boundary eklentisinden bahsedildi, ancak Ubuntu üzerinde çalışan QGIS 1.8.0 Lisboa'da bulamıyorum.

Araç hala kullanılabilir mi?

Değilse, bunu ArcMap ile değil, gdal, R, QGIS, GRASS veya benzeri açık kaynak araçlarını kullanarak yapmanın bir yolu var mı?


Yanıtlar:


4

Eklentileri olan eski havuzu Resmi Depo'ya ekleyebilirsiniz.

http://pyqgis.org/repo/contributed

Görüntü sınır eklentisi geçerli pikseli hesaplama seçeneğine sahiptir, ancak görüntünün tam sahne, CBERS veya Landsat gibi, bu işlemin ilk 4 köşeyi hesaplaması gerekir. Görüntünün, görüntüleme yapılmayan alan için ZERO değerine sahip nodata olması gerekir (uydu sensörü tarafından taranır).

Image Boundary'nin yazarı


Merhaba @lmotta, depo bağlantısı için teşekkürler. Şu anda üzerinde çalıştığım görüntülerin tümü, NA değerlerine (veya QGIS'deki değer aracına göre -3.4e + 38) sahip SAR görüntüleridir. Tek seçenek olarak SIFIR olması yerine, nodata değerini araçta manuel olarak ekleyebilirseniz, harika olurdu, aksi takdirde, ilk olarak NA değerlerime sıfır yeni değerler vermek için R'de bir komut dosyası çalıştırabilirim. Yine de harika bir araç, teşekkürler!
Spib

Görüntü Sınırı için yeni bir havuz var mı? Sağladığınız bağlantı 404'tür
Aaron

Görüntü Sınırı için belgeler bulabileceğimiz herhangi bir yer var mı?
Loonuh

12

Sonunda bunu yapmanın bir yolunu buldum:

Aşama 1: gdalwarp -dstnodata 0 -dstalpha -of GTiff foo1 foo2

Bu iki önemli şey yapar: hedef Veri Yok (kenarlık dışı) değerlerini 0 olarak ayarlar ve bir alfa bandı oluşturur.

Adım 2: gdal_polygonize.py foo2 -b 2 -f "ESRI Shapefile" foo3

İkinci adım, adım 1'de oluşturulan alfa bandını (bant 2) kullanır ve bu banttan bir şekil dosyası oluşturur.

Bu, daha sonra tam taslaklar oluşturmak için birçok resminiz varsa, bir bash betiğinde kolayca yazılabilir.  


Mükemmel, bu çözüm herhangi bir eklenti veya yazılıma dayanmaz. NoData'ya duyarlı raster ayak izleri oluşturmak, olması gerektiği gibi basit olmayan CBS görevlerinden biridir.
Charlie Parr

Bu yöntemi kullandığımda, birlikte gruplandırılmış farklı renkleri temsil ettiğini düşündüğüm çokgenlerle dolu bir şekil dosyasıyla sonuçlanıyorum. Bunu nasıl önleyebilirim ve sadece birkaç çokgenle evet verilerini temsil edebilirim?
Loonuh

5

Kullandığım gdal_translateolarak önerilen GDAL proje tarafından.

gdal_translate -b mask -of vrt -a_nodata 0 test.tif test.vrt
# Note the  -a_nodata 0 doesn't seem to work when the mask is input, so do another pass
gdal_translate -b 1 -of vrt -a_nodata 0 test.vrt test2.vrt
gdal_polygonize.py -q  -8 test2.vrt -b 1 -f "ESRI Shapefile" testdata.shp

resim açıklamasını buraya girin


1
GDAL gövde sürümü ile kaynak görüntü karşı doğrudan gdal_polygonize kullanmak artık mümkün osgeo-org.1560.x6.nabble.com/... . Yine de veri içermeyen çokgenleri kaldırmak için bir miktar temizleme gereklidir.
user30184

4

Image Sınır eklentisi de benim için çalışmadı, bu yüzden GDAL ile aynı yaklaşımı kullandım. Yine de benim için sadece ilk adımı değiştirdikten sonra çalıştı:

1. adım : gdalwarp -srcnodata 0 -dstalpha -of GTiff foo1 foo2

Landsat8 bant ile çalışıyorum (burada veri yok = 0) ve -dstnodatafonksiyonu kullanırken ben olsun:

band1 ile bir veri = 'hiç veri'
band2 tüm sahne / ölçüde için (Alpha bandı) = '255'

oysa -srcnodatafonksiyonu ile elde:

band1 ile bir veri = 'hiç veri'
band2 sonra geçerli veri sadece özü çokgen sağlar hiçbir veri = 'hiç veri' ve geçerli veri = '255' (alfa bant).

Bu davranışın arkasındaki nedeni tam olarak anlayamadım (alfa nasıl hesaplanır?), Ancak umarım bu aynı sorunla karşılaşan diğerlerine yardımcı olabilir.


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.