Disponible avec une licence Spatial Analyst.
Un des aspects les plus puissants de l'algèbre spatiale est la capacité à créer une instruction comprenant plusieurs opérateurs et outils dans une seule instruction. Etre capable d'entrer plusieurs opérateurs et outils dans une seule instruction vous permet de modéliser plus facilement des interactions complexes et le temps de traitement global peut être réduit. Les expressions complexes ne se limitent pas à la fonctionnalité fournie par les outils de l’extension ArcGIS Spatial Analyst ; elles peuvent inclure des outils provenant d’autres boîtes à outils. Lorsque vous créez des instructions complexes, certaines règles d'interaction spécifiques peuvent être requises pour une exécution correcte.
Règles pour les instructions complexes
- Dans les instructions complexes, seule la sortie qui se trouve à gauche du signe égal devient un objet raster.
- L'ordre de l'exécution d'une expression est déterminé par les parenthèses et le niveau de précédence des opérateurs utilisés. Pour plus d'informations sur la précédence des opérateurs, consultez la rubrique Table de précédence des opérateurs.
outRaster = Raster("inras1") + Raster("inras2") / Raster("inras3")
-
Dans l'instruction ci-dessus, inras2 est divisé par inras3 et le résultat est ajouté à inras1.
- Vous pouvez utiliser des parenthèses pour contrôler l'ordre d'exécution. Les parenthèses peuvent être imbriquées, auquel cas l'expression comprise dans les parenthèses les plus intérieures est traitée en premier, quelle que soit la valeur de précédence des opérateurs.
outRas = Raster("inras1") / (Raster("inras2") + Raster("inras3"))
Dans l'instruction ci-dessus, inras1 est divisé par la somme de inras3 et de inras3.
- 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 suivante (a > 2) & (a< 5).
outRas = (Raster("a") > 2 ) & ( Raster("a") < 5)
- Les opérateurs, les variables, les nombres et les outils peuvent tous être utilisés dans des instructions complexes.
outRas = Sin("inras1") + Raster("inras2") + 8
const = 10 outRas = Raster("inras1") + 2 * const
- Toutes les règles qui s'appliquent aux parenthèses pour les expressions créées avec des opérateurs s'appliquent également aux instructions créées avec des outils et des opérateurs. L'outil ou l'opérateur placé entre les parenthèses les plus à l'intérieur est traité en premier.
num = 10 outRas = (ZonalStatistics((Raster("inras2") + Raster("inras3")), "Value", "valueras", "MAXIMUM") - num ) / 8
Dans l'instruction ci-dessus, la somme de inras2 et de inras3 est utilisée en entrée dans l'outil Statistiques zonales. La valeur num est ensuite soustraite avant d'être divisée.
- Dans une série d'instructions, la sortie d'une instruction précédente peut être utilisée en entrée dans une instruction suivante.
outAdd = Raster("inras1") + Raster("inras2") outRas = FocalStatistics(outAdd, NbrCircle(5, "Map"), "MEAN")
Dans l'exemple ci-dessus, outAdd est un objet raster créé par la somme de inras1 et de inras2. Étant donné qu’outAdd est une variable, les guillemets ne sont pas obligatoires lors d’une utilisation en entrée pour l’outil Statistiques focales qui suit.
- Tout outil peut être intégré dans un autre outil, que le résultat soit un raster ou une classe d’entités. La sortie requise de l’outil intégré est utilisée en entrée pour l’autre outil. Dans cet exemple, la sortie émanant de l'outil Liste d'isolignes est utilisée en entrée dans l'outil Distance euclidienne.
outdistance = EucDistance(ContourList("elevation", "#", [1500]))
Dans l'exemple ci-dessus, la sortie émanant de l'outil Sélectionner de la boîte à outils Analysis est utilisée en entrée dans l'outil Distance euclidienne.dist = EucDistance(arcpy.Select_analysis("schools", "#", "Pop>2000"))
- Pour utiliser une sortie facultative provenant d’un outil dans une expression, le nom du jeu de données ou la variable représentant le jeu de données doit être utilisé. Dans l’exemple ci-dessus, le raster d’antécédence en sortie facultatif est affiché dans l’espace de travail sous le nom "out_bklink".
costDist = CostDistance("source", "in_cost", 15000, "out_bklink") costOut = CostPath("dest", costDist, "out_bklink")
Dans l’exemple ci-dessus, le raster d’antécédence est défini par une variable avant l’exécution de l’outil. Les variables désignent l'emplacement et le nom que le raster d'antécédence en aura sortie.bklink = "C:/results/out_bklink" costDist = CostDistance("source", "in_cost", 15000, bklink) costOut = CostPath("dest", costDist, bklink)