Fusionner des polygones adjacents dans un fichier de formes qui a été divisé aux limites des tuiles?


24

J'utilise actuellement des données de construction de l'Ordnance Survey Vectormap District et j'ai remarqué que beaucoup de polygones de construction sont divisés en 2 en raison de la façon dont le système d'exploitation a divisé le fichier de formes.

Voici ce que je vois dans QGIS - j'ai mis en évidence certains des bâtiments divisés à la limite des tuiles:

entrez la description de l'image ici

Je ne peux pas fusionner manuellement les bâtiments car il y en a beaucoup trop qui ont été divisés aux limites (ce n'est qu'un exemple zoomé). Je cherche un moyen automatisé de résoudre ce problème.

Malheureusement, chaque côté des bâtiments divisés a un identifiant différent, je ne peux donc pas les dissoudre facilement.

Comment proposeriez-vous que je puisse fusionner automatiquement les tuiles bâtiment?

modifier

J'utilise maintenant PostGIS pour fusionner les polygones divisés aux limites des tuiles. Voici l'instruction SQL qui fait cela pour moi - c'est beaucoup, beaucoup plus rapide que de le faire avec 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();

6
Vous devriez probablement poster votre solution comme réponse et l'accepter au lieu de la mienne. Le respect du schéma de questions-réponses permet aux autres personnes ayant le même problème de trouver la solution beaucoup plus facilement.
Jake

Réponses:


18

Si vous souhaitez simplement dissoudre les bords et que vous êtes satisfait d'avoir une grande fonction multipolygone de tous les bâtiments, vous pouvez simplement utiliser l'outil "Dissoudre" de fTools ("Vecteur / Géotraitement / Dissoudre").

Si vous souhaitez conserver les attributs (dans le cas du vecteur OS qui ne serait que l'ID, ce qui semble plutôt arbitraire), vous pouvez diviser la couche vectorielle dissoute, puis attribuer les attributs de la couche non dissoute d'origine à l'aide de "Joindre les attributs Par emplacement":

Il s'agit d'un sous-ensemble de deux fichiers de formes de bâtiments du système d'exploitation qui ont été fusionnés en un seul fichier de formes à l'aide de "Fichiers de formes Vector / Gestion des données / Fusionner en un seul". Les couleurs sont assignées au hasard pour montrer les caractéristiques individuelles:

C'est le résultat de l'outil "Dissoudre": toutes les entités ont été dissoutes en une seule entité avec l'ID du premier objet, la rupture dans les trois bâtiments centraux a disparu:

Après avoir scindé l'entité à l'aide de "Vecteur / Géométrie / Multipart en parties uniques", les bâtiments sont à nouveau des entités individuelles, mais ils ont tous le même ID:

En exécutant «Outils de gestion des vecteurs / données / Attributs de jointure par emplacement» avec la couche divisée comme cible et la couche fusionnée d'origine comme couche vectorielle de jointure, les bâtiments sont réaffectés à leurs ID individuels:


Je pense que le problème pourrait être que c'est OS VMD OpenData (corrigez-moi si je me trompe). Dans ce cas, les entités n'ont pas d'attributs pouvant être utilisés pour la dissolution. Donc, vous pourriez aussi bien essayer d'utiliser les fTools dissolve ordinaires. Bonne chance avec cela, dans certains vecteurs OpenData, j'ai des polygones divisés par des lignes qui coïncident avec des lignes de grille qui ne se dissolvent tout simplement pas .
nhopton

@nhopton: Mais la dissolution des fTools ordinaires regroupera toutes les fonctionnalités en une seule fonctionnalité (s'il n'y a pas d'ID pouvant être utilisés pour identifier les fonctionnalités qui vont ensemble, comme c'est le cas ici), ce qui n'est probablement pas ce que Rob veut. Si vous utilisez v.dissolveaprès avoir assigné à toutes les entités un attribut factice identique, seules celles qui partagent une frontière seront fusionnées.
Jake

Une seule caractéristique ne serait probablement pas un problème pour Rob, si tout ce qu'il cherchait était les formes. Mais oui, essayez les deux méthodes de dissolution. Entaille.
nhopton

Êtes-vous sûr que tous les polygones qui auraient dû être dissous ont en fait été dissous? Ici, la plupart d'entre eux se dissolvent, mais pas tous.
nhopton

Merci pour l'aide! Il s'avère que @nhopton avait raison et que les divisions du district VectorMap sont en fait un peu décalées et ne se dissolvent donc pas correctement. J'expérimente maintenant avec PostGIS pour accélérer ce processus.
Robin Hawkes
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.