OWA

OWA (Ordered Weighted Average) es un análisis de aptitud territorial basado en procedimientos de Sistemas de Información Geográfica (SIG) y evaluación multicriterio (Malczewski, 2006). El análisis OWA genera un amplio rango de escenarios de aptitud territorial cambiando únicamente un parámetro lingüístico (alpha), relacionado con la rigidez en el cumplimiento de criterios preestablecidos.

OWA está definido por la siguiente ecuación:

\[OWA=\sum_{j=1}^{n}\left (\left( \sum_{k=1}^{j}u_{k}\right )^{\alpha} - \left ( \sum_{k=1}^{j-1}u_{k}\right )^{\alpha} \right )z_{ij}\]

Donde:

  • j = Criterio
  • uk = Peso ordenado del criterio j
  • k = Orden asignado al peso del criterio j (renglón)
  • i = Pixel
  • z_ij = Valor ordenado del criterio j en el pixel i
  • α = Cuantificador lingüístico

Descargar el código owa_raster.py.

Requerimientos generales

Para asegurar la ejecución correcta del código es importante verificar la instalación y funcionamiento de los siguientes elementos:

  • Qgis 3.4 o superior y librerías de Osgeo4W
  • Librerías python:
  • Numpy
  • Pandas
  • GDAL
  • reduce

Requerimientos generales de los insumos

Es importante que todas las capas raster cumplan con las siguientes condiciones:

  • Misma proyección cartográfica
  • Mismo tamaño de pixel
  • Misma extensión de capa
  • Mismo valor de NoData

Ejemplo

Insumos

Descargar los insumos para este ejemplo aqui

Procedimiento

1. Abrir el código

Abrir el código owa_raster.py en Qgis 3.4 o superior, Para resolver cualquier duda al respecto, consultar la guia

_images/codigo1.PNG

2. Actualizar el diccionario

Ingresar las capas raster de entrada con sus respectivos pesos a la función mediante un diccionario. Es importante seguir la estructura del siguiente ejemplo:

dicc_capas = {'capa_1':{'ruta':/fv_carreteras.tif",'w':0.28},
            'capa_2':{'ruta':/fv_anp_yuc.tif",'w':0.04},
            'capa_3':{'ruta':/fv_distancia_costa_yuc.tif",'w':0.58},
            'capa_4':{'ruta':/fv_localidades_costeras.tif",'w':0.14},
            }

Donde:

  • capa_#: Corresponde a la capa en el orden en que se agregó al diccionario,
  • ruta : Corresponde a la ruta o path de la capa
  • w : Corresponde al peso asociado a esa capa o criterio

Nota

Para adicionar una capa, agregar el consecutivo a la llave de la capa (en este caso capa_5). La línea quedaría de la siguiente forma:

“capa_5”:{“ruta”:path_tiff,”w”:#.###}, }

3. Indicar la capa maestra

Para generar la salida en formato tiff se requiere conocer aspectos técnicos como número de columnas y renglones, tamaño de pixel, coordenadas del extent, entre otros.

Estos datos son extraidos por el código mediante la variable path_capa_maestra, en ella, se indica la ruta de cualquier capa raster ingresada en el diccionario del paso #2.

como ejemplo se toma la ruta de la capa_1

path_capa_maestra= /fv_localidades_costeras.tif"

4. Indicar el direcctorio de salida

Indicar el directorio donde guardarán los mapas de salida.

por ejemplo:

path_salida = path_insumos+"procesamiento/owa_dev/"

5. Los valores de alpha

El código tiene valores predeterminados de alpha

Nota

Para más información respecto a los valores de alpha consulte la bibliografía

owa_alphas = [0.0001,0.1,0.5,1.0,2.0,10.0,1000.0]
α Quantifier (Q)
0.0001 At least one
0.1 At least a few a a
0.5 A few
1.0 Half (identity)
2.0 Most
10.0 Almost all
1000 All

para cada valor en la lista, el código generará un mapa en el directorio de salida

_images/salida.png

Bibliografía

Malczewski, J. (2006). Ordered weighted averaging with fuzzy quantifiers: GIS-based multicriteria evaluation for land-use suitability analysis. International Journal of Applied Earth Observation and Geoin-formation, 8 ,270-277.

Documentación dentro del código

owa_raster.array_to_raster(array, path_salida, dimension, geotransform, EPSG)[fuente]

Esta función transforma una arreglo matricial en un archivo tiff

Parámetros:
  • array (numpy array) – arreglo matricial
  • path_salida (str) – ruta con nombre salida del archivo tiff
  • dimension (list) – lista con valores de numero de columnas y renglones
  • geotransform (gdal object) – datos de rotación, coordenadas y tamaño de pixel
  • EPSG (int) – Identificador de Referencia Espacial
owa_raster.calculo_owa(df, w, alpha=0.5)[fuente]

Esta función aplica al dataframe de salida de la función insumo_owa la función owa_df, dada una lista de valores, lista de pesos y un valor de alpha.

Parámetros:
  • df (pandas dataframe) – dataframe de salida de la función insumo_owa
  • w (list) – Lista de pesos
  • alpha (float) – Valor de alpha
Devuelve:

nombre del campo, dataframe que contiene el valor de owa para el alpha dado

Tipo del valor devuelto:
 

str, pandas data frame

owa_raster.genera_owa(capas, w, owa_alpha, path_capa_maestra, ruta_salida)[fuente]

Esta función calcula OWA, dada una lista de capas, pesos y lista de valores de alpha, para cada alpha dada generará una capa.

Parámetros:
  • capas (pandas.core.frame.DataFrame) – lista de dataframes, salida de la funcion insumos_base
  • w (list) – lista de pesos, salida de la función insumos_base
  • owa_alpha (list) – lista de valores de alpha
  • path_capa_maestra (str) – path de la capa en formato tiff
  • ruta_salida (str) – Directorio de salida de las capas
owa_raster.insumo_owa(capas, pesos)[fuente]

Esta función junta todas las capas en un solo dataframe ,la salida de esta función tiene asociado un id que conserva desde el origen y una columna v que contiene una lista de los valores de capa pixel.

Parámetros:
  • capas (list) – lista de dataframes
  • pesos (list) – lista de pesos
Devuelve:

data frame que contiene los valores de los pixeles en una lista

Tipo del valor devuelto:
 

pandas data frame

owa_raster.insumos_base(dicc)[fuente]

Esta función recibe un diccionario y regresa una lista de data frames y una lista de pesos

Parámetros:dicc (dict) – Diccionario con la estructura solicitada
Devuelve:un lista de dataframes (capas) y una lista de pesos (w)
Tipo del valor devuelto:
 list
owa_raster.juntar(left, right)[fuente]

Función que junda dos dataframes a partir de la columna “id”

Parámetros:
  • left (pandas dataframe) – Dataframe A
  • right (pandas dataframe) – Dataframe B
Devuelve:

df unido

Tipo del valor devuelto:
 

pandas dataframe

owa_raster.owa(df, a, w, alpha=1)[fuente]

Esta función calcula OWA dado un dataframe y un valor de alpha

Parámetros:
  • df (Pandas data frame) – Data frame que contiene una columna de valores (a) y otra de pesos (w)
  • a (str) – Nombre de la columna de los valores
  • w (str) – Nombre de la columna de los pesos
  • alpha (float) – Valor de alpha
Devuelve:

valor de owa

Tipo del valor devuelto:
 

float

owa_raster.owa_df(v, w, alpha=1)[fuente]

Esta función recibe una lista de valores, pesos y valor de alfa, los agrega a un dataframe que es ingresado a la función owa para calcular el valor

Parámetros:
  • v (list) – lista de valores
  • w (list) – lista de pesos
  • alpha (float) – valor de alpha
Devuelve:

valor de OWA

Tipo del valor devuelto:
 

float

owa_raster.raster_to_df(path_r, no_capa=1)[fuente]

Esta función tranfoma una capa raster de formato tiff a un pandas dataframe

Parámetros:
  • path_r (str) – ruta del archivo .tiff
  • no_capa (int) – numero de capa ascendiente en el diccionario
Devuelve:

pandas dataframe con un id asociado

Tipo del valor devuelto:
 

pandas.core.frame.DataFrame