Lesen von Geometrien

Jedes Feature in einer Feature-Class enthält mehrere Punkte, mit denen die Stützpunkte eines Polygons oder einer Linie definiert werden, oder eine einzelne Koordinate, mit der ein Punkt-Feature definiert wird. Auf diese Punkte kann mit geometrischen Objekten zugegriffen werden (Polygon, Polylinie, PointGeometry oder MULTIPOINT), die die Punkte in einem Array von Punkt-Objekten zurückgeben.

Features können mehrere Teile haben. Die partCount-Eigenschaft des Geometrieobjekts gibt die Anzahl der Teile eines Features zurück. Die Methode getPart gibt ein Array von Punktobjekten für einen bestimmten Teil der Geometrie zurück, wenn ein Indexwert angegeben ist. Wenn kein Indexwert angegeben ist, wird ein Array zurückgegeben, das für jeden Teil der Geometrie ein Array von Punktobjekten enthält.

Bei PointGeometry-Features wird kein Array von Punktobjekten, sondern ein einzelnes Punkt-Objekt zurückgegeben. Bei allen anderen Feature-Typen (Polygon, Polylinie und Multipoint) wird ein Array von Punktobjekten oder, wenn das Feature aus mehreren Teilen besteht, ein Array mit Arrays von Punktobjekten zurückgegeben.

Wenn ein Polygon Löcher enthält, besteht es aus mehreren Ringen. Das Array von Punktobjekten, das für ein Polygon zurückgegeben wird, enthält die Punkte des äußeren Rings und aller inneren Ringe. Der äußere Ring wird stets zuerst zurückgegeben, anschließend die inneren Ringe, wobei NULL-Punktobjekte als Trennzeichen zwischen Ringen verwendet werden. Wenn ein Skript Koordinaten für Polygone in einer Geodatabase oder einem Shapefile liest, muss es eine Logik für die Verarbeitung der inneren Ringe enthalten, wenn diese Informationen für das Skript erforderlich sind. Andernfalls wird nur der äußere Ring gelesen.

Ein Multipart-Feature besteht aus mehreren Teilen, verweist aber nur auf einen Attributsatz in der Datenbank. Bei einem Staaten-Layer kann beispielsweise der Staat Hawaii als Multipart-Feature betrachtet werden. Obwohl Hawaii aus vielen Inseln besteht, wird es in der Datenbank als einzelnes Feature gespeichert.

Ein Ring ist ein geschlossener Pfad, der einen zweidimensionalen Bereich definiert. Ein gültiger Ring besteht aus einem gültigen Pfad, bei dem der Von- und der Bis-Punkt des Ringes dieselben XY-Koordinaten aufweisen. Ein Ring im Uhrzeigersinn ist ein äußerer Ring, ein Ring gegen den Uhrzeigersinn ist als innerer Ring definiert.

Weitere Informationen zum Schreiben von Geometrien

Verwenden von Geometrie-Token

Statt auf vollständige Geometrieobjekte zuzugreifen, können Geometrie-Token auch als Verknüpfungen verwendet werden. Zusätzliche Geometrie-Token können verwendet werden, um auf bestimmte Geometrieinformationen zuzugreifen. Der Zugriff auf die vollständige Geometrie ist zeitaufwendiger. Wenn Sie nur bestimmte Eigenschaften der Geometrie benötigen, stellen Sie mithilfe von Token Verknüpfungen bereit, um auf Geometrieeigenschaften zuzugreifen. Zum Beispiel gibt SHAPE@XY ein Tupel von XY-Koordinaten zurück, die den Schwerpunkt des Features darstellen.

Token

Erläuterung

SHAPE@

A geometry object for the feature.

SHAPE@XY

A tuple of the feature's centroid x,y coordinates.

SHAPE@TRUECENTROID

A tuple of the feature's true centroid x,y coordinates.

SHAPE@X

A double of the feature's x-coordinate.

SHAPE@Y

A double of the feature's y-coordinate.

SHAPE@Z

A double of the feature's z-coordinate.

SHAPE@M

A double of the feature's m-value.

SHAPE@JSON

The esri JSON string representing the geometry.

SHAPE@WKB

The well-known binary (WKB) representation for OGC geometry. It provides a portable representation of a geometry value as a contiguous stream of bytes.

SHAPE@WKT

The well-known text (WKT) representation for OGC geometry. It provides a portable representation of a geometry value as a text string.

SHAPE@AREA

A double of the feature's area.

SHAPE@LENGTH

A double of the feature's length.

Lesen von Punktgeometrien

Die folgenden Beispiele verwenden SearchCursor zum Drucken der Koordinaten sämtlicher Features:

Such-Cursor für Point-Feature-Class
import arcpy

infc = arcpy.GetParameterAsText(0)

# Enter for loop for each feature
#
for row in arcpy.da.SearchCursor(infc, ["SHAPE@XY"]):
    # Print x,y coordinates of each point feature
    #
    x, y = row[0]
    print("{0}, {1}".format(x, y))
Punkt-Geometrie

Mit der obigen Feature-Class gibt das Skript die folgenden Informationen zurück:

2.0 4.0
8.0 10.0
7.0 5.0

Lesen von Multipoint-Geometrien

Such-Cursor für Multipoint-Feature-Class
import arcpy

infc = arcpy.GetParameterAsText(0)

# Enter for loop for each feature
#
for row in arcpy.da.SearchCursor(infc, ["OID@", "SHAPE@"]):
    # Print the current multipoint's ID
    #
    print("Feature {0}:".format(row[0]))

    # For each point in the multipoint feature,
    #  print the x,y coordinates
    for pnt in row[1]:
        print("{0}, {1}".format(pnt.X, pnt.Y))
Multipoint-Geometrie

Mit der obigen Feature-Class gibt das Skript die folgenden Informationen zurück:

Feature 0:
3.0 8.0
4.0 4.0
6.0 6.0
Feature 1:
5.0 9.0
8.0 10.0
Feature 2:
9.0 5.0

Lesen von Polylinien- oder Polygongeometrien

Such-Cursor für Polygon- oder Line-Feature-Class
import arcpy

infc = arcpy.GetParameterAsText(0)

# Enter for loop for each feature
#
for row in arcpy.da.SearchCursor(infc, ["OID@", "SHAPE@"]):
    # Print the current multipoint's ID
    #
    print("Feature {0}:".format(row[0]))
    partnum = 0

    # Step through each part of the feature
    #
    for part in row[1]:
        # Print the part number
        #
        print("Part {0}:".format(partnum))

        # Step through each vertex in the feature
        #
        for pnt in part:
            if pnt:
                # Print x,y coordinates of current point
                #
                print("{0}, {1}".format(pnt.X, pnt.Y))
            else:
                # If pnt is None, this represents an interior ring
                #
                print("Interior Ring:")
        partnum += 1
Polygon-Geometrie

Mit der obigen Feature-Class gibt das Skript die folgenden Informationen zurück. Feature 0 ist ein Singlepart-Polygon, Feature 1 ist ein zweiteiliges Polygon, und Feature 2 ist ein Singlepart-Polygon mit einem inneren Ring.

Feature 0:
Part 0:
3.0 8.0
1.0 8.0
2.0 10.0
3.0 8.0
Feature 1:
Part 0:
5.0 3.0
3.0 3.0
3.0 5.0
5.0 3.0
Part 1:
7.0 5.0
5.0 5.0
5.0 7.0
7.0 5.0
Feature 2:
Part 0:
9.0 11.0
9.0 8.0
6.0 8.0
6.0 11.0
9.0 11.0
Interior Ring:
7.0 10.0
7.0 9.0
8.0 9.0
8.0 10.0
7.0 10.0

Verwandte Themen

9/11/2013