Utilisation de classes dans Python

Une classe est analogue à un plan architectural. Le plan fournit la structure pour une création. Les classes permettent de créer des objets, souvent nommés instances. Les classes ArcPy, telles que les classes SpatialReference et Extent, sont souvent utilisées comme raccourcis vers des paramètres d’outil de géotraitement complets qui présenteraient autrement un équivalent de chaîne plus compliqué.

ArcPy inclut plusieurs classes, notamment SpatialReference, ValueTable et Point. Une fois instanciées, leurs propriétés et méthodes peuvent être utilisées. Les classes disposent d'une ou plusieurs méthodes appelées des constructeurs. Un constructeur est une méthode permettant d'initialiser une nouvelle instance d'une classe. Dans l'exemple ci-dessous, SpatialReference(prjFile) est le constructeur de classe, c'est-à-dire qu'il crée l'objet spatialRef en lisant un fichier de projection.

import arcpy

prjFile = "c:/projections/North America Equidistant Conic.prj"
spatialRef = arcpy.SpatialReference(prjFile)

Comme la plupart des autres classes, SpatialReference contient plusieurs méthodes et propriétés. Dans le cadre de l'exemple précédent, vous pouvez accéder aux propriétés de spatialRef.

import arcpy

prjFile = "c:/projections/North America Equidistant Conic.prj"
spatialRef = arcpy.SpatialReference(prjFile)

# Print the SpatialReference's name, and type
#
print(spatialRef.name)
print(spatialRef.type)

Les classes peuvent être utilisées à plusieurs reprises. Dans l'exemple suivant, deux objets ponctuels uniques sont créés à l'aide de la classe Point.

import arcpy

pointA = arcpy.Point(2.0, 4.5)
pointB = arcpy.Point(3.0, 7.0)
Remarque :

La fonction CreateObject peut également permettre de créer plusieurs des objets qui peuvent être créés à l'aide de classes. Toutefois, l'utilisation de classes est à la fois plus facile et plus lisible.

Utilisation de classes avec les outils de géotraitement

Les paramètres d'un outil sont généralement définis à l'aide de simples chaînes de texte. Vous pouvez spécifier les noms de jeux de données, les chemins, les mots-clés, les noms de champs, les tolérances et les noms de domaines à l'aide d'une chaîne entre guillemets.

Certains paramètres sont plus difficiles à définir à l'aide de chaînes simples ; ils sont plus complexes et nécessitent de nombreuses propriétés. Au lieu d'utiliser des chaînes de texte longues et compliquées pour définir ces paramètres, vous pouvez utiliser des classes (par exemple, les classes SpatialReference, ValueTable et Point). La documentation de chaque outil contient un exemple de script illustrant comment chaque paramètre de l'outil est défini et utilisé.

Dans l'exemple suivant, un objet SpatialReference est créé et utilisé pour définir le système de coordonnées en sortie d'une nouvelle classe d'entités créée à l'aide de l'outil CreateFeatureClass.

import arcpy

inputWorkspace = "c:/temp"
outputName =  "rivers.shp"

prjFile = "c:/projections/North America Equidistant Conic.prj"
spatialRef = arcpy.SpatialReference(prjFile)

# Run CreateFeatureclass using the spatial reference object
#
arcpy.CreateFeatureclass_management(inputWorkspace, outputName, "POLYLINE", 
                                    spatial_reference=spatialRef)

La chaîne équivalente pour ce paramètre ressemble à ceci : PROJCS['North_America_Equidistant_Conic',GEOGCS['GCS_North_American_1983',DATUM['D_North_American_1983',SPHEROID['GRS_1980',6378137.0,298.257222101]],PRIMEM['Greenwich',0.0],UNIT['Degree',0.0174532925199433]],PROJECTION['Equidistant_Conic'],PARAMETER['False_Easting',0.0],PARAMETER['False_Northing',0.0],PARAMETER['Central_Meridian',-96.0],PARAMETER['Standard_Parallel_1',20.0],PARAMETER['Standard_Parallel_2',60.0],PARAMETER['Latitude_Of_Origin',40.0],UNIT['Meter',1.0]];IsHighPrecision

Rubriques connexes