陆地水循环分享 http://blog.sciencenet.cn/u/afantics

博文

基于Matlab的土地利用转移矩阵计算

已有 4899 次阅读 2021-10-21 16:33 |个人分类:matlab小程序|系统分类:科研笔记

基于Matlab的土地利用转移矩阵计算

土地利用转移矩阵可以通过ARCGis平台计算,需要栅格转面等一系列操作,基于Matlab的方法则更为方便。

如有疑问或者获取软件、案例数据,请加QQ群790411341

1数据准备

          需要两期土地利用类型图,tiff格式,分辨率相同,value值分类一致

2.对于value分类不一致,或者分类过多,需要整合的tiff,采用GIS中的重分类中的查找表工具,将value值替换成新的分类过的value,需要添加新的分类字段,以替换原先value。


图片.png

3.代码

代码来自https://www.jianshu.com/p/ba7ae918ffd1, 该作者写了很多使用代码,建议收藏。


对代码进行了部分修饰性说明,如下:

[a,R]=geotiffread('C:\Users\ASUS\Desktop\土地利用转移\1980.tif');%先导入纬度数据
info=geotiffinfo('C:\Users\ASUS\Desktop\土地利用转移\1980.tif');
data1990=importdata('C:\Users\ASUS\Desktop\土地利用转移\1980.tif');%土地类型分别是123456,假设共有n类
data2000=importdata('C:\Users\ASUS\Desktop\土地利用转移\2018.tif');
zy=zeros(size(data1990,1),size(data1990,2))
counsum_value=[];
for i=1:7%这里的7为总的类型数,需要修改
    sy=find(data1990==i);
    countsum=[];
    for j=1:7%这里的7为总的类型数,需要修改
        sy1=find(data2000==j);
        sy_inter=intersect(sy,sy1);
        countsy=length(sy_inter);
        countsum=[countsum,countsy];
        zy(sy_inter)=i*10+j;%得到转移前后的量,比如i=1;j=2,则结果是12,表示由1转移到2
    end
    counsum_value=[counsum_value;countsum];
end
xlswrite('C:\Users\ASUS\Desktop\土地利用转移\土地利用转移矩阵.xlsx',counsum_value)
filename='土地利用空间转移分布图.tif';
geotiffwrite(filename,zy,R,'GeoKeyDirectoryTag',info.GeoTIFFTags.GeoKeyDirectoryTag);






https://blog.sciencenet.cn/blog-3459054-1308861.html

上一篇:《水文模型》--徐宗学
下一篇:《 Fortran 95程序设计》--彭国伦
收藏 IP: 222.168.41.*| 热度|

1 guest00526655

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-11-28 02:45

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部