开放源码-区域统计QGIS



是否有其他开放源码的区域统计工具(ArcGIS Spatial Analyst)?什么是最好的工具(我可以在脚本中使用)计数统计光栅文件?

您可以使用各种方法对GRASS进行此操作。哪一个最合适取决于您的数据和所需的输出。请注意,您也可以使用GRASS工具箱或Sextante工具箱从QGIS中使用GRASS。

让我们假设你有:

  • 一个矢量图,例如,vector_zones与在属性表中的myzones列。
  • 一个栅格层"值",你想为它计算区域统计

r。统计

要使用r.s statistics,首先需要将矢量映射转换为栅格层,这可以使用v.to.rast完成。接下来,使用r.statistics计算区域统计信息。

v.to.rast input=vector_zones output=zones column=myzones
r.statistics base=zones cover=values out=outputmap method=average

这将给你一个新的层与选定的区域统计,它可以是平均,模式,中位数,方差等(见上面的手册页链接)。

r。univar

r.univar函数也适用于栅格层。

v.to.rast input=vector_zones output=zones column=myzones    
r.univar map=values zones=zones output=output.file fs=;

输出是一个包含分区统计信息的表。

v.rast.stats

这并不需要你将矢量层转换为光栅层(这是在内部完成的)。该函数从栅格图中计算每个矢量类别(cat)的基本单变量统计。

v.rast.stats vector=vector_zones layer=1 raster=values column_prefix=val

结果上传到矢量地图属性表。

你可以使用R中的栅格包

library(raster)
v <- raster('raster filename')
z <- raster('zones raster filename')
zv <- zonal(v, z, fun=mean)

如果我错了请纠正我,RobertH,但我相信zonal()要求区域在某种意义上已经"栅格化",而很多时候人们会想要在多边形内的栅格细胞的统计数据。sp包中的R中的各种覆盖方法(参见:?"overlay-methods")对此是必要的,尽管如果我错了,我会很高兴听到它。比起使用SpatialGridsDataFrames,我更喜欢栅格包,但我认为必须依赖sp类来混合多边形和网格数据。这是可以的,除了会出现问题,因为它缺乏栅格包的优秀内存管理,这使得点在多边形风格的操作真的很难在R中对大型栅格进行操作。

我也相信,但还没有尝试,这可以在GRASS中完成,和/或通过QGIS,下一个版本的QGIS(1.7)有某种内置的区域统计功能。

Rasterstats包是一个很好的开源工具,对我来说工作得很好:http://blog.perrygeo.net/2013/09/24/python-raster-stats/

我开始使用它作为一种解决方法,因为arcpy的ZonalStatistics方法产生了一个有问题的栅格,在尝试将栅格转换为数组(https://gis.stackexchange.com/questions/110274/save-fails-on-raster-object-created-from-numpyarraytoraster)时会导致奇怪的错误。Rasterstats运行良好,为我的问题提供了一个有效的解决方案。

最新更新