Un recorrido rápido por el uso del Álgebra de mapas

El Álgebra de mapas le permite tener acceso a las herramientas de Análisis espacial, operadores, funciones y clases 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 el modelador del Analista espacial.

Es fácil convertirse rápidamente 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:

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.

Interfaz de usuario de la Calculadora ráster

En la declaración anterior, se agregan tres ráster juntos.

La herramienta Calculadora ráster no pretende reemplazar otras herramientas del Analista espacial. 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 Python

ArcGIS 10.0 introduces a new embedded Python experience. The geoprocessing command line has been enhanced to be a fully interactive Python interpreter (or interface) now called the Python window. The Python window is an efficient and convenient location to use geoprocessing tools and Python functionality from within ArcGIS. The Python commands run from this window can range from single lines of code to complex blocks with logic. The Python window also provides a place to access additional functionality using custom or third-party Python modules and libraries.

Para iniciar la ventana Python, haga clic en el botón Ventana Python Ventana Python en la barra de herramientas Estándar o desde el menú desplegable Geoprocesamiento, haga clic en la Ventana de Python.

Ejemplo de la ventana Python

En la secuencia de declaraciones anterior, se importa el paquete del sitio ArcPy, el entorno de geoprocesamiento y los módulos 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 Python incluyen la completació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 Python, puede ser engorroso crear modelos más complejos. También se puede tener acceso a las herramientas del Spatial Analyst, operadores, funciones y clases 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 del Spatial Analyst; se establecen las variables, se verifica la extensión Spatial Analyst; 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 Python, un IDE proporcionará el acceso a todas las funcionalidades de Python y ArcPy disponibles.

Trabajar con herramientas

Todas las herramientas del 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 Spatial Analyst), debe convertir el dataset a un Ráster. El siguiente ejemplo utiliza el operador + 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 Relacional (<, <=, >, >=, ==, !=) 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)
ExplorarExplorar:

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 el 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.

El siguiente es un ejemplo de una clase de tabla de nueva representación. Se puede introducir cualquier cantidad de valores en una clase de nueva representación.

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 y 3 se le asignará a las de 10 y 4 a las de 8.

Para obtener información adicional sobre el uso de clase en el Álgebra de mapas, vea Una vista general de las clases del Spatial Analyst.

Funciones del Álgebra de mapas que dará como resultado entidades, tablas o archivos

Sólo las herramientas del Spatial Analyst que dan como resultado un ráster se implementan al utilizar el formato algebraico. Para las herramientas del 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:

Temas relacionados


7/11/2012