Disponible avec une licence Spatial Analyst.
- Essentiel de l'exécution d'Algèbre spatiale
- Utilisation des outils
- Utilisation des opérateurs
- Création d'expressions complexes
- Utilisation des classes
- Fonctions Algèbre spatiale qui produisent des entités, des tables ou des fichiers en sortie
- Suggestions pour l'exécution d'instructions Algèbre spatiale
- Lectures complémentaires
Algèbre spatial vous donne accès aux ArcGIS Spatial Analystoutils, opérateurs, fonctions et classes via l'algèbre. Dans sa forme la plus basique, un raster en sortie est spécifié à gauche d'un signe égal (=) et les outils, opérateurs et leurs paramètres sont à droite. Par exemple :
from arcpy.sa import *
outShade = Hillshade("inelevation", 99, 33)
L'instruction précitée calcule un ombrage, en déterminant l'éclairage par le soleil qui est à un azimut de 99 degrés et à une altitude de 33 degrés, et crée un objet Raster appelé outShade pour stocker les résultats.
Algèbre spatiale peut exécuter des instructions simples, mais le langage prend toute sa puissance lors de la création d'instructions et de modèles complexes. Lorsqu'Algèbre spatial a été intégré dans Python, toute la fonctionnalité de Python et d'ArcPy et ses extensions (modules, classes, fonctions et propriétés) est disponible pour la personne chargée de la modélisation.
Il est facile de devenir rapidement productif avec Algèbre spatiale, et vous pouvez explorer ces nombreuses facettes au fil de l'évolution de vos besoins. La présentation rapide suivante vous permettra de démarrer rapidement.
Essentiel de l'exécution d'Algèbre spatiale
Il existe trois façons d'utiliser Algèbre spatiale :
- L'outil Calculatrice raster
- La fenêtre Python
- Votre environnement de développement intégré Python (IDE) favori
Calculatrice raster
L'outil Calculatrice raster exécute des expressions d'algèbre spatiale. Il offre une interface de calculatrice facile d'emploi à partir de laquelle la plupart des instructions Algèbre spatiale peuvent être créées en cliquant simplement sur des boutons. L'outil Calculatrice raster peut être utilisé de manière autonome, mais il peut aussi être utilisé dans ModelBuilder. L'outil permet donc d'intégrer la puissance d'Algèbre spatiale dans ModelBuilder.
Dans l'instruction précitée, trois rasters sont additionnés.
L'outil Calculatrice raster n'est pas conçu pour remplacer d'autres outils ArcGIS Spatial Analyst. Continuez à utiliser les autres outils pour les calculs appropriés. Par exemple, utilisez l'outil Pente pour effectuer les calculs de pente. L'outil Calculatrice raster est conçu pour exécuter des instructions algébriques unilignes.
Puisque Calculatrice raster est un outil de géotraitement, comme tous les outils, il peut être intégré dans ModelBuilder. Pour plus d'informations, consultez les rubriques suivantes :
Fenêtre Python
La fenêtre Python est un emplacement efficace et pratique qui permet d'utiliser les outils de géotraitement et les fonctionnalités Python depuis ArcGIS. Les commandes Python exécutées à partir de cette fenêtre peuvent varier de simples lignes de code à des blocs complexes dotés d'une logique. La fenêtre Python permet également d'accéder à des fonctionnalités supplémentaires grâce à des modules et de bibliothèques Python personnalisés ou tiers.
Pour ouvrir la fenêtre Python, cliquez sur le bouton Fenêtre Python sur la barre d'outils Standard ou cliquez sur Fenêtre Python dans le menu déroulant Géotraitement.
Dans la séquence précitée d'instructions, le paquetage de site ArcPy, les environnements de géotraitement et les modules ArcGIS Spatial Analyst sont importés, l'espace de travail est défini, l'outil Pente est exécuté et la sortie est enregistrée définitivement. Sur insertion d'un retour de chariot à la fin d'une instruction, l'instruction est exécutée immédiatement.
Les fonctions de la fenêtre Python incluent notamment le remplissage automatique de lignes, l'utilisation de variables et l'accès à la fonctionnalité Python et ArcPy.
Environnement de développement intégré Python
Bien qu'il n'y ait aucune limite au nombre d'instructions qui peuvent être entrées dans la fenêtre Python, cela peut devenir pénible pour créer des modèles plus complexes. Les outils, opérateurs, fonctions et classes des modules ArcGIS Spatial Analyst sont également accessibles depuis votre environnement de développement intégré favori tel que PythonWin. Démarrez votre IDE préféré et entrez les instructions souhaitées.
Dans le script suivant, ArcPy, les environnements de géotraitement et le module ArcGIS Spatial Analyst sont importés, les variables sont définies, l'extension Spatial Analyst est extraite, l'outil Pente est exécuté et la sortie est enregistrée.
# Name: Slope
# Description: Identifies the rate of maximum change
# in z-value from each cell.
# Requirements: Spatial Analyst Extension
# Import system modules
import arcpy
from arcpy import env
from arcpy.sa import *
# Set environment settings
env.workspace = "C:/data"
# Set local variables
inRaster = "elevation"
outMeasurement = "DEGREE"
zFactor = 0.3043
# Check out the ArcGIS Spatial Analyst extension license
arcpy.CheckOutExtension("Spatial")
# Execute Slope
outSlope = Slope(inRaster, outMeasurement, zFactor)
# Save the output
outSlope.save("C:/output/outslope02")
Comme dans le cas de la fenêtre Python, un IDE donnera accès à toute la fonctionnalité Python et ArcPy disponible.
Utilisation des outils
Tous les outils ArcGIS Spatial Analyst qui crée un raster en sortie sont disponibles dans le format algébrique. Le nom du jeu de données peut être utilisé s'il figure dans la fenêtre Table des matières ou dans l'espace de travail courant; sinon, le chemin complet doit être entré.
# In the following statement, indem is either
# in the TOC or in the current workspace
outRas = Aspect("indem")
# In the following statement the full path is specified
outRas2 = Aspect("C:/Data/indem2")
La sortie d'une instruction peut être entrée dans une instruction suivante.
outRas = Select("inras", "Value > 105")
# outRas is variable defined by the previous statement and is not quoted
outdist = EucDistance(outRas)
Utilisation des opérateurs
Algèbre spatiale prend en charge une série d'opérateurs (par exemple, +, - et *). Ces mêmes opérateurs existent également dans Python, mais sont modifiés pour Algèbre spatiale afin de gérer les objets Raster différemment. Par exemple, les éléments suivants additionnent deux nombres dans une variable :
# set outVar to 14 using the Python + operator
outVar = 5 + 9
Pour souligner que l'instruction doit fonctionner sur les rasters (autrement dit, pour utiliser l'opérateur ArcGIS Spatial Analyst), vous devez redéfinir le jeu de données comme Raster. L'exemple suivant utilise l'opérateur ArcGIS Spatial Analyst + pour additionner deux rasters :
outRas = Raster("inras1") + Raster("inras2")
Les opérateurs peuvent accepter une combinaison de rasters et de nombres. Par exemple, les instructions suivantes ajoutent une valeur constante de 8 à toutes les cellules dans le raster en entrée :
outRas = Raster("inras1") + 8
Création d'expressions complexes
Les outils et opérateurs peuvent être enchaînés dans une instruction. L'exemple suivant exécute plusieurs outils et opérateurs dans chaque expression :
outRas = Slope("indem" * 2) / 57
outdist = EucDistance(ExtractByAttributes("inras", "Value > 105"))
Les parenthèses permettent de contrôler l'ordre du traitement. Considérez les deux exemples suivants, qui utilisent les mêmes opérateurs mais qui donnent des résultats différents en raison de l'utilisation de parenthèses :
outRas1 = (Raster("inras1") + Raster("inras2")) / Raster("inras3")
et
outRas2 = Raster("inras1") + Raster("inras2") / Raster("inras3")
Dans la première instruction, inras1 est additionné à inras2 et le résultat est divisé par inras3. Sans les parenthèses, comme dans la deuxième instruction, inras2 serait divisé par inras3 et le résultat serait ajouté à inras1.
Lors de l'utilisation de plusieurs opérateurs booléens (~, &, ^, |) et/ou relationnels (<, < =, >, > =, ==! =) consécutivement dans une même expression, les parenthèses doivent être utilisées. Par exemple, les parenthèses sont requises dans l'expression:(a > 2) & (a< 5). S'il n'y a pas de parenthèses, l'expression produira une erreur : a> 2 & a< 5. L'expression suivante sera exécutée parce que les parenthèses sont utilisées :
outRas = (Raster("a") > 2) & (Raster("a") < 5)
Utilisation des classes
Les classes sont utilisées dans les outils Algèbre spatiale pour les paramètres qui ont plusieurs arguments. L'utilisation de classes pour les paramètres en entrée vous permet d'accéder facilement aux arguments individuels d'un paramètre pour interroger, modifier et ajouter des arguments supplémentaires. Exemple d'utilisation d'une classe :
outRas = FocalStatistics("inRaster", NbrCircle(5, "CELL"), "SUM")
Dans l'instruction ci-dessus, la somme est calculée pour chaque cellule dans un voisinage circulaire de cinq cellules. NbrCircle est une classe qui crée un objet NbrCircle.
Un exemple d'une classe de tables de classification suit. Vous pouvez entrer un nombre quelconque de valeurs dans une classe de classification.
outReclass = Reclassify("inRaster", "VALUE", RemapRange([[0, 1], [3, 10], [4, 8]]))
Dans l'instruction ci-dessus, une classe, RemapRange, permet de définir la reclassification des valeurs en entrée. Les cellules dont la valeur inRaster est 0 se voient attribuer la valeur 1 dans outReclass et la valeur 3 sera attribuée à 10 et 4 à 8.
Pour plus d'informations sur l'utilisation des classes dans Algèbre spatiale, consultez la rubrique Vue d'ensemble des classes Extension ArcGIS Spatial Analyst.
Fonctions Algèbre spatiale qui produisent des entités, des tables ou des fichiers en sortie
Seuls les outils ArcGIS Spatial Analyst qui produisent un raster en sortie sont implémentés à l'aide du format algébrique. Dans le cas des outils ArcGIS Spatial Analyst qui produisent une sortie qui n'est pas un raster (par exemple, entités, tables ou fichiers texte), la sortie est spécifiée en tant qu'un paramètre de l'outil dans les parenthèses. Notez la syntaxe dans l'exemple suivant, qui crée des isolignes en tant que jeu de données d'entité polyligne en sortie :
indem = "C:/Data/indem"
Contour(indem, "C:/output/outcontours")
Suggestions pour l'exécution d'instructions Algèbre spatiale
Dans tous les exemples Algèbre spatiale qui suivent, la sortie est un objet Raster. L'objet Raster pointe sur un jeu de données raster temporaire qui sera supprimé à la fin de la session ArcGIS, à moins d'être explicitement enregistré. Pour enregistrer définitivement le jeu de données temporaire, la méthode save est appelée pour l'objet Raster (voir les deux exemples ci-dessous).
Il est recommandé de définir les environnements d'analyse appropriés, particulièrement Espace de travail courant, Etendue, Taille de cellule et Masque, avant d'implémenter l'outil ou l'opérateur Algèbre spatiale.
Exemple présentant l'environnement d'espace de travail :
import arcpy
from arcpy import env
from arcpy.sa import *
env.workspace = "C:/sapyexamples/data"
outHillshade = Hillshade("elevation", 180, 75, "SHADOWS", 1)
outHillshade.save("outhillshd01")
Dans l'instruction ci-dessus, l'espace de travail est défini, outhillshd01 sera donc enregistré dans C:/sapyexamples/data.
Il est conseillé de définir des classes pour toute entrée complexe d'un outil Algèbre spatiale à une variable et d'utiliser la variable dans l'instruction. Dans l'instruction ci-dessous, un objet de classe RemapRange est défini à une variable, myRemapRange, et est utilisé en entrée à l'outil Reclassification.
import arcpy
from arcpy import env
from arcpy.sa import *
env.workspace = "C:/sapyexamples/data"
myRemapRange = RemapRange([[-3, 0, 0], [0, 1.75, 25], [1.75, 3.5, 50],
[3.5, 5.25, 75], [5.25, 7, 100]])
outReclassRR = Reclassify("inreclass", "VALUE", myRemapRange)
outReclassRR.save("rclassremran")
Lectures complémentaires
Pour mieux comprendre ArcPy, consultez ces rubriques :
Pour obtenir plus d'informations sur le géotraitement dans Python, les rubriques suivantes peuvent être utiles :
- Procédure d'utilisation d'outils dans Python
- Accès aux licences et extensions
- Procédure d'utilisation de classes dans Python
- Utilisation des paramètres d'environnement
Pour plus d'informations sur Python, la page suivante vous dirigera vers d'autres ressources :