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.
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.
quelle
Antworten:
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
quelle
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.
quelle
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.quelle
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
quelle
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.
quelle
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.
Ich habe dies getestet und es scheint zu funktionieren, aber ich bin nicht sicher, ob ich Ihre Datenquelle genau repliziert habe
Viel Spaß, CDB
quelle
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
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
quelle