¿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.
12
Respuestas:
Usando QGIS 2.10.1-Pisa con Processing versión 2.10.2, hay un par de herramientas disponibles en Processing Toolbox :
¡Espero que esto ayude!
fuente
Enfrenté el mismo problema que el tuyo con este archivo de formas, que tiene muchos espacios entre los polígonos.
Para resolver el problema, puede usar una ligera modificación del método de tshiffle:
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.
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.
fuente
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.
fuente
En python / shapely, esto puede completar su polígono:
fuente
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.
fuente