查看原文
其他

栅格数据分区统计转面板数据,单波段、多波段数据都可以找到合适的方法

走天涯徐小洋 走天涯徐小洋地理数据科学 2022-07-17

栅格数据分区统计转面板数据,单波段、多波段数据都可以找到合适的方法

区域直方图Zonal Histogram

区域直方图(Zonal Histogram),统计每一个矢量区域内每种像元值对应的像元个数。

  • 比较适合于土地覆被这种离散值的统计
Zonal Histogram
  • 统计结果:HISTO_对应像元值
    • 每一列对应本像元值在所在行矢量范围内的像元数
统计结果

可以很方便的绘制下面这种占比分布图:

2015年土地覆被占比分布图

QGIS中使用矢量裁剪、分区统计栅格操作时,经常出现下面的错误:几何无效

几何无效错误

可以使用修复几何Fix Geometries工具来解决,使用修复后的矢量再进行栅格的裁剪操作。

Fix Geometries来修复SHP几何错误

分区统计Zonal Statistics

分区统计(Zonal Statistics)可以用于统计矢量区域范围内的像元值,对该区域内的所有像元进行统计,计算本区域像元的数量和(和上面的Zonal Histogram结果一样)、像元值的和、像元均值、中位数、标准差、最小值、最大值等等。

分区统计
QGIS中提供的分区统计算法

上面QGIS提供的矢量栅格分区计算方法,很方便,但是一次只能处理一个波段的数据,如果是对多波段的时间序列栅格数据如何方便的处理呢?我推荐使用R语言。

R语言分区统计

R语言也具有栅格分区统计的能力,而且可以同时对多个波段进行统计,可以很方便的处理时间序列数据。具体代码如下:

优势

  • 可以计算多波段数据
  • R语言作为统计软件有更丰富的统计方法
  • 统计结果可以使用ggplot2绘图
library(terra)
#分市统计NDVI
City = vect("./SHP/JJJ_Xian.shp")
NDVI = rast("./Pre/YearPreJJJ2001_2020.tif")
names(NDVI) = seq(2001, 2020, 1)
CityRaster = rasterize(City, NDVI, field="PAC")
NDVICity = zonal(NDVI, CityRaster,  fun="mean", na.rm=TRUE)
write.csv(NDVICity, "./CSV/NDVICity.csv")
栅格时间序列
时间序列面板数据

参考文献

  1. 栅格数据的一些概念和常用处理方法,ArcGIS栅格数据显示错误问题如何解决
  2. QGIS和R语言栅格数据重分类
  3. https://rspatial.github.io/terra/reference/terra-package.html

点击阅读原文查看课程学习

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存