Polygon in Linie (Data Management)

Zusammenfassung

Erstellt eine Line-Feature-Class aus den Grenzen von Polygon-Features, wobei optional benachbarte Polygone berücksichtigt werden können.

Abbildung

Abbildung des Werkzeugs "Polygon in Linie"

Verwendung

  • Wenn der Parameter Informationen zu benachbarten Polygonen identifizieren und speichern aktiviert ist, wird die Beziehung zu benachbarten Polygonen analysiert. Die Grenzen werden in Linien konvertiert, wobei kreuzende oder gemeinsame Segmente berücksichtigt werden. Die folgenden Felder werden der Ausgabe hinzugefügt:

    • LEFT_FID– Die Feature-ID des Eingabe-Polygons links von der Ausgabelinie.
    • RIGHT_FID– Die Feature-ID des Eingabe-Polygons rechts von der Ausgabelinie.
    Die Attribute der Eingabe-Features werden in der Ausgabe 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 als Wert auf.
    • Wenn ein Polygon ein anderes Polygon enthält, wird eine Ausgabelinie im Uhrzeigersinn als gemeinsame Grenze generiert. Das zugehörige Feld LEFT_FID enthält dann als Wert die Feature-ID des äußeren Polygons und das Feld RIGHT_FID als Wert die Feature-ID des inneren Polygons.
    • Wenn sich zwei Polygone einen Teil ihrer Grenzen teilen, wird als gemeinsames Segment eine Ausgabelinie generiert. Die Linienrichtung ist beliebig; die Werte der Felder LEFT_FID und RIGHT_FID entsprechen der Feature-ID des linken bzw. des rechten Polygons.
    • Wenn ein Polygon ein anderes überlappt, werden zwei Ausgabelinien generiert, die jede sich kreuzende Grenze zweimal darstellen. Die erste Linie stellt die äußere Grenze eines der überlappenden Polygone dar. Der Wert des zugehörigen LEFT_FID-Feldes entspricht der Feature-ID des gekreuzten Polygons und der Wert des RIGHT_FID-Feldes seiner eigenen Polygon-Feature-ID. Die zweite Linie verläuft in die Gegenrichtung und teilt dadurch das andere Polygon. Die Werte der Felder LEFT_FID und RIGHT_FID sind mit der Feature-ID des anderen Polygons identisch.
    • Eingabe-Multipart-Features werden nicht beibehalten; alle Ausgabelinien sind Singlepart.

    Bei einem Eingabe-Feature, das eine parametrische (echte) Kurve ist, bleibt die Ausgabelinie auch bei Teilung eine echte Kurve.

    Dieser Parameter verwendet einen Kachelvorgang, um beim Verarbeiten sehr großer Datasets eine bessere Performance und Skalierbarkeit zu erzielen.

  • Wenn der Parameter Informationen zu benachbarten Polygonen identifizieren und speichern deaktiviert ist, wird jedes Eingabe-Polygon in ein eingeschlossenes Linien-Feature konvertiert. Multipart-Polygone werden in eine Multipart-Linie konvertiert.

    Der Ausgabe wird das Feld ORIG_FID mit der Feature-ID jeder Eingabelinie hinzugefügt. Die Attribute der Eingabe-Features werden in der Ausgabe beibehalten.

Parameter

BeschriftungErläuterungDatentyp
Eingabe-Features

Die Eingabe-Polygon-Features.

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 in der Ausgabe gespeichert werden.

  • 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 Feature-IDs der beiden benachbarten Polygone werden in der Ausgabe gespeichert. 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-Polygon-Features.

Feature Layer
out_feature_class

Die Ausgabe-Line-Feature-Class

Feature Class
neighbor_option
(optional)

Gibt an, ob Informationen zu benachbarten Polygonen identifiziert und in der Ausgabe gespeichert werden.

  • 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 Feature-IDs 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.management.PolygonToLine("Habitat_Analysis.gdb/vegtype", 
                               "C:/output/Output.gdb/vegtype_lines",
                               "IGNORE_NEIGHBORS")
PolygonToLine – Beispiel 2 (eigenständiges Skript)

Das folgende eigenständige Skript veranschaulicht, wie die Funktion PolygonToLine verwendet wird.

# Name: PolygonToLine_Example2.py
# Description: Use the 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.management.PolygonToLine(inFeatureClass, outFeatureClass)

# Select lines that have LEFT_FID values greater than -1
arcpy.management.MakeFeatureLayer(outFeatureClass, "selection_lyr", 
                                  "\"LEFT_FID\" > -1")
result = arcpy.management.GetCount("selection_lyr")

if result[0] == "0":
    print("No overlapping or shared boundary lines were found.")
else:
    print(f"{result[0]} overlapping or shared boundary lines were found.")

Verwandte Themen