QGIS'de benzersiz değerleri kullanarak raster otomatik olarak stil?


17

ArcMap'te, bir raster için benzersiz değerleri otomatik olarak hesaplamak ve sonra her bir benzersiz değere farklı bir stil uygulamak mümkündür (1. resme bakın).

Ancak, QGIS, "Tek bant sözde renk" stilini kullanırken stil için değerleri elle eklemek zorunda (2. resme bakın). ArcMap gibi benzersiz değerleri otomatik olarak doldurmanın bir yolu var mı?

ArcMap:

ArcMap raster sembolojisi benzersiz değerleri

QGIS (değer listesini benzersiz değerlerle otomatik olarak nasıl doldururum?):

QGIS raster stlying


Sınıflandırma sağ tarafta. İhtiyacınız olan seçenekler olduğu için bunu neden Ekran Görüntüsü'nizde kestiğinizden emin değilsiniz ... Sınıf sayısını maksimum - minimum farkınız +1 olarak ayarlayın. Modu aynı aralıkta kullanın. Sorun verileriniz bitişik olmadığında, kullanılmayan değerleri silmeniz gerekebilir.
Mat

@Matte Gerçekten de, genellikle büyük boşluklarla bitişik olmayan verilerimiz vardır. Bu nedenle, raster içinde olmayan değerleri silmek pratik değildir (örneğin, sadece tek değer 1 ve 1000000'dür), bir çok LOT sayısını manuel olarak silmeniz gerekir). Artı, bu raster içindeki benzersiz değerlerin bazılarının a priori bilgisini varsayar ...
Peet Whittaker

Yanıtlar:


3

Hala bunu arayanlar için. QGIS 3'e benzersiz raster değerleri eklendi. "Nyall Dawson tarafından yaklaşık 1 yıl önce eklendi

[FEATURE] Raster katmandaki benzersiz değerleri kullanarak paletlenmiş oluşturucunun sınıflandırılmasına izin ver

Paletli oluşturucuyu kullanarak arazi kullanımı sınıfları gibi ayrık rasterleri biçimlendirmenin kolay bir yolunu ekler. Paletlenmiş oluşturucuyu seçin, bir bant seçin ve ardından "Benzersiz Değerler Ekle" düğmesine basın. Benzersiz piksel değerleri katmandan getirilir ve seçili renk rampası kullanılarak her birine bir renk atanır. "


7

İşte size yardımcı olabilecek bir yaklaşım. GRASS aracı r.report, bir raster katmanındaki her bir benzersiz değer için temel bir istatistik hesaplayabilir:

resim açıklamasını buraya girin

Çıktıya şöyle görünen düz bir txt dosyası yazılabilir (sol: benzersiz değerler, sağ: her değerin kapsadığı alan):

+-----------------------------------------------------------------------------+
|                      Category Information                        |    square|
|   #|description                                                  |     miles|
|-----------------------------------------------------------------------------|
|1111| . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . |  1.249845|
|1113| . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . |  0.062666|
[...]
|3412| . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . |  0.013926|
|4111| . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . |  4.713902|
|4211| . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . |  0.083555|
|4212| . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . |  0.135777|
|-----------------------------------------------------------------------------|
|TOTAL                                                             | 17.048727|
+-----------------------------------------------------------------------------+

Aşağıdaki coğrafi işlem komut dosyası bu metin dosyasını bir girdi olarak alır ve raster katmanı için uygun bir oluşturucu (rasgele renklerle) ayarlar (Esinlenerek LAWHEAD, J .: QGIS Python Programming Cookbook, s. 135):

##giswg=group
##thexml=file
##theraster=raster
from random import randint
from PyQt4.QtGui import QColor
from qgis.core import *
myraster = processing.getObject(theraster)
infile = open(thexml, 'r')
univalues = [l.split('|')[1] for l in [f for f in infile.readlines()][4:-4]]
s = QgsRasterShader()
c = QgsColorRampShader()
c.setColorRampType(QgsColorRampShader.EXACT)
i = []
for u in univalues:
    i.append(QgsColorRampShader.ColorRampItem(float(u), QColor('#%06x' % randint(0, 2**24)), u))
c.setColorRampItemList(i)
s.setRasterShaderFunction(c)
ps = QgsSingleBandPseudoColorRenderer(myraster.dataProvider(), 1, s)
myraster.setRenderer(ps)

QGIS'in efsanevi işleme yetenekleri sayesinde, bu ikisini grafik modelleyicide bir araya getirebilir ve yüklü bir raster katmanını seçmek için bir raster parametresi ekleyebilirsiniz:

resim açıklamasını buraya girin

Modeli kaydettikten sonra, işleme araç kutusunda çift tıklatarak normal bir araç gibi kullanılabilir:

resim açıklamasını buraya girin

Sonuç şöyle görünür (rasterleştirilmiş natura2000 veri kümesinin üst sınırı):

resim açıklamasını buraya girin

Veya katman özelliklerinde:

resim açıklamasını buraya girin

Bunun kullanıcı deneyiminde biraz iyileştirmeye ihtiyacı olduğunu düşünüyorum, ancak bu ilk adım.


1
en iyi kullanıcı deneyimi değil ama paylaştığınız için teşekkür ederiz
RutgerH

Sadece kullanıcı arayüzü olarak oluşturulan aracı görmekle, kullanıcı deneyiminde yanlış bir şey olmadığını düşünüyorum. Ve kim bilir, ESRI Geoprocessing araçlarında sahnenin arkasında neler oluyor ...
Jochen Schwarze
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.