QGIS kullanarak raster kümeleme


10

Sınıflandırılmış bir raster her sınıf içindeki mekansal kümelere dayalı çokgenler dönüştürmek için bir yol arıyorum. Kümelerin geçerli sayılabilmesi için, sınıflardan birindeki hücrelerin minimum yüzdesinden oluşmaları gerekir.

Örneğin: "1" sınıfı% 70 (veya daha fazla) hücreden oluşan bir alan, alan diğer sınıflara ait% 30 hücrelerle karıştırılsa bile "1" sınıfı bir küme olarak kabul edilecektir. Kümeleme analizi bu nedenle aynı sınıftaki hücreler arasındaki mesafeye dayanmalıdır.

Başka bir seçenek, kümelemeyi, maksimum arama alanının tanımıyla birlikte belirli bir sınıftaki minimum sayıda hücreye dayandırmak olabilir.

Örneğin: Belirli bir alanda, küme olarak kabul edilebilmesi için 100 "sınıf 1" hücresi bulunmalıdır.  

Kümelemeyle ilgili araçların çoğu yalnızca vektörler için işe yarar görünmektedir. SAGA-alet Kümesi analizine baktım ama amacım gerçekten uygun değildi. Bunu çözmek için herhangi bir fikir veya yardımcı olabilecek başka araçlar var mı?


Rasteri bir vektöre dönüştürebilir ve vektör kümeleme araçlarını kullanabilirsiniz.
csk

Bu bir seçenek, ancak mümkünse raster formatında analiz yapmak çok daha kolay. Vektöre dönüşüm, rastercelllerin birleşiminde çok fazla ayrıntı kaybolduğu veya çok fazla noktanın da ele aldığı çokgenler üretecektir (Büyük veri kümesi).
Spiran

3
Bunun bir QGIS çözümü olmadığını biliyorum, ancak her mahalleye baktığı ve mahalledeki hücrelerin>% 70'inin bir sınıfa ait olduğu durumlarda yeni bir raster oluşturduğunuz için bir mahalle işlevi bulmak için python veya R kullanabilir misiniz? o hücre o sınıfa yeniden sınıflandırılır mı?
Liam G

Bu kesinlikle işe yarayabilir, teşekkürler! Python için yeniyim ama denemeye değer.
Spiran

Yanıtlar:


5

Bu sorunu "raster mantığı" nda ele almayı tercih ederseniz, dikkate alabileceğiniz birkaç filtre vardır. En iyi seçim, her bir sınıftaki piksellerinizin "arka plan" değerleriniz içindeki uzamsal dağılımına bağlı olacaktır, ancak işte iki potansiyel çözüm:

kaldırmak istediğiniz yamalarınız nispeten büyükse, o zaman "elek" (gdal_sieve.py tabanlı QGIS 3.2'deki raster> analiz> elek) kullanmalısınız.

Gdal_sieve.py komut dosyası, sağlanan eşik boyutundan (piksel olarak) küçük raster çokgenlerini kaldırır ve bunların yerini en büyük komşu çokgenin piksel değeri ile değiştirir. Sonuç mevcut tarama bandına geri yazılabilir veya yeni bir dosyaya kopyalanabilir.

"Tuz ve karabiber" efekti (farklı sınıflardan birçok izole piksel, ancak küçük yollar başına sadece birkaç piksel) gibi bir şey varsa, o zaman bir çoğunluk filtresi kullanmalısınız (örneğin GRASS> raster> r'den gelen ek araçlara gitmek. komşular> "mod" seçeneğini seçin) Bu filtrenin sınırlarınızı (hafifçe) etkileyeceğini unutmayın.

r.neighbors - Her hücre kategorisi değerini, çevresindeki hücrelere atanan kategori değerlerinin bir işlevi yapar ve yeni hücre değerlerini bir çıktı tarama haritası katmanında depolar

İsterseniz aynı filtreleri (Çoğunluk filtresi, eleme sınıfları) ve diğerlerini (morfoloji) SAGA araçlarında (SAGA> raster filtre) bulacaksınız.


Aslında bunu çözdüm. Temelde, çim komşuları analiz aracını yandaki bazı hesaplamalar ile birlikte kullanarak. Yine de çözüm göndermeyi unuttum, büyük Giriş radouxju için teşekkürler.
Spiran
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.