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 peuvent être sélectionnés avec des objets géométrie (Polygon, Polyline, PointGeometry ou MultiPoint), qui les renvoient dans 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 contient 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("{}, {}".format(x, y))
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 {}:".format(row[0]))
# For each point in the multipoint feature,
# print the x,y coordinates
for pnt in row[1]:
print("{}, {}".format(pnt.X, pnt.Y))
Avec la classe d'entités ci-dessus, le script renvoie 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 {}:".format(row[0]))
partnum = 0
# Step through each part of the feature
#
for part in row[1]:
# Print the part number
#
print("Part {}:".format(partnum))
# Step through each vertex in the feature
#
for pnt in part:
if pnt:
# Print x,y coordinates of current point
#
print("{}, {}".format(pnt.X, pnt.Y))
else:
# If pnt is None, this represents an interior ring
#
print("Interior Ring:")
partnum += 1
Avec la classe d'entités ci-dessus, le script renvoie 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