Tema 1

Análisis Espacial Avanzado

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:

  • Herramientas y funciones
  • Operadores
  • Entrada
  • Parámetros de herramienta
  • Datos de salida
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:

  • Clase 1: Profundidad menor a 1000 metros
  • Clase 2: Profundidad entre 1001 y 1500 metros
  • Clase 3: Profundidad entre 1501 y 2000 metros
  • Clase 4: Profundidad mayor a 2000 metros

Calcular el área de cada una de estas clases en km2

Luis Miguel Agudo

lmagudo@gmail.com