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 comprend plusieurs classes, y compris 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 : 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. En vous basant sur 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 point uniques sont créés en utilisant la classe Point.
import arcpy pointA = arcpy.Point(2.0, 4.5) pointB = arcpy.Point(3.0, 7.0)
La fonction CreateObject permet également de créer de nombreux objets pouvant ê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", "", "", "", spatialRef)
La chaîne équivalente pour ce paramètre présente l'aspect suivant : 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