Cómo funcionan las herramientas de estadísticas zonales

Disponible con una licencia de Spatial Analyst.

Disponible con licencia de Image Analyst.

Una operación de estadísticas zonales es aquella que calcula estadísticas y valores de celdas de un ráster (un ráster de valor) dentro de las zonas definidas por otro dataset. Existen dos herramientas que calculan estadísticas por zonas, Estadísticas zonales y Estadísticas zonales como tabla.

La herramienta Estadísticas zonales solo calcula una estadística a la vez y crea una salida de ráster. Este valor se convierte en un valor de celda de la salida de ráster para las celdas correspondientes a esa zona. Si una entidad de zona contiene zonas superpuestas, la estadística solo se calcula para una zona porque una celda en el ráster de salida solo puede representar un valor.

La herramienta Estadísticas zonales como tabla calcula una o varias estadísticas usando subconjuntos predefinidos o todas las estadísticas y crea una salida de tabla. Al igual que con Estadísticas zonales, la estadística resultante es un único valor para cada zona. Existe un registro por zona en la tabla de salida y los valores de estadísticas aparecen en campos predefinidos. Si la entrada de zona es una entidad y contiene zonas superpuestas, las estadísticas se calculan para todas las zonas y la salida aparece en registros individuales para cada zona.

La capa de zonas de entrada define la forma, valores y ubicaciones de las zonas, que pueden ser ráster o entidad. Durante la operación zonal, los datos de entidades se convierten primero en un ráster. En datos de ráster, una zona incluye todas las celdas que tienen el mismo valor, ya sean contiguas o no. Cada zona debe tener una única identidad y si es un ráster, debe tener un tipo de datos entero. Cualquier campo de entero o cadena de valores únicos en la entrada de zona puede especificarse para definir las zonas.

El ráster de valor de entrada contiene los valores que se utilizan para calcular la estadística de salida para cada zona. Puede ser de tipo de datos entero o flotante.

En la siguiente ilustración, el valor medio de la entrada de valores se identifica para cada zona:

Ejemplo de entradas y de salida de Estadísticas zonales
Se muestran las entradas y la salida de Estadísticas zonales. Las celdas en color gris claro representan NoData.

Cómo se identifican las celdas de un ráster de valor para una zona de ráster

Para calcular una estadística, la herramienta extrae primero valores de celda del ráster de valor para todas las celdas que se encuentran dentro de cada zona. Esta identificación de celdas en un ráster de valor dentro de una zona se hace mediante zonas superpuestas en el ráster de valor. Cuando las entradas de zona y valor son rásteres del mismo tamaño de celda y las celdas están alineadas, los valores de celda del ráster de valor que se superpone con el ráster de zona se extraen y se calculan estadísticas.

Un ráster zonal superpuesto en el ráster de valores que se muestra con las celdas extraídas resaltadas
Un ráster zonal superpuesto en el ráster de valores que se muestra con las celdas extraídas resaltadas.

Cuando el tamaño de celda o alineamiento del ráster de zona es diferente con respecto al ráster de valor, las celdas entre los rásteres de zona y valor no pueden superponerse perfectamente entre sí. Por lo tanto, la herramienta ajusta internamente uno o ambos rásteres para lograr la perfecta superposición de celdas. Este ajuste se realiza con algunas sencillas reglas. Si los tamaños de celda del ráster de zona y del ráster de valor son diferentes, el tamaño de la celda de salida será el valor Máximo de entradas y el ráster de valor se utilizará internamente como el ráster de alineación. Si el tamaño de celda es el mismo pero las celdas no están alineadas, el ráster de valor se utilizará internamente como el ráster de alineación. En ambos casos, se desencadenará un remuestreo interno antes de realizar la operación zonal.

Cuando tamaño de celda, ráster de alineación, sistema de coordenadas de salida o una combinación de estos se especifican en los ajustes del entorno de geoprocesamiento, la operación zonal se realiza en una ventana de análisis creada respetando estos ajustes. Consulte Cómo se determina la ventana de análisis en Spatial Analyst para obtener más información.

Cómo se identifican las celdas de un ráster de valor para una zona de entidad

Una operación zonal es fundamentalmente un análisis de ráster realizado en dos rásteres, donde uno es la zona y el otro es el valor. Si las zonas se definen con entidades, se producirá una conversión interna de entidad a ráster. La conversión interna para una zona de polígono utiliza el método de centro de celda en la herramienta De polígono a ráster para rasterizar la entrada utilizando el tamaño de celda y el ráster de alineación del ráster de valor. Esto puede conducir a un resultado inesperado de zonas que faltan en la salida cuando ninguno de los centros de celda de la cuadrícula de rasterización se encuentra dentro de la zona de entidad. Puede ocurrir con zonas que son más pequeñas que el área de una celda del ráster de zona interno y también con zonas más grandes.

En el siguiente ejemplo, la figura (1) representa la zona de entidad de entrada, el ráster de valor de entrada y su centro de celda. Las entidades de entrada tienen tres zonas (formas amarillas), donde se cumple lo siguiente:

  • zone1 es mayor que una celda individual.
  • zone2 y zone3 son más pequeñas que una celda.
  • Un centro de celda se encuentra fuera de zone2, pero dentro de zone3.

Durante el proceso de rasterización de zona de la figura (2), como ningún centro de celda se encuentra dentro de zone1 y zone2, solo se rasteriza zone3, y las otras dos zonas básicamente desaparecen.

Conversión interna de una zona de entidad mientras se calculan estadísticas zonales
Se muestra la conversión interna de una zona de entidad mientras se calculan estadísticas zonales.

Para evitar que desaparezcan zonas de su salida, asegúrese de que cada zona contenga uno o más centros de celda del ráster de valor. Una forma de hacerlo consiste en crear más centros de celda especificando un tamaño de celda más pequeño en el entorno. De forma predeterminada, el tamaño de celda de análisis es el del ráster de valor. No obstante, si especifica un tamaño de celda en el entorno de análisis que sea menor que el del ráster de valor, permitirá que se capturen más zonas, tal y como se muestra en la figura (3) anterior. Tenga en cuenta que, si especifica un tamaño de celda más pequeño, se generará un ráster de salida más grande. La salida de mayor resolución no será necesariamente de tan alta calidad como parece, ya que realmente no existen detalles adicionales en el ráster de valor de entrada.

Una vez que una zona de entidad se convierta en una zona de ráster usando el mismo tamaño de celda y la alineación de celda del ráster de valor, la extracción de celdas de un ráster de valor dentro de una zona se realiza superponiendo las zonas en el ráster de valor.

Cuando el tamaño de celda, ráster de alineación, sistema de coordenadas de salida o una combinación de estos se especifican en los ajustes del entorno de geoprocesamiento, la operación zonal, incluyendo la conversión interna de entidad a ráster, se realiza en una ventana de análisis definida por estos ajustes. Consulte Cómo se determina la ventana de análisis en Spatial Analyst para obtener más información.

Calcular estadísticas aritméticas y circulares

Calcular un valor medio mediante la suma de todos los valores de celda y, a continuación, dividir entre el número de celdas puede funcionar con datos como la elevación. Sin embargo, si los datos representan cantidades cíclicas como la orientación (dirección de brújula de 0 grados a 360 grados en grados) u horas de un día (de 0 a 24 horas), calcular la media aritmética producirá una salida incorrecta, porque el valor mínimo y el valor máximo representan la misma cantidad. Para este tipo de datos, debe calcular estadísticas circulares.

Por ejemplo, si está calculando el valor medio de dos valores de celda, 0 grados y 360 grados, la media aritmética será 180 grados. Incorrecto, porque 0 grados y 360 grados representan la misma dirección de brújula. Se pueden obtener las estadísticas correctas calculando la media circular, que será de 0 grados.

Puede especificar el cálculo de estadísticas circulares activando el parámetro Calcular estadísticas circulares (circular_calculation = "CIRCULAR" en Python). Al calcular estadísticas circulares, preste atención a los valores más bajo y más alto para representar los datos cíclicos. Se presupone que el valor más bajo es 0. El valor más alto se puede especificar como el parámetro Valor de envoltura circular (circular_wrap_value in Python). El valor predeterminado de este parámetro es 360.

En función del tipo de datos, seleccione el tipo de cálculo de estadísticas y un valor de envoltura circular adecuado para las estadísticas circulares, a fin de obtener la salida correcta. Se admiten las siguientes estadísticas circulares: Valor medio, Mayoría, Minoría, Desviación estándar y Variedad.

Calcular estadísticas zonales con rásteres multidimensionales

Los datos ráster multidimensionales representan datos en distintos momentos o en diversas profundidades o alturas. Este tipo de datos se utiliza habitualmente en ciencias atmosféricas, oceanográficas y de la tierra, y se observan mediante plataformas de monitorización, se capturan mediante satélites o se generan a partir de modelos de simulación numérica donde los datos se procesan, agregan o interpolan usando varias técnicas estadísticas. Para obtener más información de rásteres multidimensionales, consulte Una visión general de los datos ráster multidimensionales.

Las herramientas Estadísticas zonales y Estadísticas zonales como tabla admiten datos de rásteres de zona y valor multidimensionales como entrada. Las estadísticas zonales se calculan para todas las porciones de un ráster multidimensional cuando se activa el parámetro Procesar como multidimensional (ALL_SLICES en el parámetro process_as_multidimensional en Python). Si el parámetro Procesar como multidimensional no se activa (CURRENT_SLICES en Python), solo se procesará la porción actual.

Ejemplos de análisis de estadísticas zonales en datos multidimensionales incluyen lo siguiente:

  • Un meteorólogo desea obtener una perspectiva sobre el movimiento de huracanes y la distribución de precipitación a lo largo del rastreo del huracán durante un periodo determinado. Con el uso de procesamiento multidimensional en la herramienta Estadísticas zonales, el meteorólogo puede encontrar la precipitación media de cada porción de tiempo para las zonas de huracanes que cambiaron con el tiempo.
  • Un ecólogo desea examinar la distribución de eventos extremos a partir de datos pluviométricos diarios máximos de los últimos 30 años para una cuenca hidrográfica particular. La herramienta Estadísticas zonales como tabla con el tipo de estadística de percentil para una lista de valores de percentil, puede utilizarse para fijarse en la distribución de los datos pluviométricos diarios máximos para los datos de la serie temporal al procesarse como multidimensionales.

Entre los tipos de datos ráster multidimensionales admitidos están capa ráster multidimensional, mosaico multidimensional, servicios de imágenes y Formato de ráster de nube (CRF) de Esri.

Para agregar una capa ráster multidimensional en ArcGIS Pro, en la pestaña Mapa, en el grupo Capa, haga clic en la opción Capa ráster multidimensional de Agregar datos. También puede utilizar la herramienta Crear capa ráster multidimensional, seleccionar la variable apropiada para la operación zonal y generar una capa ráster multidimensional.

Salida multidimensional de estadísticas zonales

Cuando especifique que la herramienta Estadísticas zonales va a procesar la entrada como multidimensional, la herramienta creará una salida de ráster multidimensional en formato CRF. La operación zonal se produce porción por porción entre las porciones del ráster de zona y las porciones de la variable actual del ráster de valor. Los valores estadísticos calculados se almacenan en una variable multidimensional cuyo nombre se crea combinando el nombre de variable del ráster de valor y la estadística que se está calculando. El número de dimensiones de la variable de salida y el número de porciones dependen de la naturaleza específica de las entradas del ráster de zona y de valor.

Puede explorar la información multidimensional de la salida del ráster desde el panel de propiedades. También puede utilizar la propiedad mdinfo del objeto Raster en ArcPy para obtener más información sobre las dimensiones, el número de valores de dimensión y el número total de porciones en la variable.

Para las Estadísticas zonales como tabla, al especificar que los datos se van a procesar como multidimensionales, se generará una salida de tabla plana con las estadísticas calculadas para todas las zonas y porciones. Esta tabla incluirá campos adicionales para indicar el nombre de variable, los nombres de dimensiones y sus valores, además de las estadísticas que se calculan para cada zona.

Ya que el procesamiento multidimensional se produce porción por porción entre los rásteres de zona y valor, el número de porciones en el ráster multidimensional de salida de la herramienta Estadísticas zonales y el número de registros de la tabla de salida de la herramienta Estadísticas zonales como tabla, dependerá del tipo de rásteres de entrada y número de porciones en ellos. Las siguientes subsecciones describen ejemplos.

Rásteres de zona y valor multidimensionales con las mismas dimensiones

Encontrar la máxima salinidad a varias profundidades del océano para varios rangos de temperatura a una profundidad correspondiente requerirá realizar estadísticas zonales con una zona multidimensional representando zonas de temperatura y un ráster de valor multidimensional representando la salinidad. La operación zonal se realizará para cada porción de zona con la porción correspondiente del ráster de valor. El ráster multidimensional de salida tendrá el mismo número de porciones que el ráster de valor.

En la siguiente ilustración, las variables de los rásteres de zona y de valor tienen las mismas tres dimensiones x, y, d y el mismo número de porciones en valores de dimensión d0, d1 y d2. La variable del ráster multidimensional de salida también tendrá las tres mismas dimensiones x, y, d y el mismo número de porciones en valores de dimensión d0, d1 y d2.

Rásteres de valor y zona multidimensionales con las mismas dimensiones
Se muestran rásteres de entrada de zona y valor multidimensionales de las mismas dimensiones con el ráster de estadísticas zonales resultante.

El número total de registros de la salida Estadísticas zonales como tabla se determina agregando el número de zonas de cada porción. Si el número de zonas a profundidades d0, d1 y d2 son 5, 4 y 3, respectivamente, el número total de registros será 12 (5 + 4 + 3 = 12).

Rásteres de zona y valor multidimensionales con diferentes dimensiones

Es posible determinar una ubicación adecuada y una ventana de tiempo para implementar activos como, por ejemplo, vehículos de uso remoto (ROV) realizando estadísticas zonales con una zona multidimensional que represente las ubicaciones potenciales para ROV en diferentes momentos y un ráster de valor multidimensional como, por ejemplo, la salida del modelo oceánico de coordenadas híbridas (HYCOM), que representa la corriente del océano en distintas profundidades y horas.

La operación zonal se realizará para cada división desde el ráster de zona con la misma división del ráster de valor. El número de divisiones del ráster multidimensional de salida se determina multiplicando el número de divisiones del ráster de zona por el número de divisiones del ráster de valores.

En la siguiente ilustración, la variable del ráster de zona tiene tres dimensiones x, y, t, y tres divisiones en los valores de dimensión d0, d1 y d2. La variable del ráster de valores tiene tres dimensiones, x, y, t, y dos divisiones en los valores de dimensión t0 y t1. La variable del ráster multidimensional de salida también tendrá las mismas cuatro dimensiones: x, y, d, t.

Rásteres de valor y zona multidimensionales con dimensiones distintas
Se muestran rásteres de entrada de zona y valor multidimensionales de dimensiones distintas con el ráster de estadísticas zonales resultante.

El número total de divisiones en zonas de la salida de la herramienta Estadísticas zonales se determina multiplicando el número de profundidades del ráster de zona y el número de periodos de tiempo del ráster de valores que, en este caso, será 6 (3 profundidades x 2 periodos = 6). El número total de registros de la salida Estadísticas zonales como tabla se determina multiplicando el número de zonas de cada división. Si el número de zonas es 5, el número total de registros será en este caso de 30 (5 zonas x 3 profundidades x 2 periodos =30).

Solo ráster de valor multidimensional

Encontrar la temperatura máxima de cada condado para dada día del año requerirá realizar estadísticas zonales con un ráster de valor multidimensional representando la temperatura diaria y un ráster de zona representando condados. La operación zonal se realizará para cada porción desde el ráster de valor usando el mismo ráster de zona. El ráster multidimensional de salida tendrá el mismo número de porciones que el ráster de valor.

En la siguiente ilustración, las variables del ráster de valores tienen tres dimensiones, x, y, t, y dos divisiones en los valores de dimensión t0, t1 y t2. La variable del ráster multidimensional de salida también tendrá las tres mismas dimensiones x, y, t, y el mismo número de divisiones en los valores de dimensión t0, t1 y t2.

Procesamiento de ráster de valor multidimensional
Se muestra el procesamiento de ráster de valor multidimensional.

El número total de registros de la salida Estadísticas zonales como tabla se determina multiplicando el número de zonas y el número de porciones del ráster de valor. Si el número de zonas es 5, el número total de registros será de 15 (5 x 3 =15).

Solo ráster de zona multidimensional

Encontrar el valor medio de precipitación máxima decenal dentro de cada categoría de zona de llanuras aluviales que varía en el tiempo y que cambia con el tiempo para la planificación del paisaje ecológico, requerirá realizar estadísticas de zonas con un ráster de zona multidimensional que represente las zonas de llanuras aluviales y un ráster de valor que represente la precipitación máxima decenal. La operación zonal se realizará para cada porción desde el ráster de zona usando el mismo ráster de valor. El ráster multidimensional de salida tendrá el mismo número de porciones que el ráster de zona.

En la siguiente ilustración, las variables del ráster de zona tienen tres dimensiones, x, y y t, y dos divisiones en zonas en los valores de dimensión t0, t1 y t2. La variable del ráster multidimensional de salida también tendrá las tres mismas dimensiones x, y, t, y el mismo número de divisiones en los valores de dimensión t0, t1 y t2.

Procesamiento de ráster de zona multidimensional
Se muestra el procesamiento de ráster de zona multidimensional.

El número total de registros de la salida Estadísticas zonales como tabla se determina multiplicando el número de zonas y el número de divisiones del ráster de zonas. Si el número de zonas es 5, el número total de registros será de 15 (5 x 3 =15).

Estadísticas

Los tipos de estadísticas disponibles para calcular estadísticas zonales se muestran debajo con detalles adicionales, así como una ilustración gráfica que muestra los resultados para cada opción en una entrada de ejemplo.

Mayoría

  • Se asigna el valor que ocurre con más frecuencia en cada zona a todas las celdas de esa zona.
  • Cuando hay un empate en el valor mayoritario en una zona, se asigna el menor de los valores empatados a la salida de todas las ubicaciones de celda en la zona.

Ejemplo:

Ilustración de la estadística zonal Mayoría
OutRas = ZonalStatistics(ZoneRas, "VALUE", ValRas, "Majority")

Máximo

  • Se asigna el valor más alto en cada zona a todas las celdas de esa zona.

Ejemplo:

Ilustración de la estadística zonal Máximo
OutRas = ZonalStatistics(ZoneRas, "VALUE", ValRas, "Maximum")

Valor medio

  • Se asigna el promedio de los valores de cada zona a todas las celdas de salida de esa zona.
  • La fórmula para la media aritmética es la siguiente:

    Fórmula de media aritmética

    donde:

    • = valor medio
    • xi = valores observados
    • N = número de observaciones
  • La fórmula para la media circular es la siguiente:

    Fórmula de media circular

    donde:

    • = media circular
    • xi = valores observados
    • N = número de observaciones

    En el caso degenerado en el que tanto Σsin xi como Σcos xi sean iguales a cero, se utiliza el valor especial -1, que indica que la media circular no está bien definida.

Ejemplo:

Ilustración de la estadística zonal Media
OutRas = ZonalStatistics(ZoneRas, "VALUE", ValRas, "Mean")

Mediana

  • Se asigna el valor medio de cada zona a todas las celdas de salida de esa zona.
  • Los valores del tipo de estadísticas se calculan usando el método Q1 de Hyndman y Fan (1996) [1]. Cuando dos valores ordenados están igualmente cerca del valor de la mediana objetivo, se elige el menor de los dos valores.
  • Para calcular el valor medio, se clasifican todas las celdas en una zona. Si hay n celdas en la zona y n es impar, el valor medio ((n+1)/2) se escribe en cada celda de la zona. Si el número de celdas es par, la salida es el valor (n/2).

Ejemplo:

Ilustración de la estadística zonal Mediana
OutRas = ZonalStatistics(ZoneRas, "VALUE", ValRas, "Median")

Mínimo

  • Se asigna el valor más bajo de cada zona a todas las celdas de esa zona.

Ejemplo:

Ilustración de la estadística zonal Mínimo
OutRas = ZonalStatistics(ZoneRas, "VALUE", ValRas, "Minimum")

Minoría

  • Se asigna el valor que ocurre con menos frecuencia en cada zona a todas las celdas de esa zona.
  • Cuando hay un empate en el valor minoritario en una zona, se asigna el menor de los valores empatados a la salida de todas las ubicaciones de celda en la zona.

Ejemplo:

Ilustración de la estadística zonal Minoría
OutRas = ZonalStatistics(ZoneRas, "VALUE", ValRas, "Minority")

Percentil

  • Se asigna el percentil de los valores de cada zona a todas las celdas de salida de esa zona.
  • Este valor de tipo de estadísticas se calcula usando el método Q1 de Hyndman y Fan (1996) [1]. Cuando dos valores ordenados están igualmente cerca del valor de la mediana objetivo, se elige el menor de los dos valores.
  • Para calcular el percentil, todas las celdas de un ráster de valor se clasifican con la siguiente fórmula: R = P/100 x (n - 1) +1, donde P es el percentil deseado y n es el número de celdas.

Ejemplo:

Ilustración de estadística zonal Percentil
OutRas = ZonalStatistics(ZoneRas, "VALUE", ValRas, "Percentile")

Rango

  • La diferencia entre los valores máximos y mínimos en cada zona se asigna a todas las celdas de esa zona.
  • El rango se define como:
    Rango zonal = Máximo zonal - Mínimo zonal

Ejemplo:

Ilustración de la estadística zonal Rango
OutRas = ZonalStatistics(ZoneRas, "VALUE", ValRas, "Range")

Desviación estándar

  • Se asigna la desviación estándar de los valores en cada zona a todas las celdas en esa zona.
  • La fórmula para la desviación estándar aritmética es la siguiente:

    Fórmula de desviación estándar

    donde:

    • σ = desviación estándar
    • xi = valores observados
    • = valor medio
    • N = número de observaciones
    Nota:

    La desviación estándar se calcula sobre toda la población (el método N), no se estima en base a una muestra (el método N-1). Para realizar una comparación, el cálculo de la desviación estándar equivale al método STDEVP, y no al método STDEV, en Microsoft Excel.

  • La fórmula para la desviación estándar circular es la siguiente:

    Fórmula de desviación estándar circular

    donde:

    • σ = desviación estándar circular
    • = media resultante de la longitud del vector a

      En una muestra de n ángulos en grados, se resumen los ángulos de a1, a2, …, an, y cada ángulo se representa con un vector de unidad, Vector a, que apunta hacia la dirección de la observación correspondiente.

Ejemplo:

Ilustración de la estadística zonal Desviación estándar
OutRas = ZonalStatistics(ZoneRas, "VALUE", ValRas, "STD")

Suma

  • Se asigna la suma de todos los valores de celda en cada zona a todas las celdas en esa zona.
  • El tipo de datos del ráster de salida es de puntos flotantes. Esto se debe a que el valor de la suma tiende a ser bastante grande, y tal vez no sea posible representarlo con un valor entero.

    Considere, por ejemplo, una zona que tiene 2.500 filas y columnas de celdas de tamaño, y el valor de cada celda es 1.000. La suma para esa zona sería 2.500 x 2.500 x 1.000 = 6.250 millones. Si se requiere una salida de número entero y el rango está dentro de ± 2.147 millones, puede aplicar la herramienta Número entero.

Ejemplo:

Ilustración de la estadística zonal Suma
OutRas = ZonalStatistics(ZoneRas, "VALUE", ValRas, "Sum")

Variedad

  • Se asigna el número de valores únicos en cada zona a todas las celdas en esa zona.

Ejemplo:

Ilustración de la estadística zonal Variedad
OutRas = ZonalStatistics(ZoneRas, "VALUE", ValRas, "Variety")

Tipo de datos de salida

El tipo de datos de salida (entero o flotante) se determina con el cálculo zonal que se está realizando y el tipo de ráster de valor de entrada. La siguiente tabla identifica los tipos de datos esperados en el ráster de salida:

EstadísticaTipo de entrada de valorSalida

Mayoría

Entero*

Entero

Máximo

Entero, Flotante

Igual que el valor

Valor medio

Entero, Flotante

Flotante

Mediana

Entero, Flotante

Entero

Mínimo

Entero, Flotante

Igual que el valor

Minoría

Entero*

Entero

Percentil

Entero, Flotante

Entero

Rango

Entero, Flotante

Igual que el valor

Desviación estándar

Entero, Flotante

Flotante

Suma

Entero, Flotante

Flotante

Variedad

Entero*

Entero

Tipos de entrada y salida por estadística:
Nota:

* Sólo se admite un entero.

Si alguna ubicación de celda en el dataset de Zona es NoData, a esa ubicación se le asignará NoData en la salida.

Referencias

[1] Rob J. Hyndman y Yanan Fan (1996) "Sample Quantiles in Statistical Packages" The American Statistician, Vol. 50, N.º 4 (Nov., 1996), pp. 361-365.

Temas relacionados