Lecture des géométries

Chaque entité d'une classe d'entités contient un ensemble de points définissant les sommets d'un polygone ou d'une ligne, ou une coordonnée unique définissant une entité ponctuelle. Ces points sont accessibles par le biais des objets géométrie (Polygon, Polyline, PointGeometry ou MultiPoint), qui les renvoient sous la forme d'un tableau d'objets Point.

Les entités peuvent être composées de plusieurs parties. La propriété partCount de l'objet géométrie renvoie le nombre de parties d'une entité. La méthode getPart renvoie un tableau d'objets point d'une partie particulière de la géométrie si un index est spécifié. Si aucun index n'est spécifié, un tableau contenant un tableau des objets point de chaque partie de géométrie est renvoyé.

Les entités PointGeometry renvoient un objet Point unique au lieu d'un tableau d'objets point. Tous les autres types d'entités (polygone, polylignes et multi-points) renvoient un tableau d'objets point ou un tableau contenant plusieurs tableaux d'objets point si l'entité comporte plusieurs parties.

Si un polygone comporte des trous, il est composé de plusieurs boucles. Le tableau d'objets point renvoyé pour un polygone contient les points de la boucle extérieure et de toutes les boucles intérieures. La boucle extérieure est toujours renvoyée en premier, suivie des boucles intérieures, les objets point nuls servant de séparateur entre les boucles. Lorsqu'un script lit les coordonnées des polygones d'une géodatabase ou d'un fichier de formes, il doit contenir une logique permettant de gérer les boucles intérieures si ces informations sont nécessaires au script ; sinon, seule la boucle extérieure est lue.

Une entité multi-parties est composée de plusieurs parties physiques mais qui ne référence qu'un seul jeu d'attributs dans la base de données. Par exemple, dans une couche d'états, l'état d'Hawaï peut être considéré comme une entité multi-parties. Bien que composé de nombreuses îles, il est enregistré dans la base de données comme une seule entité.

Une boucle représente un chemin fermé qui définit une aire bidimensionnelle. Une boucle valide se compose d'un chemin valide, tel que les points de départ et d'arrivée de la boucle présentent les mêmes coordonnées x,y. Une boucle orientée dans le sens horaire représente une boucle extérieure, et une boucle orientée dans le sens anti-horaire définit une boucle intérieure.

Pour en savoir plus sur l'écriture des géométries

Utilisation des jetons de géométrie

Les jetons de géométrie peuvent également être utilisés en tant que raccourcis au lieu d'accéder aux objets géométrie complets. Les jetons de géométrie supplémentaires peuvent permettre d'accéder à des informations de géométrie spécifiques. L'accès à l’intégralité de la géométrie prend plus de temps. Si vous n'avez besoin que de propriétés spécifiques de la géométrie, utilisez les jetons pour fournir des raccourcis permettant d'accéder aux propriétés de géométrie. Par exemple, SHAPE@XY renvoie un tuple de coordonnées x,y représentant le centroïde de l'entité.

Jeton

Explication

SHAPE@

Objet géométrie de l'entité.

SHAPE@XY

Tuple des coordonnées x,y du centroïde de l'entité.

SHAPE@TRUECENTROID

Tuple des coordonnées x,y du centroïde réel de l'entité.

SHAPE@X

Double de la coordonnée x de l'entité.

SHAPE@Y

Double de la coordonnée y de l'entité.

SHAPE@Z

Double de la coordonnée z de l'entité.

SHAPE@M

Double de la valeur m de l'entité.

SHAPE@JSON

Chaîne JSON d'esri représentant la géométrie.

SHAPE@WKB

Représentation binaire connue (WKB) de la géométrie de l'OGC. Cette représentation constitue une représentation portable d'une valeur de géométrie sous la forme d'un flux contigu d'octets.

SHAPE@WKT

Représentation textuelle connue (WKT) de la géométrie de l'OGC. Cette représentation constitue une représentation portable d'une valeur de géométrie sous la forme d'une chaîne de texte.

SHAPE@AREA

Double de la surface de l'entité.

SHAPE@LENGTH

Double de la longueur de l'entité.

Lecture des géométries ponctuelles

Les exemples ci-dessous utilisent SearchCursor pour afficher les coordonnées de toutes les entités :

Curseur de recherche dans une classe d'entités points
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))
Géométrie ponctuelle

Avec la classe d'entités ci-dessus, le script renvoie les informations ci-dessous :

2.0 4.0
8.0 10.0
7.0 5.0

Lecture des géométries multi-points

Curseur de recherche dans une classe d'entités multi-points
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))
Géométrie multi-points

Avec la classe d'entités ci-dessus, le script retourne les informations ci-dessous :

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

Lecture des géométries de polyligne et de polygone

Curseur de recherche dans une classe d'entités surfaciques ou linéaires
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
Géométrie de polygone

Avec la classe d'entités ci-dessus, le script retourne les informations ci-dessous. L'entité 0 est un polygone en une partie, l'entité 1 est un polygone composé de deux parties et l'entité 2 est un polygone en une partie avec une boucle intérieure.

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

Thèmes connexes

5/10/2014