So identifizieren Sie Polygone mit "Flag" -Splitterfehlern


12

Bei der Arbeit in ArcMap sind Fehler in einem Polygon-Layer aufgetreten, den ich als "Flagsplitter" bezeichne (entnommen aus einer ähnlichen Sprache in Paketen als "Flagsplots"). Diese Splitterpolygone (siehe Abbildung unten) bestehen normalerweise nur aus einem zusätzlichen Knoten, den der Benutzer versehentlich hinzugefügt hat.

In den Bildern unten sind die "Flagge" und der "Fahnenmast" ein einteiliges Merkmal, bei dem sich der "Fahnenmast" gerade selbst überlappt. Das linke Bild hat insgesamt 5 Knoten.

einfache Flagge Bildbeschreibung hier eingeben

Alleine gesehen sind die Fehler sehr offensichtlich, aber wenn mehrere Polygone nebeneinander liegen, sind sie kaum zu erkennen, da sie die Grenze zwischen zwei Polygonen zu sein scheinen.

Dies ist wahrscheinlich darauf zurückzuführen, dass sie einen Shapefile-basierten Editor verwenden. Daher kann ich keine topologiebasierten Bearbeitungsregeln implementieren, um dies in Zukunft zu verhindern.

Hat jemand eine Möglichkeit, diese Art von Fehlern zu identifizieren und zu beheben? Ich würde eine automatisierte Methode sowohl zur Identifizierung als auch zur Lösung bevorzugen, da Feldbenutzer die Fehler verursacht haben, aber ich bin nicht in der Lage, sie zu beseitigen. Vielen Dank.


3
Ich frage mich, warum Esri für Linien-Features eine Regel bereitstellt, die sich nicht selbst schneiden darf, nicht jedoch für Polygone.
Kirk Kuykendall

Findet das Werkzeug "Geometrie prüfen" sie?
Mkennedy

Suchen Sie auch nach Baumeln und Überschwingen. Beide brachten einige Bögen hervor, aber nichts Aktuelles und viele für Polylinien, anstatt für Polygone.
Mkennedy

Ryan, könnten Sie eine Teilmenge Ihrer Daten bereitstellen? Haben Sie zufällig den Kommentar von mkennedy zum Werkzeug "Geometrie prüfen" untersucht?
Allan Adair

Welche Version von arcmap?
Kirk Kuykendall

Antworten:


5

Wenn Sie Zugriff auf SafeFme-Tools haben, finden Sie den Transformator mit dem Namen spikeRemover nützlich. Sie können eine herunterladbare, eingeschränkte Version von SAFE FME ausprobieren oder in Ihrer ArcGis-Lizenz nach "FME Extension for ArcGIS" suchen.

http://docs.safe.com/fme/html/FME_Transformers/Default.htm#Transformers/spikeremover.htm

http://cdn.safe.com/resources/fme/FME-Transformer-Reference-Guide.pdf


Ich konnte den SpikeRemover erfolgreich in der ArcGIS Data Interop-Erweiterung verwenden, um die Spikes zu bereinigen. Es verfügt auch über Ausgänge, mit denen Sie unveränderte, geänderte und gekennzeichnete (Spitzen-) Funktionen angeben können. Alle diese Funktionen haben sich als sehr nützlich erwiesen, um die Features zu identifizieren, die Spitzen aufweisen. Das Erstellen einer neuen Ebene "Ängstlichkeit" war sehr einfach, indem sowohl die unveränderten als auch die geänderten Ausgaben auf derselben Ebene und die "gekennzeichnete" Ausgabe auf einer QC-Ebene abgelegt wurden zur weiteren Prüfung. esri.com/software/arcgis/extensions/datainteroperability/…
RyanKDalton

2

Ich bin nicht sicher, wo Ihr Problem auftritt oder wo Sie die Möglichkeit haben, es zu vermeiden / zu beheben. Aber ich habe dies in unserer SDE-Datenbank viel gesehen, obwohl Geometrien in SDE immer korrekt sein sollten. In unserem Fall haben wir Shapefiles mit ArcObjects in die SDE importiert. Wenn die Geometrien gespeichert wurden, rasten sie in das Raster des SDE ein und erzeugten so falsche Geometrien mit den Faserbändern, die Sie beschreiben, als die Geometrie eine dünne Spitze aufwies. Dies liegt daran, dass Shapefiles eine doppelte Genauigkeit für die Koordinaten haben und die SDE ein gröberes Gitter.

Unsere Lösung bestand darin, die Geometrien beim Import wie folgt zu fixieren:
1. Legen Sie den Raumbezug der Geometrie aus dem Shapefile auf den Raumbezug der entsprechenden SDE-Feature-Class fest.
2. Richten Sie die Geometrie am Raumbezug aus (IGeometry.SnapToSpatialReference (). )
3. Setzen Sie ITopologicalOperator2.IsKnownSimple = false (wichtig, sonst macht simplify nichts).
4. Führen Sie einen simplify-Vorgang durch. Für Polygone haben wir IPolygon.SimplifyPreserveFromTo () verwendet.


2

Mit arcmap 9.3.1 würde ich ein Feld namens Flag (oder vielleicht FlagFlag?) Hinzufügen und den VBA-Code im Feldrechner verwenden, um dieses Feld zu berechnen.

Der VBA-Code würde eine Variable als ITopologicalOperator3 dimmen und auf das Feld Shape setzen.

Es würde dann die nicht so einfache IsSimpleEx- Methode aufrufen .

Setzen Sie den Feldwert Flag auf esriNonSimpleEnum . Vermutlich würde der Fehler, von dem Sie betroffen sind, zurückkehren esriNonSimpleSelfIntersections.

Mit 10.0 gibt es möglicherweise eine Möglichkeit, dies mit Python im Taschenrechner zu tun (?) ... Ich bin mir nicht sicher. Ich würde einen Add-In-Befehl verwenden. IMO Esri sollte c # im Feldrechner unterstützen. Immerhin wird der C # -Compiler als Teil des .NET-Frameworks installiert.

Aktualisieren

Der Code, den ich hier gepostet habe, findet möglicherweise Fahnenmasten, wenn Sie einen Definitionsausdruck "Left_OID" = "Right_OID"auf die resultierende Polylinien-Funktionsebene anwenden.


1

Dieses Python-Skript ist ein praktisches Werkzeug

Eliminieren Sie Splitterpolygone aus Shapefiles

"EliminateSlivers.py durchläuft alle Features in einem Polygon-Shapefile und entfernt diejenigen aus dem Ausgabe-Shapefile, die unter einen bestimmten Bereichsschwellenwert fallen.

Geoverarbeitungsvorgänge und Clustertoleranzen können zur Bildung zusätzlicher, winziger Splitterpolygone führen. Diese können bedeutungslos sein und die Zuverlässigkeit der Geodaten beeinträchtigen. "

Hinweis: Sie müssen Ihre Daten mit unterschiedlichen Toleranzen testen (kopieren Sie zuerst Ihre Daten).

http://arcscripts.esri.com/details.asp?dbid=14672


1
Mit ArcInfo-Coverages> Bögen
bereinigen

Ich bin nicht sicher, ob dieses Tool die von mir dargestellten Fehler tatsächlich beseitigen würde. Sie sehen, das Faserband (Fahnenmast) und der Hauptteil des Polygons (Fahne) sind tatsächlich ein Merkmal. Daher würde dieses Skript NUR den "Flaggenmast" -Teil des Polygons entfernen, ohne gleichzeitig die gesamte "Flaggen" -Funktion zu entfernen.
RyanKDalton

1

Ryan,

Ich arbeitete mit dem Bodenuntersuchungsbüro zusammen und überprüfte regelmäßig deren Bodenpolygone. Was ich tue, ist auf Splitter geprüft. Ich schickte die Feature-Class an Coverage und baute sie dann auf, um die Fehler zu identifizieren. Wenn Sie 2 Beschriftungen in einem Polygon sehen, ist dies ein Fehler. Wenn es sich um eine Beschriftung pro Polygon handelt, wissen Sie, dass sie korrekt ist. Ich würde eine Feature-Class erstellen, um einen Fehler zu markieren. Sie können auch eine oder mehrere Beschriftungen in einer neuen Feature-Class auswählen. Auf diese Weise können Sie zurückkehren und den Fehler beheben. Das funktioniert bei mir sehr gut mit den Bodenpolygonen. Ich benutze das, um Bodenwissenschaftler zu informieren, um das Problem zu beheben.

Das ist nur mein Weg, um das Problem zu identifizieren. Teilen Sie das einfach mit Ihnen.


1

Wenn die Identifizierung kein wichtiger Punkt ist und nur die automatische Korrektur, versuchen Sie dies. Fügen Sie die Daten dann einem neuen leeren Kartendokument hinzu.

  • Erstellen Sie eine Kartentopologie
  • Wählen Sie alle Funktionen aus
  • Verwenden Sie die Konstrukt-Features, um vorhandene Features zu teilen

Ich habe dies getestet und es scheint zu funktionieren, aber ich bin nicht sicher, ob ich Ihre Datenquelle genau repliziert habe

Viel Spaß, CDB


1

Hier gibt es ein paar Möglichkeiten, um dies zu lösen, und meiner Meinung nach ist die Verwendung einer Erweiterung namens GIS Data Reviewer die eleganteste . Mit GIS Data Reviewer können Sie zusätzlich zur Kerntopologie benutzerdefinierte und vereinfachte Überprüfungen der räumlichen Genauigkeit und der Attributgenauigkeit erstellen. In der Topologie gibt es Dinge, die nicht verfügbar sind und Teil der Standardprüfungen für Data Reviewer Like sind

  • 3D-Schließung
  • Ungültiges Loch
  • SQL-Ausdruck
  • Fläche kleiner als Raumbezug
  • Feature auf Feature
  • und viele mehr

Ich würde dies verwenden, um Ihre Daten abzufragen. Sie können auch eine neue Feature-Class erstellen, die auf Ihrer vorhandenen Polygon-Feature-Class basiert. Erstellen Sie anschließend eine neue Polygon-Feature-Class und füllen Sie sie mit den Linien mithilfe des Konstruktionsfeatures-Werkzeugs in der Topologie-Symbolleiste auf. Dies würde dann bedeuten, dass die Bänder als solche angezeigt werden und alle anderen Topologie-Tools den Fehler auffangen sollten. Anschließend müssen die Features in der vorhandenen Feature-Class ausgewählt, gelöscht und ersetzt werden.

Hoffe das hilft, CDB

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.