¿Fusionar polígonos adyacentes en un archivo de forma que se ha dividido en los límites de los mosaicos?

24

Actualmente estoy usando datos de construcción del Distrito de mapas vectoriales de Ordnance Survey y he notado que muchos polígonos de construcción se dividen en 2 debido a la forma en que el sistema operativo divide el archivo de forma.

Esto es lo que estoy viendo en QGIS: he resaltado algunos de los edificios divididos en el límite de mosaico:

ingrese la descripción de la imagen aquí

No puedo fusionar manualmente los edificios ya que hay demasiados de ellos que se han dividido en los límites (esto es solo un ejemplo ampliado). Estoy buscando una forma automatizada de resolver esto.

Desafortunadamente, cada lado de los edificios divididos tiene una identificación diferente, por lo que no puedo disolverlos fácilmente.

¿Cómo sugeriría que puedo fusionar automáticamente los mosaicos de construcción?

Editar

Ahora estoy usando PostGIS para fusionar los polígonos divididos en los límites del mosaico. Aquí está la declaración SQL que hace esto por mí: es mucho, mucho más rápido que hacerlo con QGIS:

DROP TABLE merged;
CREATE TABLE merged AS
SELECT
  -- Merge polygons that are within 0.01 metres of each other
  (ST_Dump(ST_Union(ST_Buffer(the_geom, 0.01)))).geom AS the_geom
FROM unmerged;

-- Update the geometry_columns table
SELECT Populate_Geometry_Columns();
Robin Hawkes
fuente
66
Probablemente debería publicar su solución como respuesta y aceptarla en lugar de la mía. Seguir el esquema de preguntas y respuestas hace que sea mucho más fácil para otras personas con el mismo problema encontrar la solución.
Jake

Respuestas:

18

Si simplemente quiere disolver los bordes y está satisfecho con tener una característica multipolígono grande de todos los edificios, simplemente puede usar la herramienta "Disolver" de fTools ("Vector / Geoprocesamiento / Disolver").

Si desea mantener los atributos (en el caso de OS Vector que solo sería la ID, que parece ser bastante arbitraria), puede dividir la capa del vector disuelto y luego asignar los atributos de la capa original sin disolver usando "Unir atributos Por localizacion":

Este es un subconjunto de dos archivos de forma de edificios de SO que se fusionaron en un solo archivo de forma usando "Vector / Gestión de datos / Fusionar archivos de forma en uno". Los colores se asignan aleatoriamente para mostrar las características individuales:

Este es el resultado de la herramienta "Disolver": todas las características se han disuelto en una sola característica con la ID del primer objeto, la ruptura en los tres edificios centrales se ha ido:

Después de dividir la característica usando "Vector / Geometría / Multiparte en partes individuales", los edificios son características individuales nuevamente, pero todos tienen la misma ID:

Al ejecutar "Herramientas de gestión de datos / vectores / Atributos de unión por ubicación" con la capa dividida como el objetivo y la capa fusionada original como la capa vectorial Unir, los edificios se reasignan con sus ID individuales:

Jake
fuente
Creo que el problema podría ser que este es OS VMD OpenData (corrígeme si me equivoco). En cuyo caso, las características no tienen atributos que se puedan usar para disolver. Por lo tanto, también podría intentar usar las soluciones normales de fTools. Buena suerte con esto, en algunos vectores OpenData tengo polígonos divididos por líneas que coinciden con líneas de cuadrícula que simplemente no se disuelven.
nhopton
@nhopton: Pero la disolución de fTools ordinaria agrupará todas las características en una sola característica (si no hay ID que puedan usarse para identificar qué características pertenecen juntas, como es el caso aquí), lo que probablemente no sea lo que Rob quiere. Si usa v.dissolvedespués de asignar a todas las características algunos atributos ficticios idénticos, solo aquellos que comparten un límite se fusionarán.
Jake
Una sola característica probablemente no sería un problema para Rob, si todo lo que buscaba eran las formas. Pero sí, pruebe ambos métodos de disolución. Mella.
nhopton
¿Estás seguro de que todos los polígonos que deberían haberse disuelto se han disuelto de hecho? Aquí la mayoría de ellos se disuelven, pero no todos.
nhopton
¡Gracias por la ayuda! Resulta que @nhopton tenía razón y que las divisiones del Distrito VectorMap en realidad están un poco apagadas y, por lo tanto, no se disuelven correctamente. Ahora estoy experimentando con el uso de PostGIS para acelerar este proceso.
Robin Hawkes