Processing math: 100%

8 votos

¿Hay un equivalente de código abierto de ArcGIS "Estadísticas zonales como tabla" herramienta?

Con ArcGIS zonal de la estadística como en la tabla I se puede calcular fácilmente el valor de la media a partir de una trama contenida dentro de un polígono de un shapefile. Ahora tengo un Mac, y por lo tanto no puedo acceder a ArcGIS más. En realidad, estoy tratando de usar software de código abierto (por ejemplo, R y QGIS).

Pensé que "zonal" estadísticas de QGIS haría el truco, sin embargo, una característica esencial para mis necesidades es que faltan: en ArcGIS, puede especificar la columna por la que desea agregar los valores. Por ejemplo, si en tu archivo de forma 100 polígonos, puede que no desee simplemente calcular el valor medio de la trama en cada polígono. Más bien, es posible que desee saber el valor de la media de un grupo de polígonos. En mi caso, una columna ("veg_class") clasifica a todos los polígonos como "tropical", "moderado" o "boreal" de la vegetación.

¿Cómo puedo yo, en QGIS o cualquier otro programa de software, seleccione la columna de agregar las estadísticas así que, al final, puedo obtener una media por veg_class (es decir, 3) en lugar de cada polígono?

4voto

Mark Hack Puntos 1

Usted puede hacer esto en R con la ayuda de trama y rgdal biblioteca

library(raster)

library(rgdal)

Carga el archivo de forma y trama

shp <- readOGR("shape file directory", "shapegile_name")
in.ras <- raster("raster file")

Extracto de la trama de valor sobre el shapefile val <- extract(in.ras, shp)

Crear una estructura de datos para almacenar la extracción y el valor de los píxeles correspondientes de grupo. df <- data.frame(matrix(NA, 0 , 2)) n <- length(val) for (i in 1:n){ v = val[i] m <- length(v) for ( j in 1:m){ df <- rbind(df, c(shp@data$group[i], j)) } }

Encontrar la media por grupo de sabios

df2 <- aggregate(df$val, by=list(df$group), mean)

Más tarde, usted puede ahorrar el marco de datos como archivo csv o shapefile. Bueno, si usted encuentra alguna otra manera, en lugar de un bucle for.

1voto

Mue Puntos 2469

No una solución, sino un posible (y posiblemente tedioso) la solución es:

  1. Utilizar el vector de Split capa de herramienta en su "veg_class" la columna que crea un shapefile para cada clasificación.

  2. A continuación, ejecute el Zonal Estadísticas plugin (que le permite elegir las estadísticas que desea calculado) o la herramienta desde el Procesamiento de la caja de herramientas o Raster menú en cada capa vectorial.

  3. (Opcional), a Continuación, combinar las salidas de los zonales de estadísticas en un shapefile mediante la Combinación de capas vectoriales desde el Procesamiento de la caja de herramientas o Vector de menú.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X