尽管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格式出现的,关于该数据类型的读取方法,可以查看前面的教程,都有详细的说明

matlab地理数据导入,基于Matlab的栅格地理数据处理-快速入门系列(1)相关推荐

  1. matlab飞行数据仿真,基于MATLAB的飞行仿真

    收稿日期: 2005 - 05 - 15 第 23卷 第 06期 计 算 机 仿 真 2006年 06月 文章编号: 1006 - 9348 (2006) 06 - 0057 - 05 基于 MATL ...

  2. 将数据导入到MATLAB

    将数据导入到MATLAB 将数据导入到MATLAB中有二种方式. 第一种:直接使用MATLAB读Excel文件 例如 Excel表格 num=xlsread('data1.xlsx','Sheet1' ...

  3. 【Python零基础快速入门系列 | 03】AI数据容器底层核心之Python列表

    • 这是机器未来的第7篇文章 原文首发地址:https://blog.csdn.net/RobotFutures/article/details/124957520 <Python零基础快速入门 ...

  4. 【Python零基础快速入门系列 | 07】浪漫的数据容器:成双成对之字典

    这是机器未来的第11篇文章 原文首发链接:https://blog.csdn.net/RobotFutures/article/details/125038890 <Python零基础快速入门系 ...

  5. 如何将txt格式的数据导入到MATLAB中,并绘制图线

    如何将txt格式的数据导入到MATLAB中,并绘制图线 1.把txt格式的文件复制到MATLAB的目录下,在txt文件上点击右键→Import Data→next→Finish, 在workspace ...

  6. 将C/C++程序的变量数据导入到MATLAB中的方法

    2016-5-21日:我发现自己真是傻,既然对象是图像,那何必把像素值导出来呢?直接将图像输出,然后MATLAB再读入图像不就可以了? 这篇博文随接上一篇博文: 将MATLAB的变量数据导入到VC中的 ...

  7. 【LSTM时间序列数据】基于matlab LSTM时间序列数据预测【含Matlab源码 1949期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[LSTM时间序列数据]基于matlab LSTM时间序列数据预测[含Matlab源码 1949期] 获取代码方式2: 付费专栏Matla ...

  8. matlab excel导入矩阵,如何将excel中数据导入到matlab中!Excel导入matlab生成矩阵

    如何将excel中数据导入matlab并存入数组中 使用Matlab中的Excel Link就可以了. 如果使用Excel 2003版本,操作如下: 1 打开Excel. 2 在菜单栏中选择→加载项→ ...

  9. matlab怎么导入数据格式,matlab导入excel表格数据代码,如何将excel中数据导入到matlab中...

    如何将excel中数据导入到matlab中 Matlab如何导入excel数据的如下: 1.一xlsread()函数,import简单的多,具句: A = xlsread('yourfilename. ...

  10. 导入matlab某两列数据,将文本文件中的数据导入到matlab中一例(wwh)

    将文本文件(.txt)中的数据导入到matlab中一例 山东水利职业学院王为洪 247128324@http://www.doczj.com/doc/5d97a7dfad51f01dc281f1fd. ...

最新文章

  1. Java的从业方向是什么?好找工作吗?
  2. ​十六周一次课(4月11日) 学习完成 18.11 LVS DR模式搭建 18.12 keepalived + LVS
  3. 【突破移动端性能极限】
  4. 如何进行个人知识管理和提高自己能力?
  5. restful api php,RestfulAPI · ThinkPHP6.0接口开发与应用及uniapp快速入门(更新完毕) · 看云...
  6. java kiwi_[转] Java 8 开发的 4 大顶级技巧
  7. 读书笔记之:高质量程序设计指南——C++/C
  8. LeetCode 134 Gas Station
  9. Ubuntu 20.04 国内源
  10. flume学习(七):如何使用event header中的key值
  11. 回声消除性能评判指标
  12. 手把手实现AI诗歌生成(AI写诗)
  13. 快来了解一下5个超实用的WPS表格操作技巧!
  14. 朗豫:储备池和借贷是MOV重点发力的方向
  15. vs2015遇到找不到kernel32.lib,无法解析的外部符号 __imp__printf的问题
  16. 使用xshell登陆腾讯云主机
  17. 什么是等保,为什么企业要做等保服务。
  18. android 强制退出程序,Android 强制且彻底的退出app
  19. 高并发实时直播弹幕研发实践
  20. 一款好的软件,软件测试必不可少...

热门文章

  1. Error: ‘list‘ object cannot be coerced to type ‘double‘
  2. C/C++编程学习 - 第5周 ③ 圆锥体的体积
  3. python爬取谷歌学术_对于python抓取google搜索结果的一些了解
  4. 腾讯下载的qlv格式视频转换mp4格式方法
  5. oracle删除表空间和修改索引表空间
  6. APP消息推送-个推java端实现
  7. 鉴权html5服务器,搭建web之 服务器鉴权失败,请确认服务器已启用密码鉴权并且账号密码正确?...
  8. 正则验证正整数表达式
  9. coreldraw常用快捷键
  10. Java ques:Client does not support authentication protocol requested by server;Access denied user‘roo