10 votos

Hacer varios rásteres más uniforme

Me han importado algunos rásteres que se supone que está continuamente conectado, pero en lugar de crear algún tipo de bordeada de red entre ellos. Me puede asumir que este es un tema de calibración entre los rásteres individuales, pero no estoy seguro de cómo ejecutarlo en un datawise manera.

Tiene a nadie experimentado algo como esto antes, y tal vez conocer una posible solución, de forma que el conjunto de todos los rásteres será más suave.

Todos estos se supone que geográficamente conectado. Por lo tanto el problema de las 'fronteras' de la plaza.

Estoy usando QGIS en windows.

enter image description here

11voto

Mue Puntos 2469
  1. Usted podría intentar la fusión de los rásteres en uno:

    • Desde la barra de herramientas:

      Raster > Varios> Correspondencia

    • Desde el Procesamiento de la caja de herramientas:

      GDAL/OGR > Varios > Correspondencia

    • Desde el GDAL de la consola:

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

    1. O construir una virtual raster:

      • Raster > Varios> Construir Virtual De Trama

3voto

hyty Puntos 91

La razón de esto mosaiked aspecto es que cada imagen es dibujada con escala de grises que se extendía desde la imagen min máximo de la imagen, y NO a través de la global min/max. Al combinar todas las imágenes en una sola, bueno, no es sólo uno de los min/max. Mismo es cierto para VRT, desde VRT trata a todas las imágenes como una sola (cuando usted tiene una mirada en la VRT archivo, verá el común de las estadísticas).

Cuando ambos, de mezcla y de VRT, no son una opción en la siguiente secuencia de comandos podría ayudar.

En el primer bucle que itera sobre todas las capas, recogiendo los rásteres y obtener una estimación de la min/max intervalo. Esta es la manera como QGIS propio trabajo. A partir de estos valores min/max para calcular el mundial de min/max

En el segundo bucle de la representadores para todas las capas ráster está configurada de forma tal que la escala de grises se extendió a través del intervalo global de min/max.

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

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X