Entfernen nur von Ringlöchern aus Polygonen mit ArcGIS Desktop?


15

Ich verwende ArcGIS Desktop 10.0.

Ich habe einen Trick zum Entfernen der Ringlöcher, der darin besteht, das Polygon in Linie umzuwandeln und dann aus den Linien ein Polygon zu erstellen und am Ende alle zusammenzuführen. Der Nachteil dieser Strategie besteht darin, dass andere Löcher und leere Bereiche entfernt werden, die in Wirklichkeit leer sind und leer gehalten werden sollten. Siehe Bild unten:

Bildbeschreibung hier eingeben


3
Ich habe dafür gestimmt, diese Frage offen zu halten, weil ich glaube, dass das OP versucht, einige, aber nicht alle Donuts zu entfernen. Er sucht nach einer Möglichkeit, einige von ihnen zu behalten.
Fezter

Vielen Dank! Ich habe das Bild hinzugefügt, ich hoffe das klärt alles. Ich kann keine größeren Bereiche entfernen, bevor ich alles zusammenführe, da ich im Übrigen die Hauptpolygone (das grüne selbst) entfernen kann.
Arash

1
Sehr ähnlich zu Wie entferne ich kleine „Salz & Pfeffer“ -Polygone aus einer Schicht? , aber mit einem QGIS-Prozess. Möglicherweise können Sie in ArcGIS mit sehr ähnlichen Prozessen arbeiten.
RyanKDalton

Verwandte Themen
Matt Wilkie

Es ist nur die Schwellengröße, über der Löcher nicht gefüllt werden dürfen, die verhindert, dass mit ArcGIS for Desktop Doughnut-Polygone
PolyGeo

Antworten:


23

Ich würde das Union- Tool mit NO_GAPS ausprobieren:

NO_GAPS: Ein Feature wird für die Bereiche in der Ausgabe erstellt, die vollständig von Polygonen umschlossen sind. Diese Funktion hat leere Attribute.

Sie können dann die Features mit leeren Attributen unterhalb eines Schwellenwerts auswählen und ihre Attribute so berechnen, dass sie mit dem ursprünglichen Polygon übereinstimmen. Sie können sie auch im Attributfenster des Editors kopieren / einfügen.

Features mit leeren Attributen über der Schwellengröße sollten gelöscht werden.

Von dort aus sollte das Auflösen- Tool den Job abschließen.


1
Wie "berechnet man [das neue Doughnut-Poly] so, dass es mit dem ursprünglichen [enthaltenden] Polygon übereinstimmt"? Sie haben keine gemeinsamen Attributwerte und können daher nicht verbunden werden. Woher weiß Island Poly C, dass es die neuen Attributwerte von Lake Poly A erhalten und Lake Poly B ignorieren soll?
Matt Wilkie

Ich habe kürzlich keinen Test durchgeführt, aber "das neue Donut-Poly" ist das "ursprüngliche [enthaltende] Polygon". Wenn es mehrere solcher Donut-Polygone gibt, die in großen Mengen verarbeitet werden sollen, wäre es notwendig, die kleinen Löcher mit dem Donut-Polygon zu markieren, in das sie fallen.
PolyGeo

7

Die Lösung von PolyGeo ist eine, die ich selbst eingesetzt habe und die gut funktioniert (+1). Eine andere Alternative besteht darin, Ihre Polygone um einen kleinen Betrag zu puffern und das Ergebnis dann um den gleichen Betrag zu entpuffern (beispielsweise + 1 m und dann -1 m). Dies funktioniert ebenfalls gut, birgt jedoch ein geringes Risiko, versehentlich Polygone zu verbinden, die in der gleichen Menge wie Ihr Puffer benachbart sind. Es kann auch die Anzahl der Scheitelpunkte erhöhen (was ein Problem sein kann oder nicht).

Sie können auch ein Skript für eine robuste Lösung schreiben, indem Sie über jedes Polygon iterieren, temporäre Polygone basierend auf den inneren Ringen erstellen und diese auf ihre Bereiche testen. Wenn sie unter Ihrem Schwellenwert liegen, entfernen Sie diesen inneren Ring aus der Geometrie und aktualisieren Ihre Zeile. Diese Lösung ist mehr Arbeit als die Lösung von PolyGeo oder mein Puffer-Hack, ist aber möglicherweise ein "reinerer" Ansatz.


5

Sie können das Werkzeug "Polygon-Teil entfernen" (Datenverwaltungswerkzeuge -> Generalisierung) in ArcToolbox verwenden. Sie können angeben, wie viel Prozent der Löcher mindestens entfernt werden sollen.


1
Diese Funktion erfordert jedoch die Lizenzstufe Advanced / ArcInfo.
Martin

In ArcGIS Pro 2.0 habe ich das Werkzeug "Polygon-Teil entfernen" ausprobiert. An dem Polygon-Feature, das ich getestet habe, hat es jedoch nichts geändert. Das Feature hatte mehrere innere Ringe, und ich möchte, dass sie alle verschwunden sind. Funktioniert dieses Werkzeug nur, wenn das Feature aus mehrteiliger Geometrie besteht?
Mike Finch

Nicht nur". Es können auch einzelne Polygone mit Löchern bearbeitet werden.
Kadir Şahbaz

3

Hier ist eine andere Möglichkeit, Seen aus Polygonen zu entfernen (z. B. die Postleitzahl-Kartenebene von Navteq). Dies ist auch nützlich, um Gebietskarten-Layer zu bereinigen, die durch Auflösen des Postleitzahl-Karten-Layers durch den Gebietscode generiert wurden.

  1. Verwenden Sie eine Geoverarbeitungsvereinigung für den Polygonkarten-Layer und deaktivieren Sie das Kontrollkästchen für "Lücken zulässig" (das standardmäßig aktiviert ist). Dadurch werden Polygone für alle "Ring" -Löcher in den Polygonen erstellt.
  2. Fügen Sie in der resultierenden Union-Kartenebene Felder für ID, X und Y hinzu. Die ID sollte vom Namen / der ID der Polygone mit den zu entfernenden Ringlöchern getrennt sein.
  3. Verwenden Sie in der Attributtabelle den Feldrechner, um die ID aus dem ObjectID-Feld zu berechnen, und verwenden Sie "Geometrie berechnen", um die X- und Y-Werte einzugeben.
  4. Trennen Sie die Donut-Polygone von den anderen Polygonen, indem Sie diejenigen auswählen (Nach Attributen auswählen), bei denen das Namensfeld null ist.
  5. Exportieren Sie die ausgewählten Datensätze in eine neue Tabelle. (Dropdown-Liste der Tabellenoptionen -> Exportieren ...)
  6. Verwenden Sie die Option "XY hinzufügen", um eine Ereignisebene zu erstellen. (Rechtsklick auf Ebene -> XY-Daten anzeigen ....
  7. Exportieren Sie die Ereignisebene in eine neue Feature-Class. (Rechtsklick auf die Ebene -> Daten -> Daten exportieren)
  8. Erstellen Sie eine räumliche Verbindung zwischen der neuen Punktebene und der ORIGINAL-Polygonkartenebene, die keine Ringpolygone enthält. Verwenden Sie die Option "Am nächsten", damit der Name des umgebenden Polygons an die Attributtabelle der Donut-Polygone angehängt wird.
  9. Verwenden Sie einen Standardtabellen-Join zwischen dem verbundenen Punkt-Layer und dem resultierenden Karten-Layer aus der Union (basierend auf dem ID-Feld). (Klicken Sie mit der rechten Maustaste auf die Ebene -> Verknüpfungen und Verknüpfungen -> Verknüpfen -> Verknüpfen Sie Daten von einer anderen Ebene basierend auf der räumlichen Position.)
  10. Verwenden Sie den Feldrechner in der Attributtabelle, um die Nullpolygonnamen aus der verbundenen Punktebene zu berechnen.
  11. Führen Sie eine Geoverarbeitung "Auflösen" basierend auf dem Polygonnamen aus, um die Ringpolygone mit dem größeren benannten Polygon zusammenzuführen.

Beachten Sie, dass dies das Problem der Flüsse, die in den Umriss des Polygons geschnitten werden, nicht behebt, aber die ursprüngliche Kartenebene verbessert, indem die inneren Ringlöcher entfernt werden.


2

Wenn Polygone in der Feature-Class andere Polygone in derselben Feature-Class enthalten (z. B. Lesotho in Südafrika) und Sie die manuelle Bearbeitung zugunsten von ModelBuilder usw. beseitigen müssen, ist die Verwendung von "Eliminate Polygon Part" die schnellste Lösung. Werkzeugeinstellungen:

- "Bedingung (optional)" = BEREICH - "Bereich (optional)" = eine sehr große Anzahl (z. B. 1e + 100) - "Nur enthaltene Teile entfernen (optional)" = [markiert]

Dies ergibt ein Südafrika, in dem Lesothos Bereich ausgefüllt ist, der für Arbeitsabläufe wie die Ausgabe von Scheitelpunkten für die Verwendung in Polygon-Visuals in Tableau unerlässlich ist.


0

Da es bisher nicht erwähnt wurde und das richtige Werkzeug für genau das ist, was Sie erreichen möchten : Aggregierte Polygone

Setzen Sie minimum_hole_size auf die Mindestgröße eines Polygonlochs, das Sie behalten möchten. Kleinere werden eliminiert.

Der optionale Wert minimum_area im selben Werkzeug bewirkt dasselbe für die Polygonteile, die keine Löcher sind.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.