2 votos

Exportación de un grupo de límites de capas ráster desde QGIS a un GeoJSON

Tengo un proyecto QGIS con muchas capas rasterizadas; y quiero construir un Mapa de Mapbox basado en este proyecto; que mostraría esas imágenes en el mapa de un sitio web.

enter image description here

Necesito una forma de exportar un grupo de capas rasterizadas de QGIS a un Colección GeoJSON de polígonos; que podría cargar en Mapbox.

Ya he echado un vistazo a los archivos GeoTIFF y a los archivos PGW; pero aún así, exportar cada capa una por una será doloroso, ya que tendré que actualizar el proyecto web desde QGIS con bastante frecuencia.

Así que estoy buscando una solución que automatice el trabajo.

Me gustaría obtener un archivo GeoJSON con el siguiente aspecto:

{
  "type": "FeatureCollection",
  "features": [
    {
      "type": "Feature",
      "properties": {
        "layer_name": "AND17",
        "image": "images/png/world.png",
      },
      "geometry": {
        "type": "Polygon",
        "coordinates": [
          [
            [
              4.3813338557822,
              50.842573058675
            ],
            [
              4.418685805334,
              50.842573058675
            ],
            [
              4.418685805334,
              50.825893099756
            ],
            [
              4.3813338557822,
              50.825893099756
            ],
            [
              4.3813338557822,
              50.842573058675
            ]
          ]
        ]
      }
    }
  }

Como puedes ver, contiene la información de georreferenciación de la imagen, y su nombre de archivo. Si consigo eso, puedo cargar y colocar la imagen en Mapbox.

¿Tienes alguna idea de cómo podría hacer eso; tal vez usando un plugin?

También he visto que se puede exportar un grupo a un archivo *.qlr. Parece que contiene algún tipo de datos geoespaciales :

<extent>
    <xmin>475442.96307834662729874</xmin>
    <ymin>6588302.91859502345323563</ymin>
    <xmax>483907.46308698022039607</xmax>
    <ymax>6594287.91860113199800253</ymax>
</extent>

¿Algún consejo?

1voto

Dror Bogin Puntos 118

Este script está asumiendo que quieres guardar los límites de todas las capas rasterizadas.

import json

layers = [layer for layer in QgsProject.instance().mapLayers().values() if layer.type() == QgsMapLayerType.RasterLayer]
gj = {
  "type": "FeatureCollection",
  "features":[]
  }
for layer in layers:
    extent = layer.extent()
    feature = {
        "type": "Feature",
          "properties": {
            "layer_name": layer.name(),
            "image": layer.source(),
            },
              "geometry": {
                "type": "Polygon",
                "coordinates": [
                  [
                    [
                      extent.xMinimum(),
                      extent.yMinimum()
                    ],
                    [
                      extent.xMaximum(),
                      extent.yMinimum()
                    ],
                    [
                      extent.xMaximum(),
                      extent.yMaximum()
                    ],
                    [
                      extent.xMinimum(),
                      extent.yMaximum()
                    ],
                    [
                      extent.xMinimum(),
                      extent.yMinimum()
                    ]
                  ]
                ]
              }
            }
    gj['features'].append(feature)

    output_dir = r'C:\Work'
    with open('{}/image_bounds.geojson'.format(output_dir), 'w') as file: # Change the location
        file.write(json.dumps(gj))

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