Zusammenführen benachbarter Polygone in Shapefile, das an Kachelgrenzen geteilt wurde?

24

Ich verwende derzeit Gebäudedaten aus dem Ordnance Survey Vectormap District und habe festgestellt, dass viele Gebäudepolygone aufgrund der Aufteilung des Shapefiles durch das Betriebssystem in zwei Teile geteilt werden.

Dies ist, was ich in QGIS sehe - ich habe einige der Gebäude hervorgehoben, die an der Kachelgrenze aufgeteilt sind:

Bildbeschreibung hier eingeben

Ich kann die Gebäude nicht manuell zusammenführen, da zu viele an den Grenzen geteilt wurden (dies ist nur ein gezoomtes Beispiel). Ich suche nach einem automatisierten Weg, um dies zu lösen.

Leider hat jede Seite der geteilten Gebäude eine andere ID, so dass ich sie nicht leicht auflösen kann.

Wie würden Sie vorschlagen, dass ich die Gebäudekacheln automatisch zusammenführen kann?

Bearbeiten

Ich verwende jetzt PostGIS, um die Polygone zusammenzuführen, die an den Kachelgrenzen aufgeteilt sind. Hier ist die SQL-Anweisung, die dies für mich erledigt - sie ist um ein Vielfaches schneller als mit 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
quelle
6
Sie sollten Ihre Lösung wahrscheinlich als Antwort posten und diese anstelle meiner akzeptieren. Wenn Sie sich an das Frage-Antwort-Schema halten, fällt es anderen mit demselben Problem viel leichter, die Lösung zu finden.
Jake

Antworten:

18

Wenn Sie nur die Kanten auflösen möchten und mit einem großen Multipolygon-Feature aller Gebäude zufrieden sind, können Sie einfach das fTools-Werkzeug "Auflösen" ("Vektor / Geoverarbeitung / Auflösen") verwenden.

Wenn Sie die Attribute beibehalten möchten (im Fall von OS Vector, bei dem es sich nur um die ID handelt, die eher willkürlich zu sein scheint), können Sie die aufgelöste Vektorebene aufteilen und dann die Attribute der ursprünglichen ungelösten Ebene mit "Attribute verbinden" zuweisen nach Ort ":

Dies ist eine Teilmenge von zwei Shapefiles für Betriebssystemgebäude, die mit "Vektor / Datenverwaltung / Shapefiles in einem zusammenführen" zu einem einzigen Shapefile zusammengeführt wurden. Die Farben werden nach dem Zufallsprinzip zugewiesen, um die einzelnen Merkmale anzuzeigen:

Dies ist das Ergebnis des Werkzeugs "Auflösen": Alle Features wurden mit der ID des ersten Objekts in einem einzigen Feature aufgelöst, der Bruch in den drei zentralen Gebäuden ist weg:

Nach dem Aufteilen des Features mit "Vektor / Geometrie / Multipart zu Einzelteilen" sind die Gebäude wieder einzelne Features, haben jedoch alle dieselbe ID:

Wenn Sie "Vektor / Datenverwaltungswerkzeuge / Attribute nach Standort verbinden" mit dem geteilten Layer als Ziel und dem ursprünglich zusammengeführten Layer als Vektor-Layer verbinden ausführen, werden den Gebäuden ihre individuellen IDs zugewiesen:

Jake
quelle
Ich denke, das Problem könnte sein, dass dies OS VMD OpenData ist (korrigieren Sie mich, wenn ich falsch liege). In diesem Fall verfügen die Features nicht über Attribute, die zum Auflösen verwendet werden können. Sie können also auch versuchen, das gewöhnliche fTools-Auflösen zu verwenden. Viel Glück damit, in einigen OpenData-Vektoren habe ich Polygone, die durch Linien geteilt sind, die mit Gitterlinien übereinstimmen, die sich einfach nicht auflösen.
Nhopton
@nhopton: Aber die gewöhnlichen fTools lösen alle Features in einem Feature auf (wenn es keine IDs gibt, mit denen identifiziert werden kann, welche Features zusammengehören, wie es hier der Fall ist), was Rob höchstwahrscheinlich nicht wünscht. Wenn Sie v.dissolvenach dem Zuweisen aller Features ein identisches Dummy-Attribut verwenden, werden nur diejenigen zusammengeführt, die eine Grenze gemeinsam haben.
Jake
Ein einzelnes Feature wäre für Rob wahrscheinlich kein Problem, wenn er nur nach den Formen Ausschau halten würde. Aber ja, probieren Sie beide Auflösungsmethoden aus. Nick.
Nhopton
Sind Sie sicher, dass alle Polygone, die hätten aufgelöst werden sollen, tatsächlich aufgelöst wurden? Hier lösen sich die meisten auf, aber nicht alle.
Nhopton
Danke für die Hilfe! Es stellte sich heraus, dass @nhopton recht hatte und dass die VectorMap District-Teilungen tatsächlich ein wenig abweichen und sich daher nicht richtig auflösen. Ich experimentiere jetzt mit PostGIS, um diesen Prozess zu beschleunigen.
Robin Hawkes