¿Cómo rellenar agujeros en polígonos automáticamente?

12

¿Existe una opción en QGIS para rellenar huecos en polígonos automáticamente mediante el establecimiento de parámetros, por ejemplo, área máxima, distancia entre las fronteras? Quiero eliminar / rellenar agujeros que son muy "delgados" / pequeños.

J-Man
fuente
1
¿Le interesan los agujeros (anillos dentro de los polígonos) o reducir los espacios entre los polígonos separados?
Simbamangu
¿Tiene que ser una solución basada en QGIS? Ya escribí en un blog sobre cómo lograr esto usando SQL espacial en PostGIS ( geospatial.commons.gc.cuny.edu/2013/11/04/… ). Si no está ejecutando PostGIS, probablemente podría adaptar esto a SpatiaLite, que, supongo, si está utilizando QGIS, es posible que ya tenga SpatiaLite en su cadena de herramientas.
Lee Hachadoorian

Respuestas:

11

Usando QGIS 2.10.1-Pisa con Processing versión 2.10.2, hay un par de herramientas disponibles en Processing Toolbox :

  • Herramienta de rellenar agujeros que puede especificar el área máxima .
  • Herramienta de eliminación de agujeros que se aplicaría a toda la capa de entrada.

¡Espero que esto ayude!

Joseph
fuente
1
Solo para verificar, el parámetro de área máxima, ¿cuál es el tamaño máximo de un hoyo a rellenar? Entonces, en un proyecto UTM de medidor, si el máximo era de 10,000, ¿eso significaría que el hoyo más grande a llenar sería una hectárea y quedaría algo más grande?
BillW
1
@BillW - Sí, creo que eso es exactamente lo que hace :)
Joseph
11

Enfrenté el mismo problema que el tuyo con este archivo de formas, que tiene muchos espacios entre los polígonos.

Archivo original con huecos

Para resolver el problema, puede usar una ligera modificación del método de tshiffle:

  1. Primero, realice la diferencia entre su archivo y un polígono que cubre toda su extensión.

Polígono de extensión

Herramienta_diferencia

Esta acción creará un nuevo archivo de forma que consta de un solo polígono, por lo que debe explotarlo en partes individuales. Para eso, puede usar la herramienta Vector / Geometry Tools / Multipart to singleparts.

Resultado_diferencia

Multi_to_single

Después de eso, elimine la entidad externa. Ahora tiene, en un nuevo archivo de formas, varios polígonos que cubren las brechas de su cobertura original.

huecos cubiertos

  1. Realizar una unión entre los datos iniciales y las partes individuales. Use la herramienta SAGA, porque la opción QGIS predeterminada crea duplicados en la base de datos.

Unión

  1. Todos los espacios aparecerán ahora como registros vacíos en la base de datos (por ejemplo, 72 filas). Ordene su tabla usando un campo de área y tome el valor del polígono más pequeño en el archivo original. Para este caso, 0.13645 hectáreas.

base de datos

  1. Finalmente, use la herramienta "Eliminar polígonos de astilla", con la configuración que se muestra en la imagen.

ingrese la descripción de la imagen aquí

  1. El resultado final no tiene lagunas.

ingrese la descripción de la imagen aquí

gtapko
fuente
¿Podría agregar más información sobre la elección de los parámetros? Cuál es el valor"? La página de documentación de QGIS es muy corta en detalles. Respuesta muy elegante, lástima que el usuario inicial no haya aceptado ninguna de las respuestas.
user3386170
1
El "valor" es la magnitud que utiliza para la comparación. En el ejemplo, el 'área' de campo utilizado se estableció en hectáreas, por lo que 0.1 significa: eliminar polígonos menores o iguales a 0.1 hectáreas.
gtapko
gtapko, ¿puede proporcionar más detalles sobre la fase 3? no puedo entenderlo, gracias
newGIS
4

Puede haber soluciones más elegantes, pero esto siempre ha funcionado para mí.

1) Crear polígonos de "relleno de agujeros". Para hacer esto, dibuje un polígono gigante más grande que el original y use la herramienta "diferencia". Si dibujó un polígono mucho más grande, tendrá todos los polígonos de "relleno de agujeros" más un único polígono más grande que rodea la forma original. Elimina ese gran polígono, manteniendo los polígonos de "relleno de agujeros".

2) Combine los polígonos de "relleno de agujeros" con el archivo de forma original. Si solo desea rellenar agujeros que cumplan un determinado criterio (es decir, bajo X número de kilómetros cuadrados), puede filtrarlo aquí.

3) Disuelva el polígono recién fusionado en un campo común.

tshiffle
fuente
No está claro sobre el paso 3, ¿cómo alguien encontrará el campo común?
iRfAn
En este paso, el campo común puede ser cualquier cosa, el objetivo es simplemente disolver los límites entre los polígonos. Puede usar un campo existente o simplemente agregar uno.
tshiffle
4

En python / shapely, esto puede completar su polígono:

import shapely
from shapely.geometry import Polygon
filled_shape = Polygon(shape_with_holes.exterior)
mszel
fuente
2

He visto algunas explicaciones siguiendo el mismo camino que gtapko y tshiffle, pero ninguna funcionó para mí porque las geometrías inválidas hicieron que la herramienta de diferencia fuera disfuncional. Entonces, se me ocurrió una solución propia que no está 100% automatizada, pero es manejable. Probablemente alguien ya se dio cuenta de esto, pero me arriesgaré:

1) Cree una ID en la capa original dañada

Crear un atributo ID es simple, pero también lo es mi solución, así que lo revisaré.

Primero, debe abrir su tabla de atributos y luego ir a la Calculadora de campo , que es un botón muy parecido a un ábaco. Allí, se le dará la opción de crear un nuevo campo o actualizar uno existente. En la imagen de arriba estoy creando una nueva llamada "ID". La fórmula está justo al final de la imagen. (Perdón por tener mi QGIS configurado en un idioma diferente. Dado que el diseño y las fórmulas son exactamente iguales en todas las versiones de idioma, no creo que se interponga en nuestro camino aquí).

2) Convertir los polígonos en líneas

Este paso se encuentra en la sección Vector> Geometría del menú. Su forma convertida debería verse así:

Justo después de convertir los polígonos en líneas, tendrá que hacer exactamente lo contrario, que es ...

3) Convertir líneas en polígonos

Las opciones están una al lado de la otra. Nuevamente, no nos preocupemos por la barrera del idioma aquí.

4) Regocíjate La razón por la que hiciste los pasos 2 y 3 es porque ahora estás seguro de que esas líneas serán consideradas como polígonos, lo que significa que ahora tienen su propia línea en la Tabla de Atributos. Si lo revisas, se verá así:

El primero es SIEMPRE todo el polígono (confía en mí, he eliminado un par de cientos de líneas hoy ...) y el resto son las líneas sueltas en el medio. Puede habilitar la edición y prepararse para la acción. Si decide probar esto, dos cosas que debe tener en cuenta son: organizar su tabla ID-sabia , de esta manera está seguro de que no se está perdiendo nada y usar shift para seleccionar grupos de datos, al igual que cualquier otro programa .

Soy consciente de que esta no es la crème de la crème de la resolución de problemas de QGIS, pero si se enfrenta a una situación en la que las herramientas no funcionan debido a la geometría no válida que crean estas líneas (incluso intenté disolverlas con la ID, pero no funcionó), entonces esta podría ser una salida.

Eric Lino
fuente
¿Podrías actualizar tus imágenes? Los enlaces están rotos!
Simbamangu
Oye. Lo siento, pero aparentemente Photobucket secuestró mis imágenes, perdí el acceso a ellas. Ya abrí un boleto y estoy tratando de recuperar el acceso. Me pondré en contacto contigo siempre que sea posible.
Eric Lino