Polygon zu Linie (Data Management)
Zusammenfassung
Erstellt eine Feature-Class, die Linien enthält, die aus Polygongrenzen mit oder ohne Berücksichtigung benachbarter Polygone umgewandelt wurden.
Abbildung
Verwendung
Wenn das Kontrollkästchen, Informationen zu benachbarten Polygonen identifizieren und speichern aktiviert ist (neighbor_option bei Skripterstellung auf "IDENTIFY_NEIGHBORS" festgelegt), wird die Beziehung zu benachbarten Polygonen analysiert. Wie oben illustriert werden die Grenzen unter Berücksichtigung sich kreuzender oder gemeinsamer Segmente in Linien umgewandelt. Die Ausgabe-Feature-Class wird mit zwei neuen Feldern ("LEFT_FID" und "RIGHT_FID") ergänzt und auf die Feature-IDs der Eingabepolygone links und rechts der einzelnen Ausgabelinien gesetzt. Die Attribute der Eingabe-Features werden in der Ausgabe-Feature-Class nicht beibehalten. Folgende Szenarien sollen Prozess und Ausgabe weitergehend illustrieren:
- In einer Polygongeometrie wird die äußere Grenze immer im Uhrzeigersinn gespeichert. Wenn das Polygon ein Loch hat, wird die Lochgrenze (innere Grenze) immer gegen den Uhrzeigersinn gespeichert. Bei einem Polygon ohne Nachbarn auf der linken Seite der Außengrenze und der linken Seite der Lochgrenze weisen die entstehenden Linien daher im Feld "LEFT_FID" den Wert "-1" und im Feld "RIGHT_FID" die Polygon-Feature-ID auf.
- Enthält ein Polygon ein anderes Polygon, wird eine Ausgabelinie im Uhrzeigersinn als gemeinsame Grenze erstellt. Das zugehörige Feld "LEFT_FID" enthält dann die Feature-ID des äußeren Polygons und das Feld "RIGHT_FID" die Feature-ID des inneren Polygons.
- Teilen sich zwei Polygone einen Teil ihrer Grenzen, wird als gemeinsames Segment eine Ausgabelinie gebildet. Die Linienrichtung ist beliebig; "LEFT_FID" und "RIGHT_FID" werden entsprechend auf die Feature-ID des linken oder rechten Polygons festgelegt.
- Überlappt ein Polygon ein anderes, werden zwei Ausgabelinien erstellt. Diese stellen jede sich kreuzende Grenze zweimal dar: die erste Linie entspricht der äußeren Grenze einer der beiden Polygone. "LEFT_FID" ist daher die Feature-ID des Polygons, die sie schneidet. "RIGHT_FID" ist die eigene Polygon-Feature-ID. Die zweite Linie verläuft in der entgegengesetzten Richtung und teilt das andere Polygon. Daher sind "LEFT_FID" und "RIGHT_FID" mit der Feature-ID des anderen Polygons identisch.
- Multiparts in Eingabepolygonen werden nicht beibehalten; die Ausgabelinien sind alle Singlepart.
-
Wenn das Kontrollkästchen, Informationen zu benachbarten Polygonen identifizieren und speichern deaktiviert ist (neighbor_option bei Skripterstellung auf "IGNORE_NEIGHBORS" festgelegt), wird die Beziehung zu benachbarten Polygonen nicht berücksichtigt. Jede Eingabepolygongrenze wird als eingeschlossenes Linien-Feature ausgegeben. Ein Multipart-Polygon wird als Multipart-Linie ausgegeben. Die Attribute der Eingabe-Features werden in der Ausgabe-Feature-Class beibehalten. Das Feld "ORIG_FID" wird der Ausgabe-Feature-Class hinzugefügt und auf die IDs der einzelnen Eingabe-Features gesetzt.
-
Für parametrische (echte) Kurven-Eingabe-Features bleiben die Ausgabelinien auch bei Teilung echte Kurven. Dies gilt nicht für Shapefile-Daten.
Syntax
Parameter | Erläuterung | Datentyp |
in_features |
Die Eingabe-Features müssen Polygone sein. | Feature Layer |
out_feature_class |
Die Feature-Class der Ausgabelinie | Feature Class |
neighbor_option (optional) |
Gibt an, ob Informationen zu benachbarten Polygonen identifiziert und gespeichert werden sollen.
| Boolean |
Codebeispiel
Das folgende Skript im Python-Fenster veranschaulicht, wie Sie die Funktion "PolygonToLine" im unmittelbaren Modus verwenden.
import arcpy from arcpy import env env.workspace = "C:/data" arcpy.PolygonToLine_management("Habitat_Analysis.gdb/vegtype", "C:/output/Output.gdb/vegtype_lines", "IGNORE_NEIGHBORS")
Das folgende eigenständige Skript ist ein einfaches Beispiel für die Anwendung der Funktion "PolygonToLine" in einer Scripting-Umgebung.
# Name: PolygonToLine_Example2.py # Description: Use PolygonToLine function to convert polygons to lines, # and report how many shared or overlapping boundary lines # were found. # Author: ESRI # import system modules import arcpy from arcpy import env # Set environment settings env.workspace = "C:/data/landcovers.gdb" # Create variables for the input and output feature classes inFeatureClass = "bldgs" outFeatureClass = "bldgs_lines" # Use error trapping in case a problem occurs when running the tool try: # Run PolygonToLine to convert polygons to lines using default neighbor_option arcpy.PolygonToLine_management(inFeatureClass, outFeatureClass) # Select lines that have LEFT_FID values greater than -1 arcpy.MakeFeatureLayer_management(outFeatureClass, "selection_lyr", "\"LEFT_FID\" > -1") result = arcpy.GetCount_management("selection_lyr") if (result.getOutput(0) == "0"): print "No overlapping or shared boundary lines were found." else: print result.getOutput(0) + " overlapping or shared " +\ "boundary lines were found." except Exception, e: # If an error occurred, print line number and error message import traceback, sys tb = sys.exc_info()[2] print "Line %i" % tb.tb_lineno print e.message