terra|第二节:栅格重分类、投影变换、区域统计、属性融合与提取
本节将介绍基于R语言terra包的栅格重分类、矢量绘图、字段融合、投影变换、区域统计、属性表的提取、栅格矢量的输出等内容。
重分类
在R-terra包|第一节中,得到处理好的NDVI,下面将对其进行栅格重分类,采用 classify
函数:
classify(x, rcl, include.lowest=FALSE, right=TRUE,
others=NULL, brackets=TRUE, filename="", ...)
其中 x
为栅格, rcl
为分类依据。具体如下:
m c( -1, 0, 1,
0, 0.3, 2,
0.3, 0.6, 3,
0.6, 1, 4)
rcl matrix(m, ncol =3, byrow =TRUE)
rcl
re_ndvi classify(dx_ndvi, rcl)
freq(re_ndvi)
plot(re_ndvi, main ='NDVI')
矢量读取与绘图
vect
函数可读取矢量数据,并可使用 plot
函数加上属性字段进行映射出图,如下所示:
bj vect("E:/Data/R_save/dingxi/bjt.shp")
bj
plot(bj, col=rainbow(n))
plot(bj, "gpd", col=rainbow(25))
其中,name对应的为该矢量所包含的属性,或者通常所说的字段,以各地区gdp的属性绘图:
按字段合并矢量
该矢量是以县为边界,使用 aggregate
函数按属性中的 ID_shi
代码进行合并得到市行政区划,如下
shi aggregate(bj, "ID_shi")
plot(bj, col="light blue", lty=2, border="red", lwd=2)
lines(shi, lwd=5)
lines(shi, col="white", lwd=1)
text(bj, "name_1", cex=.8, halo=TRUE)
投影变换
计算得到ndvi坐标系为WGS_1984,为矢量区划坐标系为CGCS_2000 ,因此需要投影变换到同一坐标系下,采用 terra::project
函数,如下所示:
crdref crs(dx_ndvi)
bj1 terra::project(bj, crdref)
bj1
plot(dx_ndvi)
plot(bj1, add = TRUE, border='red', lwd=1.5 )
区域统计
现在有区域ndvi和行政区划数据,采用 extract
函数提取各个县的ndvi的均值
tj extract(dx_ndvi1, bj1, mean, na.rm=TRUE)
矢量属性表操作
将提取到ndvi均值追加到行政区划 bj
属性里
bj1$ndvimean tj$b4
head(bj1)
提取属性
bjv values(bj1)
head(bjv)
bjv1 as.data.frame(bjv)
head(bjv1)
提取字段
bj1$gpd
bj1[, "gpd"]
栅格矢量输出
writeRaster(dx_ndvi, "E:/Data/R_save/dingxi/OUTPUT/dx_dnvi.tif", overwrite = FALSE)
writeVector(bj1, "E:/Data/R_save/dingxi/OUTPUT/dx_bj.shp", overwrite = FALSE)
Original: https://blog.csdn.net/keepclam/article/details/124604521
Author: 地理空间科学
Title: 【R-terra包|第二节】:栅格重分类、投影变换、分区统计
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/662255/
转载文章受原作者版权保护。转载请注明原作者出处!