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 via des objets de géométrie (Polygon, Polyline, PointGeometry ou MultiPoint), qui les renvoient dans une matrice d’objets Point.
Les entités peuvent être composées de plusieurs parties. La propriété partCount de l’objet de géométrie renvoie le nombre de parties d’une entité. La méthode getPart renvoie une matrice d’objets ponctuels pour une partie donnée 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’une matrice d’objets ponctuels. Tous les autres types d’entités (surfaciques, polylignes et multi-points) renvoient une matrice d’objets ponctuels ou, si l’entité comprend plusieurs parties, une matrice contenant plusieurs matrices d’objets ponctuels.
Si un polygone contient des trous, il est composé de plusieurs boucles. Le tableau d’objets ponctuels 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 ponctuels 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 ne fait 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.
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’ensemble 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 des 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 qui représentent 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 de l’entité. La valeur renvoyée est la même que SHAPE@XY. |
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.
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 suivantes :
2.0 4.0
8.0 10.0
7.0 5.0
Lecture des géométries 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 suivantes :
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
import arcpy
infc = arcpy.GetParameterAsText(0)
# Enter for loop for each feature
for row in arcpy.da.SearchCursor(infc, ["OID@", "SHAPE@"]):
# Print the current polygon or polyline'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
Vous avez un commentaire à formuler concernant cette rubrique ?