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 peuvent être sélectionnés à l'aide de l'objet géométrie qui les renvoie dans un tableau d'objets point.

Propriété

Explication

count

Nombre d'objets dans le tableau.

Propriétés des tableaux

Méthode

Explication

add(value)

Ajoute un objet Array ou Point dans le tableau en dernière position.

append(value)

Ajoute un objet dans le tableau en dernière position.

clone(point_object)

Clone l'objet point.

extend(items)

Etend le tableau en ajoutant des éléments.

getObject(index)

Retourne un objet spécifique du tableau.

insert(index, value)

Ajoute un objet dans le tableau à une position spécifique.

next()

Retourne l'objet suivant dans le tableau.

remove(index)

Supprime un objet spécifique du tableau.

removeAll()

Supprime tous les objets et crée un tableau vide.

replace(index, value)

Remplace un objet à l'aide de la position d'index.

reset()

Réinitialise le tableau au premier objet.

RemarqueRemarque :

La fonction reset est utilisée uniquement pour les objets Array non-curseurs. L'utilisation de Reset sur un objet Array curseur ne réinitialisera pas au premier enregistrement.

Méthodes des tableaux

Les entités d'une géodatabase ou d'un fichier de formes peuvent se composer 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 ponctuelles 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.

Propriété

Explication

ID

Identifiant de forme du point.

X

Coordonnée horizontale du point

O

Coordonnée verticale du point

Z

Valeur d'altitude du point

M

Valeur de mesure du point

Propriétés des points

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, de sorte 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

Les exemples ci-dessous affichent les coordonnées de toutes les entités :

Lecture des géométries ponctuelles

Curseur de recherche dans une classe d'entités points

import arcpy

infc = arcpy.GetParameterAsText(0)

# Identify the geometry field
#
desc = arcpy.Describe(infc)
shapefieldname = desc.ShapeFieldName

# Create search cursor
#
rows = arcpy.SearchCursor(infc)

# Enter for loop for each feature/row
#
for row in rows:
    # Create the geometry object 'feat'
    #
    feat = row.getValue(shapefieldname)
    pnt = feat.getPart()

    # Print x,y coordinates of current point
    #
    print pnt.X, pnt.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)

# Identify the geometry field
#
desc = arcpy.Describe(infc)
shapefieldname = desc.ShapeFieldName

# Create search cursor
#
rows = arcpy.SearchCursor(infc)

# Enter for loop for each feature/row
#
for row in rows:
    # Create the geometry object
    #
    feat = row.getValue(shapefieldname)

    # Print the current multipoint's ID
    #
    print "Feature %i:" % row.getValue(desc.OIDFieldName)

    # For each point in the multipoint feature,
    #  print the x,y coordinates
    for pnt in feat:
        print 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)

# Identify the geometry field
#
desc = arcpy.Describe(infc)
shapefieldname = desc.ShapeFieldName

# Create search cursor
#
rows = arcpy.SearchCursor(infc)

# Enter for loop for each feature/row
#
for row in rows:
    # Create the geometry object
    #
    feat = row.getValue(shapefieldname)

    # Print the current multipoint's ID
    #
    print "Feature %i:" % row.getValue(desc.OIDFieldName)
    partnum = 0

    # Step through each part of the feature
    #
    for part in feat:
        # Print the part number
        #
        print "Part %i:" % partnum

        # Step through each vertex in the feature
        #
        for pnt in feat.getPart(partnum):
            if pnt:
                # Print x,y coordinates of current point
                #
                print 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

Rubriques connexes


7/10/2012