现实问题
在研究过程中,经常会遇到要对各个区域的某些数据进行分区统计的情况,如对某地区的各个行政区内的平均温度进行统计。又如,统计各个行政区内建成区的面积等等。一般这种分区统计可直接在ArcGIS中完成,ArcGIS空间分析工具箱中提供非常丰富的分区统计工具供用户调用:
当前解决方案存在的问题
这些工具中输入的区域可以是栅格的或者是矢量的,值数据只能是栅格的。GUI提供的工具固然方便,但是,如果使用程序自动化的完成这些功能的话是不是更好呢。当前,关于Python分区统计工具,根据区域数据的格式,可分为两类:
- 矢量边界
- 栅格边界
矢量边界的分区统计可以使用ArcGIS/arcpy的分区统计
工具进行处理,开源GIS方面,有两个Python库也可以进行处理,一个是rasterstats,另一个库便是大名鼎鼎的GDAL。但是在栅格区域方面,虽然实现过程很简单,但是目前没有找到合适的包。
解决方案
下面是基于栅格单元与栅格单元的分区统计的源代码:
import numpy as np
import pandas as pd
def zonal_statistic(zonal_arr, data_arr, stats_field=['mean'], nodata=255):