¿Cómo puedo calcular sumas, promedios, etc. de puntos ráster (multibanda) por polígono de una capa vectorial? Me dijeron que esto se llama "estadísticas zonales". Lo intenté con QGIS primero.
Hay una manera de hacerlo, pero eso es demasiado lento (convertir el ráster en vector, intersecar con la segunda capa vectorial, calcular la geometría, exportar números, calcular estadísticas con una hoja de cálculo u otro programa, volver a importar los resultados, me lleva una eternidad para mi 350.000 puntos de trama).
También me dieron la pista de usar saga-gis. Eso tiene "estadísticas zonales", pero se basan en categorías de una banda de trama, no en polígonos de una capa vectorial. Entonces, para usar esto, tendría que convertir mi capa vectorial en ráster y luego calcular las estadísticas.
Esta parece ser la forma incorrecta de resolver esto. No habría forma de tener en cuenta los puntos ráster que pertenecen a 2 o más polígonos porque están intersectados por el límite del polígono. Supongo que las estadísticas basadas en polígonos deberían poder manejar esto, así que también asumo que todavía no he encontrado el módulo correcto.
Saga-gis tiene realmente muchos módulos. Por favor, hágame saber cuál es el adecuado para esta aplicación.
fuente
Respuestas:
Estaba luchando por hacer exactamente lo mismo, pero por varias razones estoy comprometido a usar QGIS. Intenté usar v.rast.stats usando el complemento GRASS y también a través del complemento Sextante. El último enfoque falló, porque parece adjuntar las estadísticas a una capa vectorial temporal que luego elimina. El complemento GRASS funcionó, pero no trata con polígonos superpuestos.
Después de investigar un poco (en la fuente del complemento ZonalStats prometedor), descubrí que QGIS en realidad tiene métodos de estadísticas zonales integrados en la API, y estos también tienen enlaces de Python. Así que, mientras que sólo se busca
count
,sum
ymean
estadísticas de sus funciones de polígonos, la consola de Python (Plug-ins> Consola Python) es actualmente la forma más fácil de conectar a las estadísticas de la tabla de atributos de polígonos.Seleccione su capa ráster en la tabla de contenido y escriba lo siguiente en la consola (toma el nombre del archivo fuente de su capa ráster)
>>> rasterfile = qgis.utils.iface.mapCanvas().currentLayer().source()
Seleccione su capa vectorial y ejecute el siguiente comando en la consola (agarra la capa vectorial en sí)
>>> vectorlayer = qgis.utils.iface.mapCanvas().currentLayer()
Ejecute los siguientes tres comandos en la consola (pasan la capa vectorial y el archivo ráster a la calculadora de estadísticas zonales incorporada de QGIS)
>>> import qgis.analysis
>>> zonalstats = qgis.analysis.QgsZonalStatistics(vectorlayer,rasterfile)
>>> zonalstats.calculateStatistics(None)
Los resultados se agregarán como campos adicionales en la capa de polígono.
Tenga en cuenta que si desea agregar un prefijo a los nuevos campos (en lugar de simplemente tenerlos como suma, media y conteo), entonces reemplazaría el primer comando en el paso 3 con lo siguiente (suponiendo que deseara usar 'zonal_' como el prefijo
fuente
Finalmente lo encontré: en Saga-GIS abrir categoría-polígonos y cuadrícula de datos, luego formas-> cuadrícula-> valor de cuadrícula-> estadísticas de cuadrícula para polígonos
fuente
Puede hacer esto con bastante facilidad con PostGIS. Vea este tutorial: http://trac.osgeo.org/postgis/wiki/WKTRasterTutorial01
fuente
Parece que este problema ya se resolvió hace algún tiempo, pero de todos modos agregaré mi cuchara a la sopa, ya que recientemente necesité algunas estadísticas de trama.
La metodología QGIS descrita por rudivonstaden funcionó de maravilla, gracias por el consejo. Sin embargo, en mi caso también quería saber los valores mínimo y máximo y estándar para los valores ráster dentro de mis polígonos, y esa funcionalidad que no pude encontrar en QGIS. Encontré una solución a través de la función isectpolyrst en GME , que es una de mis favoritas para resolver problemas con SIG. Esta función me dio las estadísticas que necesitaba y también bastante rápido.
PD. GME tiene una dependencia desafortunada (ArcGIS). Entonces, aunque el programa en sí está disponible gratuitamente para todos, necesita ArcGIS para ejecutarlo. Pero si tiene ArcGIS (cualquier nivel de licencia), le recomiendo que lo pruebe.
EDITAR:
Obtuve las estadísticas que quería, pero luego descubrí que salí a conclusiones un poco apresuradamente después de mirar los números reales. Obtienes estadísticas, sí, pero solo para la primera banda en una trama. Entonces, si opera con una imagen ráster de 3 bandas, las estadísticas están incompletas. Debería haber señalado la cantidad de canales en mi publicación original. Es mejor usar SAGA-GIS como stn propuesto anteriormente si está trabajando con imágenes ráster de múltiples bandas.
fuente
calcula de forma predeterminada solo Count, Sum y Mean (como puede ver
Raster -> Zonal Statistics
en QGIS Desktop, puede hacer mucho más).Si, por ejemplo, desea calcular solo la media que debe usar:
ver API para todas las opciones.
fuente