Daha çox

PyQGIS Paletlənmiş Raster Qatlarını Boz Ölçüyə dəyişir

PyQGIS Paletlənmiş Raster Qatlarını Boz Ölçüyə dəyişir


Bir sıra rəngli geoTif (idxal xəritələri) idxal edən və düzgün işləyən bir plagin yazdım, ancaq yüklədikdən sonra bunları Gri tonlama olaraq göstərmək çox gözəl olardı.

GeoTifs paletli şəkillər kimi yüklənir (Render Növü altında) və Grayscale -i üç seçimdən hər hansı birinə (yüngüllük, parlaqlıq, ortalamaya görə) təyin etmək üçün təbəqə xüsusiyyətlərini əl ilə dəyişdirdiyiniz zaman göstərdikləri kimi görmək istəyirəm.

Layer.setDrawingStyle ('PalettedSingleBandGray') kimi bir çox qəribə görünüş verən görüntülər də daxil olmaqla işləməyən bir çox şeyi sınadım - Düşünürəm ki, yalnız bir rəngli kanaldakı məlumatlardan istifadə edirsiniz?

Bu Grayscale seçimlərinin QGIS üçün nisbətən yeni olduğunu başa düşürəm və buna görə də pyQGIS vasitəsi ilə həyata keçirilməsi sadə olmaya bilər, amma indi bu işlə tamamilə məşğulam.

Xunilk -in cavabından sonra, bu işlə daha məşğul oldum və bu işləsə də, ardınca getdiyimi etmir.

Bir rəng tif üçün xunilk skriptini işə salmaq:

İstədiyiniz nəticə (şəkil 3 -dəki parametrlər):

Gri tonlamanın qurulması və ya şəkil 3 -də olduğu kimi görüntünün desaturlaşdırılması 2 -ci şəkildəki kimi nəticə verir.

Vacibdir ki, SingleBandGrayRenderer istifadə edildikdə (əl ilə və ya skript vasitəsilə) hətta yuxarıdakı şəkil 3 -də olduğu kimi boz rəngli seçimin əl ilə seçilməsi də şəkil 1 kimi görünən bir nəticə verir.

QgsPalettedRasterRenderer istifadə edərək müvafiq göstərmə variantları ilə yüklənməlidir?


Növbəti ssenari mənim üçün işləyir.

layer = iface.activeLayer () myGrayRenderer = QgsSingleBandGrayRenderer (layer.dataProvider (), 1) layer.setRenderer (myGrayRenderer) renderer = layer.renderer () provider = layer.dataProvider () layer_extent = layer.extent () uses_band = render. usesBands () myType = renderer.dataType (uses_band [0]) stats = provider.bandStatistics (uses_band [0], QgsRasterBandStats.All, layer_extent, 0) myEnhancement = QgsContrastEnhancement (myType) Contrast_enhancementEnhanceCentChenTM Doğru) myEnhancement.setMinimumValue (stats.minimumValue) myEnhancement.setMaximumValue (stats.maximumValue) layer.renderer (). SetContrastEnhancement (myEnhancement) layer.triggerRepaint ()

Bir obyekti dəyişdirmək üçün sınadım QgsSingleBandPseudoColorRenderer sinif (sizin halda a QgsPalettedRasterRenderer obyekt) a QgsSingleBandGrayRenderer sinif obyekti.

Python Konsolunda skript işləmədən əvvəl:

Skript işə salındıqdan sonra:

Redaktə Qeyd:

Ssenarini eyni raster və paletlənmiş render növü ilə sınadım (növbəti şəklə baxın) və o da işləyir.


Videoya baxın: QGIS Python PyQGIS - Loading and symbolizing raster layers