Utilisation de paramètres d'environnement dans Python
Chaque outil contient un ensemble de paramètres servant à exécuter une opération. Certains de ces paramètres sont communs à tous les outils, tels que la tolérance ou l'emplacement en sortie. Ces paramètres peuvent extraire leurs valeurs par défaut d'un environnement de géotraitement utilisé par tous les outils lors de leur exécution. Lorsqu'un outil est exécuté, les paramètres d'environnement courants peuvent également servir de valeurs de paramètres en entrée globales. Les paramètres tels qu'une zone d'intérêt, la référence spatiale du jeu de données en sortie et la taille de cellule d'un nouveau jeu de données raster, peuvent tous être définis avec les environnements de géotraitement.
Un script peut être exécuté de plusieurs façons différentes. Il peut être exécuté comme outil de script dans une application ArcGIS telle qu'ArcMap. Il peut également être exécuté à partir d'un autre script ou par lui-même à l'aide d'une fenêtre Python. Lorsqu'un script est exécuté à l'intérieur d'une application ArcGIS ou à partir d'un autre script de géotraitement, les paramètres d'environnement utilisés par l'application ou le script d'appel sont transmis à ce script. Ces paramètres deviennent les paramètres par défaut utilisés par le script de l'outil lors de son exécution. Le script appelé peut modifier les paramètres qui lui sont transmis, mais ces modifications servent uniquement dans ce script ou dans tout autre outil qu'il appelle. Les modifications ne sont pas renvoyées au script ou à l'application qui appelle. Le modèle d'environnement peut être décrit comme une cascade dans laquelle les valeurs sont transmises à un processus utilisant l'environnement de géotraitement.
Obtention et définition des paramètres d'environnement
Les paramètres d'environnement sont exposés en tant que propriétés sur la classe env. Ces propriétés peuvent servir à extraire les valeurs actuelles ou à les définir. Chaque paramètre d'environnement comporte un nom et une étiquette. Les étiquettes s'affichent dans la boîte de dialogue Paramètres d'environnement d'ArcGIS. Les noms sont utilisés dans les scripts ou dans la ligne de commande des applications ArcGIS. Voici des exemples d'utilisation des valeurs d'environnement :
Les environnements sont accessibles en tant que propriétés en lecture/écriture de la classe d'environnements, sous la forme arcpy.env.<environmentName>. Au lieu de préfixer chaque nom d'environnement avec arcpy.env, vous pouvez également simplifier votre code en tirant parti de l'instruction from-import de Python. Cette alternative présente l'avantage de simplifier votre code et de faciliter sa lecture.
import arcpy |
from arcpy import env |
---|---|
import arcpy arcpy.env.workspace = "c:/data" |
import arcpy from arcpy import env env.workspace = "c:/data" |
Exemple 1 : définition de valeurs d'environnement
import arcpy from arcpy import env # Set the workspace environment setting # env.workspace = "c:/St_Johns/data.gdb" # Set the XYTolerance environment setting # env.XYTolerance = 2.5 # Calculate the default spatial grid index, divide in half, then # set the spatial grid 1 environment setting # result = arcpy.CalculateDefaultGridIndex_management("roads") env.spatialGrid1 = float(result.getOutput(0)) / 2 # Clip the roads by the urban area feature class # arcpy.Clip_analysis("roads","urban_area","urban_roads")
Exemple 2 : obtention et définition d'une valeur d'environnement
import arcpy from arcpy import env # Check the current raster cell size and make sure it is a certain size # for standard output # env.workspace = "c:/avalon/data" if env.cellSize < 10: env.cellSize = 10 elif env.cellSize > 20: env.cellSize = 20 arcpy.HillShade_3d("island_dem", "island_shade", 300)
L'orthographe et la casse sont importants lors de la définition de valeurs d'environnement. L'affectation d'une valeur à arcpy.env.Workspace est différente de arcpy.env.workspace (remarque : arcpy.env.workspace correspond à la forme correcte). Si vous avez défini un environnement mais ne constatez pas l'effet attendu sur les outils ultérieurs, vérifiez l'orthographe et la casse.
La fonction ListEnvironments permet de vérifier les noms d'environnement.
import arcpy print arcpy.ListEnvironments()
Enregistrement et chargement des paramètres
Le transfert automatique des paramètres intervient uniquement lorsqu'un script est exécuté par l'outil de géotraitement. Lorsqu'un script de géotraitement appelle un autre script de géotraitement, les environnements ne sont pas automatiquement transmis au script appelé, car le premier script n'a aucun moyen de savoir que le second utilise ArcPy.
Pour faciliter le transfert de paramètres d'environnement d'un script à un autre et enregistrer les paramètres d'une session à la session suivante, les paramètres peuvent être enregistrés dans un fichier. ArcPy peut alors définir ses environnements en chargeant un fichier de paramètres. Dans le premier exemple ci-dessous, un script transfert ses paramètres à un second script en les enregistrant dans un fichier et en transmettant ces noms de fichiers sous forme de paramètres à un second script. Le second exemple charge un fichier de paramètres d'environnement en utilisant un nom transmis en tant qu'argument de script.
Exemple 1 :
# Import ArcPy site-package # import arcpy from arcpy import env import os # Set the raster environment settings and the workspace # env.cellSize = 25 env.mask = "D:/St_Johns/Landcover" env.workspace = "D:/St_Johns" # Save the environment settings # envfile = arcpy.SaveSettings("c:/St_Johns/settings") # Call Python script and pass file name as argument # os.system('MyHillshade.py ' + envfile)
Exemple 2 :
# Import ArcPy site-package # import arcpy # Get the input parameter value # envfile = arcpy.GetParameterAsText(0) # Load the environment settings # arcpy.LoadSettings(envfile) # Calculate hillshade # arcpy.Hillshade_3d("city_dem","city_shade",250)
Les valeurs d'environnement peuvent être transmises entre des modules en tant qu'arguments. L'enregistrement et le chargement de paramètres entre des modules d'exécution ne constituent pas une méthode efficace pour partager des valeurs. L'utilisation d'un fichier de paramètres est possible lorsque ce fichier est utilisé par des modules qui ne sont pas exécutés ensemble, comme l'explique l'exemple ci-dessus.