open source - stats - Estadísticas Zonal QGIS
qgis group stats (4)
Corrígeme si estoy equivocado, RobertH, pero creo que zonal () requiere que las zonas ya estén ''rasterizadas'' en cierto sentido, mientras que muchas veces uno querrá las estadísticas de las celdas ráster que caen dentro de los polígonos. Los diversos métodos de superposición en R dentro del paquete SP (ver: "superposición de métodos") son necesarios para esto, aunque si estoy equivocado, me gustaría escucharlo. Prefiero el paquete raster antes que utilizar SpatialGridsDataFrames, pero creo que uno debe confiar en las clases sp para mezclar polígonos y datos de grillas. Lo cual está bien, excepto que se vuelve problemático porque carece de la gran administración de memoria del paquete de ráster, lo que hace que las operaciones de estilo punto en polígonos sean realmente difíciles de hacer en R en rásteres grandes.
También me hacen creer, pero no lo he intentado, que esto se puede hacer dentro de GRASS, y / o a través de QGIS, con el próximo lanzamiento de QGIS (1.7) para tener algún tipo de función de estadísticas zonal incorporada.
¿Hay alguna alternativa de código abierto para la herramienta Estadísticas Zonal (ArcGIS Spatial Analyst)? ¿Cuál es la mejor herramienta (que puedo usar en script) para contar estadísticas de archivos ráster?
El paquete Rasterstats es una buena herramienta de código abierto que funcionó bien para mí: http://blog.perrygeo.net/2013/09/24/python-raster-stats/
Empecé a usarlo como una solución porque el método ZonalStatistics de arcpy estaba produciendo un ráster problemático que producía un error extraño al intentar convertir el ráster a una matriz ( https://gis.stackexchange.com/questions/110274/save- failed-on-raster-object-created-from-numpyarraytoraster ). Rasterstats funcionó bien y proporcionó una solución eficiente para mi problema.
Puedes hacer esto con GRASS usando varios métodos. Cuál es el más adecuado dependerá de sus datos y la salida requerida. Tenga en cuenta que también puede usar GRASS desde dentro de QGIS utilizando la caja de herramientas GRASS o la caja de herramientas Sextante.
Supongamos que tienes:
- un mapa vectorial, por ejemplo,
vector_zones
con las zonas definidas en la columnamyzones
en la tabla de atributos. - un ''valor'' de la capa ráster para el que desea calcular sus estadísticas zonales
Para usar estadísticas r, primero necesita convertir el mapa vectorial a una capa ráster, lo cual puede hacer con v.to.rast . Luego, use r.statistics para calcular las estadísticas zonales.
v.to.rast input=vector_zones output=zones column=myzones
r.statistics base=zones cover=values out=outputmap method=average
Esto le dará una nueva capa con la estadística zonal seleccionada, que podría ser el promedio, el modo, la mediana, la varianza, etc. (consulte el enlace de la página man arriba).
La función r.univar también funciona en capas ráster.
v.to.rast input=vector_zones output=zones column=myzones
r.univar map=values zones=zones output=output.file fs=;
El resultado es una tabla con las estadísticas zonal.
Esto no requiere que conviertas la capa vectorial en una capa ráster (esto se hace internamente). La función calcula estadísticas univariadas básicas por categoría de vector (cat) desde el mapa ráster.
v.rast.stats vector=vector_zones layer=1 raster=values column_prefix=val
Los resultados se cargan en la tabla de atributos del mapa vectorial.
puede usar el paquete de ráster en R
library(raster)
v <- raster(''raster filename'')
z <- raster(''zones raster filename'')
zv <- zonal(v, z, fun=mean)