18 votos

Convertir ráster en polígonos de contorno suave en QGIS

He tenido un éxito limitado en la creación de polígonos de contorno suave a partir de capas de trama.

He creado curvas de nivel y polilíneas límite y luego he utilizado QGIS Union. Luego he utilizado QGIS Polygonize. A continuación, utilice estadísticas zonales a la trama original para obtener el valor de los polígonos.

El segundo método que probé fue convertir una trama en un polígono. Luego crear una nueva columna de atributos redondeada al contorno que deseo. Luego disuelvo líneas entre el mismo valor. A continuación, utilice v.generalize. Este método es un poco más rápido, pero dejará algunos polígonos dentados / sin suavizar.

enter image description here

¿Hay algún método más sencillo que funcione siempre? Parece que debería haber un simple comando que hace todo el proceso.

15voto

leonho Puntos 2787

He tenido los mismos problemas que tú en tu segundo método. He exportado un Raster a un vector y tratar de y el uso v.generalise y me sale polígonos en su mayoría suaves con el ocasional 'escalonada' frontera que parece haber sido no afectados por el algoritmo.

He encontrado un proceso que funcionó para mi tarea, no estoy seguro de si es la mejor manera, pero pensé en compartirlo en caso de que le ayudó.

Con lo que empecé fue con una cuadrícula ascii de BoM que tenía este aspecto: enter image description here

Lo que quería algo similar a lo que BoM producir así: enter image description here

Conseguí llegar a un resultado (que me satisfizo) siguiendo estos pasos.

  • Cargar rejilla (en mi caso ASCII Grid de BoM) en QGIS.
  • Recodificado en clases discretas. (Caja de herramientas de procesamiento>Grass>Raster>r.recode)
  • Ejecute un filtro de mayoría para "limpiar" (Caja de herramientas de procesamiento>SAGA>Filtro de trama>Filtro de mayoría).
  • Creé contornos a partir de la rejilla filtrada a intervalos de 1, y los almacené en un atributo 'class' (porque mis clases eran 1,2,3,4,etc). (Raster 'Menu'>Extracción>Contorno)
  • Los contornos de salida son algo generalizados, pero he utilizado v.generalised con el algoritmo 'snakes' para suavizarlos.(Processing Toolbox>Grass>Vector>v.generalize)
  • A continuación, convertí las líneas en polígonos.(Processing Toolbox>QGIS geoalgorithms>Vector Geometry Tools>Lines to Polygons)
  • Finalmente tuve que convertir los polígonos de una sola parte en múltiples partes, para que todos los polígonos se dibujaran bien. (Processing Toolbox>QGIS geoalgorithms>Vector Geometry Tools>Singleparts to Mulitpart).

Después de estilizar mi salida es la siguiente: enter image description here

También me interesaría saber si alguien conoce una forma más sencilla. Al principio pensaba, como @Rx_, que podría convertir mi trama en vector, generalizarla y listo. Lo que tuve que hacer fue mucho más largo.

7voto

justen meltz Puntos 11

Una forma más directa es utilizar gdal_countour directamente (como un programa de línea de comandos) en "modo poligonal" (es decir, con la función -p opción).

Ejemplo:

gdal_contour -p -amin min_val -amax max_val -i 1 input_raster.tif output_shape.shp

Documentación: https://gdal.org/programs/gdal_contour.html

Esta opción sólo está disponible en la versión >= 2.4 (puede comprobarse con gdalinfo --version ). Si utiliza Ubuntu 18.4, es posible que tenga que instalarlo desde UbuntuGIS

3voto

MapInfoNewbie Puntos 16

Me gustan las respuestas aquí, pero no puedo creer que QGIS todavía no tiene una manera rápida y fácil de hacer esto. MapInfo puede generar contornos como polígonos o líneas con cualquier intervalo que se puede especificar.

Parece una tarea tan básica y también importante para obtener extensiones. Si alguien tiene una forma actualizada o más rápida de hacerlo, por favor, ¡compártala!

0voto

rmeden Puntos 83

En QGIS 3.8 puede utilizar Raster - Extracción - Contorno

Aquí hay un buen ejemplo https://support.dronesmadeeasy.com/hc/en-us/articles/217759823-Using-QGIS-to-make-custom-Contour-Maps

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