Luis Miguel Agudo Bravo
GIS Developer
11-14 Diciembre 2018
Curso avanzado ArcGIS - IEO
ALGEBRA DE MAPAS
El Álgebra de mapas es una forma de realizar un análisis espacial mediante la creación de expresiones en un lenguaje algebraico. Con la herramienta Raster Calculator puede crear y ejecutar fácilmente expresiones de Álgebra de mapas que producen como salida un dataset ráster.
El Álgebra de mapas está disponible en el módulo de Spatial Analyst; una extensión del paquete de ArcPy Python. 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.
¿HAY QUE SABER PYTHON?
RASTER CALCULATOR
Construye y ejecuta una expresión simple de Álgebra de mapas utilizando la sintaxis de Python en una interfaz similar a una calculadora.
RASTER CALCULATOR
Hay cuatro áreas principales en el cuadro de diálogo de la herramienta que se utilizan para crear una expresión de álgebra de mapas:
RASTER CALCULATOR
Capas y Variables: La lista Capas y variables de entrada identifica la entrada que se puede utilizar en la expresión de Álgebra de mapas. Si está utilizando la herramienta de forma independiente, la lista contendrá las capas en la tabla de contenido. Si utiliza la herramienta en ModelBuilder, la lista contendrá las capas en la tabla de contenido, las salidas creadas en el modelo y otras variables del modelo.
Botones de la calculadora y el operador: Los botones del operador permiten introducir valores numéricos y operadores matemáticos (suma, división, etc.) y lógicos (mayor que, igual a, etc.) a la expresión. Hay que prestar atención para asegurarse de que la expresión sigue las reglas para unas Reglas de sintaxis para el Álgebra de mapas correctas
RASTER CALCULATOR
Herramientas: La lista de herramientas es una selección de herramientas que se pueden utilizar en la expresión de álgebra de mapas. Al hacer clic en una herramienta de la lista, el nombre de la herramienta y los paréntesis abierto y cerrado [()]. Después, se debe introducir la entrada restante que requiere la herramienta. Se puede colocar una herramienta en cualquier lugar de la expresión, pero se debe ubicar en una posición que produzca una sintaxis de álgebra de mapas válida.
Expresión: La expresión es la expresión de álgebra de mapas que se ejecutará. La expresión se debe introducir con una sintaxis válida.
REGLAS ALGEBRA MAPAS
La estructura general de una declaración de Álgebra de mapas es un operador de asignación (=), que se utiliza para separar la acción que se encuentra a la derecha del nombre de la salida (un objeto ráster) a la izquierda. Una declaración toma la siguiente forma algebraica:
Output_Name = Action
REGLAS ALGEBRA MAPAS
Las expresiones del Álgebra de mapas se componen de cinco componentes:
outRas = Slope("inraster", "PERCENT_RISE", 3)
REGLAS ALGEBRA MAPAS
Como con todas las herramientas de geoprocesamiento, las declaraciones de Álgebra de mapas distinguen la configuración del entorno y el conjunto seleccionado.
Cuando utiliza operadores con rásteres, el ráster debe ser un Objeto ráster.
outRas = Raster("inraster1") + Raster("inraster2")
El módulo de matemáticas de Python está incluido.
outRas = Raster("inraster1") + 4 outRas2 = Raster("inraster") + math.pi
OPERADORES
DECLARACIONES COMPLEJAS
Uno de los aspectos más ventajosos del Álgebra de mapas es la capacidad de crear una declaración que comprenda múltiples operadores y herramientas en una única declaración.
Las expresiones complejas no se limitan a la funcionalidad proporcionada por las herramientas de la extensión Spatial Analyst de ArcGIS; estas pueden incluir herramientas de otras cajas de herramientas.
DECLARACIONES COMPLEJAS
Es importante saber el nivel de jerarquía de los operadores. Por ejemplo, los operadores booleanos (~, &, ^,|) tienen un nivel de jerarquía mayor que los operadores relacionales (<, <=, >, >=, ==, !=), lo que afecta la manera en que crea sus expresiones.
outRaster = Raster("inras1") + Raster("inras2") / Raster("inras3")
outRas = Raster("inras1") / (Raster("inras2") + Raster("inras3"))
DECLARACIONES COMPLEJAS
Cuando se utilizan varios operadores booleanos (~, &, ^, |) o relacionales (<, <=, >, >=, ==, !=) consecutivamente en una única expresión, se deben usar paréntesis. Por ejemplo, los paréntesis son necesarios en la siguiente expresión (a>2) & (a<5)
outRas = (Raster("a") > 2 ) & ( Raster("a") < 5)
DECLARACIONES COMPLEJAS
En declaraciones complejas se pueden utilizar operadores, variables, números y herramientas.
const = 10
outRas = Sin("inras1") + Raster("inras2") + 2 * const
DECLARACIONES COMPLEJAS
En una serie de declaraciones, la salida de una declaración anterior se puede utilizar como entrada en una declaración posterior.
outAdd = Raster("inras1") + Raster("inras2")
outRas = FocalStatistics(outAdd, NbrCircle(5, "Map"), "MEAN")
outdistance = EucDistance(ContourList("elevation", "#", [1500]))
Dado que la herramienta integrada crea una salida que es solo una fase intermedia en un flujo de trabajo más extenso, el argumento de salida se puede sustituir por el símbolo de almohadilla "#", que permite que la herramienta cree una ruta y un nombre únicos para esta salida temporal
DECLARACIONES COMPLEJAS
bklink = "C:/results/out_bklink"
costDist = CostDistance("source", "in_cost", 15000, bklink)
costOut = CostPath("dest", costDist, bklink)
Se puede trabajar con paths que se pasan como variables de tipo string.
CLASES DE SA
Las clases se pueden utilizar para crear objetos. Una vez creada la instancia del objeto, se pueden utilizar sus propiedades y métodos. Las clases de Análisis espacial, tales como las de vecindad o las de nueva representación cartográfica, generalmente se utilizan como acceso rápido para completar los parámetros de la herramienta de geoprocesamiento que de otro modo tendrían un equivalente de cadena de caracteres más complicado
neighborhood = NbrRectangle(10, 10, "CELL")
outFocalStats = FocalStatistics(inRas, neighborhood, "MINORITY")
Como crear un objeto de una clase:
CLASES DE SA
CLASES DE SA
Clases que se crean con listas de Python
TopoBoundary, TopoLake, TopoStream...
inBoundary = TopoBoundary(["inBound1.shp", "inBound2.shp"])
Las clases anteriores se utilizan por ejemplo como parámetro de entrada para la herramienta Topo to Raster.
HERRAMIENTAS SA
HERRAMIENTAS SA
Con (in_conditional_raster, in_true_raster_or_constant, {in_false_raster_or_constant}, {where_clause})
Evaluación condicional
OutRas = Con(InRas1, 40, 30, "Value >= 2")
HERRAMIENTAS SA
SetNull (in_conditional_raster, in_false_raster_or_constant, {where_clause})
Establecer nulos
OutRas = SetNull(InRas1, InRas2, "Value = 4")
HERRAMIENTAS SA
EucAllocation (in_source_data, {maximum_distance}, {in_value_raster}, {cell_size}, {source_field}, {out_distance_raster}, {out_direction_raster})
Asignación Euclidiana
Euc_Alloc = EucAllocation(Source_Ras)
HERRAMIENTAS SA
ExtractByAttributes (in_raster, where_clause)
Extraer por consulta de atributos
OutRas = ExtractByAttributes(InRas1, "Value > 0")
HERRAMIENTAS SA
ExtractByMask (in_raster, in_mask_data)
Extraer por mascara
OutRas = ExtractByMask(InRas1, InMsk1)
*La mascara puede ser un raster o una feature layer. las celdas del ráster de entrada cuyo centro quede dentro del perímetro de la entidad se incluirán en la salida, mientras que las celdas cuyo centro quede fuera, recibirán NoData
HERRAMIENTAS SA
ExtractValuesToPoints (in_point_features, in_raster, out_point_features, {interpolate_values}, {add_attributes})
Extraer valores según puntos
Extrae los valores de celda basados en un conjunto de entidades de punto y registra los valores en la tabla de atributos de una clase de entidad de salida.
HERRAMIENTAS SA
Aggregate (in_raster, cell_factor, {aggregation_type}, {extent_handling}, {ignore_nodata})
Agregar
OutRas = Aggregate(InRas1, 3, Max, Expand, Data)
HERRAMIENTAS SA
MajorityFilter (in_raster, {number_neighbors}, {majority_definition})
Filtro Mayoritario
OutRas = MajorityFilter(InRas1)
HERRAMIENTAS SA
Nibble (in_raster, in_mask_raster, {nibble_values})
Nibble
OutRas = Nibble(InRas1, Mask_Ras)
HERRAMIENTAS SA
CellStatistics (in_rasters_or_constants, {statistics_type}, {ignore_nodata})
Estadísticas de celdas
OutRas = CellStatistics([InRas1, InRas2, InRas3], "SUM", "NODATA")
HERRAMIENTAS SA
Reclassify (in_raster, reclass_field, remap, {missing_values})
Reclasificar
El ráster de entrada debe tener estadísticas válidas. Si las estadísticas no existen, se pueden crear por medio de la herramienta Calcular estadística.
Se puede reclasificar usando también una Table view o una tabla proveniente de un archivo ASCII (*.txt, *.asc, *.rmp). Usando las herramientas Reclasificar por tabla o Reclasificar por archivo respectivamente.
HERRAMIENTAS SA
Conjunto herramientas matemáticas
HERRAMIENTAS SA
Clasificación no supervisada de cluster ISO
Ejecuta la clasificación no supervisada en una serie de bandas del ráster de entrada mediante el uso de las herramientas Cluster ISO y Clasificación de máxima verosimilitud.
IsoCluster (in_raster_bands, out_signature_file, number_classes, {number_iterations}, {min_class_size}, {sample_interval})
HERRAMIENTAS SA
Clasificación no supervisada de cluster ISO
BENTHIC TERRAIN MODELLER
EJERCICIO 1
Transformar a tipo entero los valores de los raster de esfuerzo pesquero. Con los raster resultantes calcular el área en km2 donde el esfuerzo pesquero es menor a 50.
EJERCICIO 2
Obtener una capa de poligonos a partir del raster de batimetría que cumpla con la condición que la profundidad sea mayor de 1600 metros, la orientación de la pendiente sea NW y la pendiente sea mayor a 10º
EJERCICIO 3
Calcular el raster de la orientación en radianes
EJERCICIO 4
Obener para el esfuerzo pesquero del año 2012 un raster con los valores entre 50 y 100. Los valores que cumplan esa condición multiplicarlos por 100 y el resto asignarles el valor 0.
A partir del raster resultante establecer como nulos los valores iguales a 0.
EJERCICIO 5
A partir del raster de profundidad obtener una capa de poligonos con 4 clases:
Calcular el área de cada una de estas clases en km2
Luis Miguel Agudo
By Luis Miguel Agudo Bravo