QGIS fusiona imágenes de teledetección enmarcadas en lotes

Para programar en QGIS para unir por lotes las imágenes de detección remota enmarcadas en una imagen completa, puede seguir los pasos a continuación:

1. Primero, asegúrese de que el entorno QGIS Python se haya instalado y configurado correctamente, y que se hayan importado las bibliotecas requeridas. Aquí está la parte de importación del código:


desde qgis.core importar QgsProject, QgsRasterLayer, QgsRectangle, QgsMapSettings, QgsVectorLayer
 

2. Defina la carpeta y el patrón de nombre de archivo a usar, y el nombre de archivo para la imagen unida de salida final. el código se muestra a continuación:


importarnos

# La ruta de la carpeta donde se encuentra la imagen enmarcada
input_folder = '/path/to/input_folder'
# El patrón de nombre de archivo de la imagen enmarcada (asumiendo que el patrón de nombre de archivo es IMG_xxx.tif)
filename_pattern = 'IMG_{}.tif '
# La imagen cosida de salida final Nombre del archivo
output_filename = 'merged_image.tif'
# Guardar ruta de la imagen cosida de salida final
ruta_salida = '/ruta/a/carpeta_salida/' + nombre_archivo_salida
 

Modifique la ruta anterior y el patrón de nombre de archivo de acuerdo con la situación real.

3. Cree un objeto de configuración de mapa vacío (`QgsMapSettings`) para definir la extensión y resolución de la imagen compuesta. el código se muestra a continuación:


# Crear un objeto de configuración de mapa
map_settings = QgsMapSettings()
# Establecer la resolución de la imagen de salida (unidad: m/píxel)
resolución = 10.0
map_settings.setOutputDpi(300) # DPI de la imagen de salida

# Definir el rango de imágenes sintéticas
xmin = 0
ymin = 0
xmax = 10000 # Personalizar el rango apropiado
ymax = 10000 # Personalizar la
extensión del rango apropiado = QgsRectangle(xmin, ymin, xmax, ymax)
# Establecer el rango del objeto de configuración del mapa y resolución
map_settings.setExtent(extensión)
map_settings.setLayers([capa]) #Agregue la capa al objeto de configuración del mapa (si se requiere que el renderizador dibuje)

# Calcular el tamaño de la imagen compuesta (ancho y alto)
ancho = int(extensión.ancho() / resolución)
alto = int(extensión.alto() / resolución)
map_settings.setOutputSize(QSize(ancho, alto))
 

4. Cree un objeto QgsProject y cargue la imagen enmarcada como una capa ráster. el código se muestra a continuación:


# Crear
proyecto de objeto de proyecto = QgsProject().instance()

# Recorra el archivo de imagen enmarcado
para i en el rango (1, num_of_images + 1): # Modifique la condición del ciclo de acuerdo con la situación real
    # Cree la ruta del archivo de imagen enmarcado
    file_path = os.path.join(input_folder, filename_pattern.format (i))

    # Cargue la imagen enmarcada como una
    capa de capa ráster = QgsRasterLayer(file_path, 'Image {}'.format(i))
    project.addMapLayer(layer)

# Establecer capas en el objeto de configuración del mapa
map_settings.setLayers(project.mapLayers().values())
 

Modifique la condición del bucle y la ruta del archivo en el código de muestra de acuerdo con la situación real.

5. Llame a `QgsMapRendererCustomPainterJob` para convertir la imagen enmarcada en una imagen completa. el código se muestra a continuación:


# Crear un
trabajo de objeto de trabajo de dibujo = QgsMapRendererCustomPainterJob(map_settings)

# Ejecute la
imagen del trabajo de pintura = QImage(map_settings.outputSize(), QImage.Format_ARGB32_Premultiplied)
image.fill(Qt.transparent)
pintor = QPainter(imagen)
trabajo.render(pintor)
pintor.end()
 

6. Guarde la imagen sintética en la ruta especificada. el código se muestra a continuación:


# Guarda la imagen sintética
image.save(output_path)
 

Después de completar los pasos anteriores, obtendrá una imagen completa que incluye todas las imágenes enmarcadas unidas y se puede guardar y procesar según sea necesario. Preste atención para modificar la ruta de la carpeta en el código de muestra de acuerdo con la situación real.

Supongo que te gusta

Origin blog.csdn.net/weixin_58851039/article/details/131389673
Recomendado
Clasificación