基于Matlab的栅格地理数据处理-快速入门系列(1)

尽管matlab在处理栅格地理数据上面具有极大的便捷性,但目前关于引导生态,地理相关学科的学生使用matlab进行栅格地理数据处理的教程较少,更多的初学者采用Arcgis来完成栅格地理数据处理,但在二次扩展或自定义自己想要的功能方面,Matlab比起ArcGis更为快捷和方面,介绍matlab处理栅格地理数据较为经典的一本书是陈彦光老师的《基于Matlab的地理数据分析 》,该书讲述了地理数据分析常用的算法如多元分析,Hurst指数分析等,在实例中仅仅是针对单点长时间数据的excel数据,而不是针对整个栅格数据,缺乏栅格数据的输入和输出,在进行栅格数据应用时,代码需要进行重新加工处理,同时该书中也是直接给出了代码,但关于在处理地理数据时的编程思维并没有仔细说明。在该系列教程中,画长空会详细的讲述基于matlab读入各种类型的栅格数据,读入数据后数据的详细说明,数据的展示,经常用来操作数据的函数,针对栅格地理数据的编程思维方法。

Matlab 处理栅格地理数据的优势

Matlab全称是Mmatrix Laboratory,翻译过来就是矩阵实验室,能够快速的处理矩阵数据,而栅格地理数据是由一个一个像元或格点组成的,每个格点都存在着一个值,当读入到matlab中去时,直接就是一个矩阵的形式,非常方便matlab来进行处理,而且栅格地理数据的常用格式是tif数据,matlab通过importdata数据可以直接读入,常见的国际地理生态数据集如CRU,TRMM等都可以通过matlab的内置程序直接读入,形成一个一个矩阵,因此Matlab能够非常方便快捷的读入栅格地理数据。读入进去后,我们的数据就是一个一个的矩阵,matlab中有大量实用方便的函数对矩阵进行操作,而且比起arcpy等matlab针对栅格地理数据处理更加容易入门和上手实编。

Matlab 导入栅格地理数据

matlab在导入栅格数据时候常常会配合ArcGis和Envi进行使用,matlab通过importdata导入tif格式的数据类型最为方便,前面的教程中都有用到这一读取方式。在进行批量读取时,需要我们的数据命名存在规律,假设我们的存储路径是"D:\matlab\example",在example文件夹下面的降水数据命名是 2000pre.tif, 2001pre.tif一直到2018pre.tif, 如果把数据全部读入进去,先建立个大矩阵,然后读取时对年份进行循环,具体如下

a=importdata('D:\matlab\example\2001pre.tif');
[m,n]=size(a)
begin_year=2000;
end_year=2018;
lon=end_year-begin_year+1
datasum=zeros(m*n,lon);
k=1;
for i=begin_year:end_year
    filename=["D:/matlab/example",int2str(i),'pre.tif'];
    data=importdata(filename);
   data=reshape(data,[],1);
   datasum(:,k)=data;
    k=k+1;
end

该程序建立后,当需要读取其他数据集时,只需要改变下开始年份和结束年份,读入的a变量,以及存储路径和filename,代码的复用性高。上述读取全部19年降水数据的基本逻辑是,首先读取进去其中一个,获取到该数据的行列号(size函数),设置好开始和结束年份以及时间长度,提前设置个大矩阵来存储读取结果,读取时,采用循环读取,单个栅格数据读取后,变成一列数据,19年数据最后变成了19列数据,这样每一行就是每个格点的时间序列。在后续处理中,只要对行进行循环,就可以处理全部的数据。建议能够根据自己的数据重新写该段代码。
当我们的栅格数据类型是GRID格式(Arcgis中的栅格数据格式)需要采用Arcgis来进行转换成tif格式,当数据格式是envi专有的tif或dat格式时,需要在envi中转换为普通的tif格式才能够读入到matlab中,特别注意一点是envi的tif格式无法读入到matlab中,尽管它们都是tif格式,但envi专有的tif格式与普通的tif格式存在着差异。
假如我们的格式是矢量格式的话,可以通过Arcgis转换成栅格数据,但需要注意的是分辨率和范围要转换成和你要处理的其他栅格数据是一致的,实现方式是设置环境变量中的投影,范围和分辨率,比如我们的土地利用是矢量的,栅格数据是1km的降水和气温,要统计每种土地利用类型下的降水和气温,首先要把矢量的土地利用也转换成1km的栅格数据,同时保证范围和投影一致。
当不同来源的栅格数据分辨率不一致,或投影不一致或范围不一致时,会导致数据的行列号不一致,如果导入matlab中进行处理则会造成错误,处理方法可以以一个为基准,用这个来裁剪其他栅格数据,设置环境变量中的投影,范围和分辨率和基准数据一致。在我已有的教程中,读者在应用时常常也碰到这个问题,只需通过上述方法解决即可。
常见的国际数据集是以nc格式出现的,关于该数据类型的读取方法,可以查看前面的教程,都有详细的说明

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,542评论 6 504
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,822评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,912评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,449评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,500评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,370评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,193评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,074评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,505评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,722评论 3 335
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,841评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,569评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,168评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,783评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,918评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,962评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,781评论 2 354

推荐阅读更多精彩内容