Un recorrido rápido por el uso del Álgebra de mapas
El Álgebra de mapas le permite tener acceso a operadores, funciones , clases y herramientas de Spatial Analyst a través del álgebra. En su forma más básica, se especifica un ráster de salida a la izquierda de un signo igual (=) y las herramientas, operadores y sus parámetros a la derecha. Por ejemplo:
from arcpy.sa import * outShade = Hillshade("inelevation", 99, 33)
La declaración anterior calcula el sombreado, determinando la iluminación con el sol en un acimut de 99 grados y una altitud de 33 grados y crea un objeto Ráster llamado outShade para almacenar los resultados.
El Álgebra de mapas puede ejecutar declaraciones simples, pero la potencia del lenguaje es evidente al crear declaraciones y modelos complejos. Como el Álgebra de mapas se ha integrado en Python, todas las funcionalidades de Python y ArcPy y sus extensiones (módulos, clases, funciones y propiedades) están disponibles para usted, el modelador.
Es fácil ser productivo con el Álgebra de mapas y según aumenten sus necesidades, pueden explorar varias de sus facetas. El siguiente recorrido rápido le brindará lo esencial para iniciar.
Lo básico de la ejecución del Álgebra de mapas
Existen tres maneras de utilizar el Álgebra de mapas:
- La herramienta Calculadora ráster
- La ventana de Python
- Su entorno de desarrollo integrado Python (IDE, por sus siglas en inglés) favorito
Calculadora ráster
La herramienta Calculadora ráster ejecuta las expresiones del Álgebra de mapas. La herramienta tiene una interfaz de calculadora fácil de utilizar desde la cual se crean la mayoría de declaraciones del Álgebra de mapas simplemente al hacer clic en los botones. La Calculadora ráster se puede utilizar como una herramienta independiente, pero también en ModelBuilder. Como resultado, la herramienta permite integrar la potencia del Álgebra de mapas en el ModelBuilder.
En la declaración anterior, se agregan tres ráster juntos.
La herramienta Calculadora ráster no pretende reemplazar otras herramientas de Spatial Analyst. Continúe utilizando las otras herramientas para realizar los cálculos correctos. Por ejemplo, utilice la herramienta Pendiente para realizar los cálculos de pendientes. La herramienta Calculadora ráster está diseñada para ejecutar declaraciones algebraicas de línea simple.
Como la Calculadora ráster es una herramienta de geoprocesamiento, se puede integrar en ModelBuilder. Consulte los siguientes temas para obtener más información:
Ventana de Python
La ventana de Python es una ubicación eficiente y conveniente para utilizar las herramientas de geoprocesamiento y funcionalidad de Python dentro de ArcGIS. Los comandos de Python que se ejecutan desde esta ventana pueden variar desde líneas de códigos simples a bloques complejos con lógica. La ventana de Python también proporciona un lugar para acceder a funcionalidades adicionales por medio de módulos y bibliotecas de Python personalizadas o de terceros.
Para iniciar la ventana de Python, haga clic en el botón Ventana de Python en la barra de herramientas Estándar o desde el menú desplegable Geoprocesamiento, haga clic en la Ventana de Python.
En la secuencia de declaraciones anterior, se importa el paquete del sitio ArcPy, el entorno de geoprocesamiento y los módulos de Spatial Analyst; se establece el espacio de trabajo; se ejecuta la herramienta Pendiente y se guarda permanentemente la salida. Una vez que se introduce un retorno de carro al final de una declaración, ésta se ejecuta inmediatamente.
Algunas entidades de la Ventana de Python incluyen la finalización automática de una línea incorporada, el uso de variables y el acceso a la funcionalidad de Python y ArcPy.
Entorno de desarrollo integrado Python
Aunque no existe ningún límite para el número de declaraciones que se pueden introducir dentro de la ventana de Python, puede ser engorroso crear modelos más complejos. También se puede tener acceso a las herramientas, operadores, funciones y clases de los módulos de Spatial Analyst, desde su entorno de desarrollo integrado favorito como el PythonWin. Inicie su IDE preferido e introduzca las declaraciones deseadas.
En la secuencia de comandos siguiente, se importa ArcPy, el entorno de geoprocesamiento y el módulo de Spatial Analyst; se establecen las variables, se verifica la extensión; se ejecuta la herramienta Pendiente y se guarda la salida.
# 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")
Como en el caso con la ventana de Python, un IDE proporcionará el acceso a todas las funcionalidades de Python y ArcPy disponibles.
Trabajar con herramientas
Todas las herramientas de Spatial Analyst que emiten un ráster están disponibles en formato algebraico. El nombre del dataset se puede utilizar si se encuentra en la ventana Tabla de contenido o en el espacio de trabajo actual; de lo contrario, se debe introducir la ruta completa.
# 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")
Se puede introducir la salida de una declaración desde una declaración subsiguiente.
outRas = Select("inras", "Value > 105") # outRas is variable defined by the previous statement and is not quoted outdist = EucDistance(outRas)
Trabajar con operadores
El Álgebra de mapas admite una serie de operadores (por ejemplo, +, - y *). Los mismos operadores existen en Python, pero se modifican en el Álgebra de mapas para controlar de manera diferente los objetos Ráster. Por ejemplo, los siguientes agregan dos números juntos en una variable:
# set outVar to 14 using the Python + operator outVar = 5 + 9
Para distinguir que la declaración debe trabajar en rásteres (es decir, para utilizar el operador de Spatial Analyst), debe convertir el dataset como Ráster. El siguiente ejemplo utiliza el operador Spatial Analyst de Spatial Analyst para agregar dos rásteres juntos:
outRas = Raster("inras1") + Raster("inras2")
Los operadores pueden aceptar una mezcla de rásteres y números. Por ejemplo, lo siguiente agrega un valor constante de 8 a todas las celdas en el ráster de entrada:
outRas = Raster("inras1") + 8
Crear expresiones complejas
Las herramientas y los operadores se pueden fusionar en una declaración simple. El siguiente ejemplo ejecuta varias herramientas y operadores en cada expresión:
outRas = Slope("indem" * 2) / 57 outdist = EucDistance(ExtractByAttributes("inras", "Value > 105"))
Puede utilizar paréntesis para controlar el orden de procesamiento. Considere los siguientes dos ejemplos, que utilizan los mismos operadores, pero con diferentes resultados debido al uso de paréntesis:
outRas1 = (Raster("inras1") + Raster("inras2")) / Raster("inras3")
y
outRas2 = Raster("inras1") + Raster("inras2") / Raster("inras3")
En la primera declaración, se agrega inras1 a inras2 y el resultado se divide por inras3. Sin los paréntesis, como en la segunda declaración, inras2 debería dividirse por inras3 y el resultado debería agregarse a inras1.
Al utilizar varios operadores booleanos (~, y, ^, |) y relacionales (<, <=, >, >=, ==, !=) consecutivamente en una expresión simple, se deben utilizar los paréntesis. Por ejemplo, los paréntesis son necesarios en la expresión:(a>2) & (a<5). Si no se utilizan los paréntesis en la expresión, dará como resultado un error: a>2 & a<5 . La siguiente expresión se ejecutará debido a que se utilizan los paréntesis:
outRas = (Raster("a") > 2) & (Raster("a") < 5)
Algunas expresiones simplemente no requieren de paréntesis, pero en lugar de ello deben volverse a escribir. Por ejemplo, una expresión en la forma a < b < c no se ejecutará y al agregar paréntesis cambiará el significado de la expresión. Por lo tanto, para ejecutar exitosamente esta expresión debe volverse a escribir en la forma (a < b) & (b < c).
Usar las clases
Clases que se utilizan en las herramientas del Álgebra de mapas para los parámetros que tienen varios argumentos. El uso de clases para los parámetros de entrada le permiten tener acceso fácilmente a los argumentos individuales de un parámetro para consultar, modificar y agregar argumentos adicionales. El siguiente ejemplo muestra el uso de una clase:
outRas = FocalStatistics("inRaster", NbrCircle(5, "CELL"), "SUM")
En la declaración anterior, la suma se calcula para cada celda dentro de cinco celdas circulares vecinas. NbrCircle es una clase que crea un objeto NbrCircle.
A continuación un ejemplo de una clase de tabla de nueva representación cartográfica clase. Cualquier número de valores se pueden escribir en una clase de nueva representación cartográfica.
outReclass = Reclassify("inRaster", "VALUE", RemapRange([[0, 1], [3, 10], [4, 8]]))
En la declaración anterior, se utiliza una clase, RemapRange, para definir la reclasificación de los valores de entrada. A las celdas con valor 0 en inRaster se les asignará 1 en outReclass, 3 se le asignará a las de 10 y 4 a las de 8.
Para obtener información adicional sobre el uso de clases en Álgebra de mapas, consulte Una vista general de las clases de la Extensión ArcGIS Spatial Analyst.
Funciones del Álgebra de mapas que dará como resultado entidades, tablas o archivos
Solo las herramientas de Spatial Analyst que dan como resultado un ráster se implementan al utilizar el formato algebraico. Para las herramientas de Spatial Analyst que producen resultados que no son un ráster (por ejemplo, entidades, tablas o archivos de texto), la salida se especifica como un parámetro dentro de la herramienta en los paréntesis. Tenga en cuenta la sintaxis en el siguiente ejemplo, que crea curvas como un dataset de entidades de polilínea de salida:
indem = "C:/Data/indem" Contour(indem, "C:/output/outcontours")
Sugerencias para ejecutar las declaraciones del Álgebra de mapas
En todos los ejemplos del Álgebra de mapas que se muestran a continuación, el resultado es un objeto Ráster. El objeto Ráster señala a un dataset ráster temporal que a menos que se guarde explícitamente se eliminará cuando finalice la sesión de ArcGIS. Para guardar permanentemente el dataset temporal, el método guardar se llama en el objeto Ráster (vea los dos siguientes ejemplos).
Es recomendable que establezca entornos de análisis apropiados, en particular Espacio de trabajo actual, Extensión, Tamaño de celda y Máscara, antes de implementar el operador o la herramienta del Álgebra de mapas.
Un ejemplo que demuestra el entorno del espacio de trabajo es:
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")
En la declaración anterior, se establece el espacio de trabajo; por lo tanto, outhillshd01 se guardará en C:/sapyexamples/data.
Se recomienda establecer clases para cualquier entrada compleja a una herramienta del Álgebra de mapas para una variable y utilizar la variable en la declaración. En la declaración a continuación, un objeto de la clase RemapRange se establece para una variable, myRemapRange y se utiliza como entrada para la herramienta Reclasificar.
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")
Lectura recomendada
Para obtener un conocimiento más profundo de ArcPy, explore estos temas:
Para obtener más información sobre geoprocesamiento en Python, lo siguiente le puede ser de utilidad:
Para obtener información adicional sobre Python, la siguiente página lo llevará a más recursos: