Bu mozaikli görünümün nedeni, her bir görüntünün, min.den resme maksimuma ve gri min. Tüm görüntüleri bir araya getirdiğinizde, sadece bir dak / maks. Aynı şey VRT için de geçerlidir, çünkü VRT tüm görüntüleri bir olarak ele alır (VRT dosyasına baktığınızda ortak istatistikleri görürsünüz).
Her ikisi de, birleştirme ve VRT bir seçenek olmadığında, aşağıdaki komut dosyası yardımcı olabilir.
İlk döngüde tüm katmanları yineleyerek, rasterleri seçip min / maks aralıklarını tahmin ediyorum. QGIS'in kendisi gibi çalışır. Bu min / maks değerlerden küresel min / maks değerini hesaplarım
İkinci döngüde, tüm raster katmanları için oluşturucular, gri skala global min / maks aralığı boyunca gerilecek şekilde yapılandırılır.
gmin = 9999
gmax = -9999
layers = []
# loop over all layers, take rasters and estimate min, max values
for layer in iface.mapCanvas().layers():
if isinstance(layer, QgsRasterLayer):
# change percentages and sample size to increase or decrease accuracy
min_max = layer.dataProvider().cumulativeCut(1, 0.02, 0.98, theSampleSize=250000)
gmin = min(gmin, min_max[0])
gmax = max(gmax, min_max[1])
layers.append(layer)
# for all rasters create a single band gray scale renderer with
# gray scale stretched across the interval [gmin..gmax]
for rasterlayer in layers:
renderer = QgsSingleBandGrayRenderer(rasterlayer.dataProvider(), 1)
# take the first band (0)
ce = QgsContrastEnhancement(rasterlayer.dataProvider().dataType(0))
ce.setContrastEnhancementAlgorithm(QgsContrastEnhancement.StretchToMinimumMaximum)
ce.setMinimumValue(gmin)
ce.setMaximumValue(gmax)
renderer.setContrastEnhancement(ce)
rasterlayer.setRenderer(renderer)
# refresh canvas to show changes
iface.mapCanvas().refresh()