Birkaç raster daha düzgün hale getir


10

Sürekli bağlı olması gereken bazı rasterleri ithal ettim ama bunun yerine aralarında bir çeşit sınırlandırılmış ızgara oluşturuyorlar. Bunun münferit rasterler arasında bir kalibrasyon meselesi olduğunu varsayabilirim, ancak veriyi nasıl uygulayacağından emin değilim.

Daha önce böyle bir şey yaşamış olabilirsiniz ve belki de olası tüm çözümü bilebilirsiniz, böylece tüm rasterlerin toplamı daha pürüzsüz olur.

Bunların hepsinin coğrafi olarak bağlantılı olması gerekiyordu. Dolayısıyla meydanın 'sınırlarının' sıkıntısı.

QGIS'i pencerelerde kullanıyorum.

resim açıklamasını buraya girin

Yanıtlar:


11
  1. Rakipleri bir araya getirmeyi deneyebilirsiniz:

    • Araç çubuğundan:

      Raster> Diğer> Birleştir

    • İşleme Araç Kutusu'ndan:

      GDAL / OGR> Diğer> Birleştir

    • GDAL konsolundan:

      gdal_merge.py -o merged.tif input1.tif input2.tif
      

  1. Veya sanal bir tarama oluşturun:

    • Raster> Diğer> Sanal Raster Oluştur

1
Sanal Raster oluşturmak için +1. Bu, tek bir birleştirilmiş görüntü gibi davranacak çok küçük bir dosya oluşturur.
Alexandre Neto

@AlexandreNeto - Teşekkürler, ayrı dosyalara kıyasla dosya boyutundaki farkın oldukça şaşırtıcı olabileceğini fark ettim =)
Joseph

Birleştirme veya sanal tarama oluştururken, işlemin başlayamadığını bildiren bir hata alıyorum. Porgram yok ya da doğru haklara sahip değilim. Bu nedenle, tüm rasterleri Katmanlar menüsüne yükleyip oradan seçerek bir birleştirme veya inşa etmeyi başardım. Gdal_merge.bat komut satırı çok uzun olabilir, en azından inputx.tif işlemi 1000 x (farklı rasters) değerinde askıya alabilir
MichaelR

@Michael - Garip bir hata ama sonuçlarınızı almak için başka bir yol bulduğunuza sevindim :)
Joseph

1
@Michael Komut satırında gdalbuildvrt, bir dosya listesi içeren bir dosyanın dosya adıyla besleyebilir, daha sonra birçok görüntü dosyasını argüman olarak verebilirsiniz: gdalbuildvrt -input_file_list my_liste.txt doq_index.vrt
Detlev

3

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()
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.