Polygon in 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

Abbildung "Polygon in Linie"

Verwendung

  • Wenn das Kontrollkästchen Informationen zu benachbarten Polygonen identifizieren und speichern aktiviert ist (in Python: neighbor_option ist 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 den Vorgang und die 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 (außerhalb) und der Lochgrenze (innerhalb) weisen die resultierenden 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 eines der überlappenden 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.

    Für parametrische (echte) Kurven-Eingabe-Features bleiben die Ausgabelinien auch bei Teilung echte Kurven. Dies gilt nicht für Shapefile-Daten.

    Diese Option verwendet einen Kachelvorgang, um beim Verarbeiten sehr großer Datasets eine bessere Performance und Skalierbarkeit zu erzielen. Weitere Informationen finden Sie unter Gekachelte Verarbeitung großer Datasets.

  • Wenn das Kontrollkästchen Informationen zu benachbarten Polygonen identifizieren und speichern deaktiviert ist (in Python: neighbor_option ist auf IGNORE_NEIGHBORS festgelegt), wird die Beziehung zu benachbarten Polygonen ignoriert. 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.

Parameter

BeschriftungErläuterungDatentyp
Eingabe-Features

Die Eingabe-Features müssen Polygone sein.

Feature Layer
Ausgabe-Feature-Class

Die Ausgabe-Line-Feature-Class

Feature Class
Informationen zu benachbarten Polygonen identifizieren und speichern
(optional)

Gibt an, ob Informationen zu benachbarten Polygonen identifiziert und gespeichert werden sollen.

  • Aktiviert: Informationen zu benachbarten Polygonen werden identifiziert und in der Ausgabe gespeichert. Wenn verschiedene Segmente eines Polygons ihre Grenze mit anderen Polygonen teilen, wird die Grenze so geteilt, dass jedes eindeutig gemeinsame Segment zu einer Linie wird. Die FIDs der beiden benachbarten Polygone werden in der Ausgabe gespeichert (siehe Abbildung). Dies ist die Standardeinstellung.
  • Deaktiviert: Informationen zu benachbarten Polygonen werden ignoriert. Jede Polygongrenze wird zu einem Linien-Feature; die ursprüngliche Polygon-Feature-ID wird in der Ausgabe gespeichert.

Boolean

arcpy.management.PolygonToLine(in_features, out_feature_class, {neighbor_option})
NameErläuterungDatentyp
in_features

Die Eingabe-Features müssen Polygone sein.

Feature Layer
out_feature_class

Die Ausgabe-Line-Feature-Class

Feature Class
neighbor_option
(optional)

Gibt an, ob Informationen zu benachbarten Polygonen identifiziert und gespeichert werden sollen.

  • IDENTIFY_NEIGHBORSInformationen zu benachbarten Polygonen werden identifiziert und in der Ausgabe gespeichert. Wenn verschiedene Segmente eines Polygons ihre Grenze mit anderen Polygonen teilen, wird die Grenze so geteilt, dass jedes eindeutig gemeinsame Segment zu einer Linie wird. Die FIDs der beiden benachbarten Polygone werden in der Ausgabe gespeichert. Dies ist die Standardeinstellung.
  • IGNORE_NEIGHBORSInformationen zu benachbarten Polygonen werden ignoriert. Jede Polygongrenze wird zu einem Linien-Feature; die ursprüngliche Polygon-Feature-ID wird in der Ausgabe gespeichert.
Boolean

Codebeispiel

PolygonToLine – Beispiel 1 (Python-Fenster)

Das folgende Skript für das Python-Fenster veranschaulicht, wie die Funktion PolygonToLine im unmittelbaren Modus verwendet wird.

import arcpy
arcpy.env.workspace = "C:/data"
arcpy.PolygonToLine_management("Habitat_Analysis.gdb/vegtype", 
                               "C:/output/Output.gdb/vegtype_lines",
                               "IGNORE_NEIGHBORS")
PolygonToLine – Beispiel 2 (eigenständiges Skript)

Das folgende eigenständige Skript ist ein einfaches Beispiel für die Anwendung der Funktion PolygonToLine in einer Skriptumgebung.

# Name: PolygonToLine_Example2.py
# Description: Use PolygonToLine function to convert polygons to lines,
#              and report how many shared or overlapping boundary lines
#              were found.
# import system modules 
import arcpy
# Set environment settings
arcpy.env.workspace = "C:/data/landcovers.gdb"
 
# Create variables for the input and output feature classes
inFeatureClass = "bldgs"
outFeatureClass = "bldgs_lines"
 
# 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[0] == "0":
    print("No overlapping or shared boundary lines were found.")
else:
    print("{} overlapping or shared boundary lines were found.".format(result[0]))

Verwandte Themen