26 votos

¿Fusionar polígonos adyacentes en un shapefile que se ha dividido en los límites de las baldosas?

Actualmente estoy utilizando datos de edificios del Ordnance Survey Vectormap District y me he dado cuenta de que muchos polígonos de edificios están divididos en 2 debido a la forma en que el OS divide el shapefile.

Esto es lo que veo en QGIS: he resaltado algunos de los edificios divididos en el límite de la baldosa:

enter image description here

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

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

¿Cómo sugieres que pueda fusionar automáticamente las fichas de los edificios?

Editar

Ahora estoy usando PostGIS para fusionar los polígonos divididos en los límites de las baldosas. Aquí está la sentencia SQL que hace esto para mí - es muchas, muchas veces 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();

7 votos

Probablemente deberías publicar tu solución como respuesta y aceptarla en lugar de la mía. Mantener el esquema pregunta-respuesta hace que sea mucho más fácil para otros con el mismo problema encontrar la solución.

19voto

Dalroth Puntos 2468

Si simplemente quiere disolver los bordes y se conforma con tener una gran característica multipoligonal de todos los edificios, puede utilizar simplemente la herramienta "Dissolve" de fTools ("Vector/Geoprocessing/Dissolve").

Si quieres mantener los atributos (en el caso de OS Vector eso sería sólo el ID, que parece ser bastante arbitrario), puedes dividir la capa vectorial disuelta y luego asignar los atributos de la capa original no disuelta usando "Unir atributos por ubicación":

Se trata de un subconjunto de dos shapefiles de edificios OS que se fusionaron en un único shapefile utilizando "Vector/Gestión de datos/Fusionar shapefiles en uno". Los colores están asignados al azar para mostrar las características individuales:

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

Después de dividir la característica utilizando "Vector/Geometría/Multiparte a partes individuales", los edificios vuelven a ser características individuales, pero todas tienen el mismo ID:

Ejecutando "Herramientas de gestión de vectores/datos/unir atributos por ubicación" con la capa dividida como objetivo y la capa original fusionada como capa vectorial de unión, se reasignan a los edificios sus ID individuales:

0 votos

Creo que el problema puede ser que se trata de OS VMD OpenData (corregidme si me equivoco). En cuyo caso las características no tienen atributos que se puedan usar para disolver. Así que también podrías intentar usar el fTools dissolve ordinario. 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 lo hará disolver.

0 votos

@nhopton: Pero el fTools dissolve ordinario agrupará todas las características en una sola característica (si no hay IDs que puedan ser utilizados para identificar qué características pertenecen juntas, como es el caso aquí), que es más probable que no sea lo que Rob quiere. Si utiliza v.dissolve después de asignar a todas las características algún atributo ficticio idéntico, sólo se fusionarán las que compartan un límite.

0 votos

Una sola característica probablemente no sería un problema para Rob, si todo lo que buscaba eran las formas. Pero sí, prueba ambos métodos de disolución. Nick.

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