Part1背景
土地利用转移矩阵大家应该都会做,但是土地利用转移图还是有部分人不太会做,本期介绍下R和ArcGIS两种方法绘制土地利用转移图,大家多多分享。练习数据来源请引用:地理遥感生态网科学数据注册与出版系统
Part2R方法
代码:
#加载安装包 library("raster");library(ggplot2); library(rgdal); library(sf); library(ggspatial); library(do) #设置工作目录 setwd("C:\\Users\\90659\\Desktop\\案例\\") #加载数据 CNLC2010=raster("CNLC2010gz.tif") CNLC2020=raster("CNLC2020gz.tif") p= sf::st_read("C:\\Users\\90659\\Desktop\\案例\\gz.shp") #将矢量边界转换与2020年一致的投影 p=st_transform(p,crs(CNLC2020)) #将2020年2010年的栅格数据裁剪一样的边界 CNLC2020<-crop(mask(CNLC2020,p),p) CNLC2010<-crop(mask(CNLC2010,p),p) #将两期数据合成多波段 hjzk=stack(CNLC2010,CNLC2020) #转换成数据框格式 test_spdf = as.data.frame(hjzk, xy = T) #新建字段,两期变化 test_spdf$value=paste0(test_spdf$CNLC2010gz,"→",test_spdf$CNLC2020gz) #将数字转换成中文版式 test_spdf$value=do::Replace(data=test_spdf$value,pattern = c("10:耕地", "20:林地", "30:草地","40:水域","50:城市用地","60:未利用地","80:荒地"))#完美 #构建各类型的颜色变化 col1=colorRampPalette(c("#348D47", "#BADCBD"))(7) col2=colorRampPalette(c("#B2182B", "#FDDBC7"))(4) col22= colorRampPalette(c("#83488B", "#E5C5EA"))(7) col3=colorRampPalette(c("#C0468A", "#FECCE5"))(6) col4=colorRampPalette(c("#007D6E", "#A4E1D9"))(7) col5=colorRampPalette(c("#166490", "#B7D2EE"))(6) col6=colorRampPalette(c("#9B5417", "#E0DE83"))(6) col=c(col1,col2,col22,col3,col4,col5,col6) #采用ggplot2画图 p=ggplot() + geom_raster(data = na.omit(test_spdf),aes(x,y,fill=factor(value))) + scale_fill_manual(name = "2010→2020",values = col) + geom_sf(data = p,fill="NA",size=0.3,color="black")+ annotation_scale(location = "bl") + annotation_north_arrow(location = "tr", which_north = "true", pad_x = unit(0.02, "in"), pad_y = unit(0.02, "in"), style = north_arrow_fancy_orienteering)+ labs(x ='',y=" ")+ theme_bw()+ theme(axis.text.y = element_text(angle = 90, hjust = 0.5)) #导出数据 ggsave("土地转移.tiff", plot = p, device = "tiff", dpi =300, width = 30, height = 30, units = "cm")
Part3ArcGIS方法
1.导入数据
2.合并栅格
3.一共有43种变化类型,与R语言出来的一样
4.合并栅格的属性表里新建字段位2010->2020,最好长度60以上,不然有可能显示不完全
5.属性表里都是数字,想要我们中文的含义,使用属性里的链接,分别将2010和2020字段进行连接起来。(土地分类的表格内容一样,因为不同字段不能同时链接一个表)
6.在属性表格里的2010->2020将链接好的字段进行计算器计算,代码及含义如下
7.根据配色要求,自行选取颜色
8.成图