版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ESA_DSQ/article/details/70176214

这是MODIS数据的简介和下载的最后一篇,下载方式的进阶版——基于MODIS Web Service的下载方式。
这篇是笔者课程上机实习内容之一,做些简要总结和整理。
事实上MODIS产品系列就如前面提到的,由于搭载在Terra星和Aqua星上,所以产品就包括了Terra星、Aqua星以及二者集成的产品。分别以MOD(Terra星)、MYD(Aqua星)、MCD(二者集成)作区分。具体的产品查询网站除了前面文章简单提到的之外,还可以查看官网。

https://lpdaac.usgs.gov/dataset_discovery/modis/modis_products_table/

当然这一次进阶版的下载方式是基于Web Service的。那么Web Service是什么呢?这边引用了课程ppt的一段话。

Web service是一个平台独立的,低耦合的,自包含的、基于可编程的web的应用程序,可使用开放的XML(标准通用标记语言下的一个子集)标准来描述、发布、发现、协调和配置这些应用程序,用于开发分布式的互操作的应用程序。

Web Service技术, 能使得运行在不同机器上的不同应用无须借助附加的、专门的第三方软件或硬件, 就可相互交换数据或集成。依据Web Service规范实施的应用之间, 无论它们所使用的语言、 平台或内部协议是什么, 都可以相互交换数据。Web Service是自描述、 自包含的可用网络模块, 可以执行具体的业务功能。Web Service也很容易部署, 因为它们基于一些常规的产业标准以及已有的一些技术,诸如标准通用标记语言下的子集XML、HTTP。Web Service减少了应用接口的花费。Web Service为整个企业甚至多个组织之间的业务流程的集成提供了一个通用机制。

简单说,这是个方便你下载的插件。具体的下载地址就在下面了。官方提供了多种语言的客户端,包括Java,Perl,Python,Kepler,Matlab和R。本篇主要介绍Matlab和R的客户端如何下载MODIS数据。

https://modis.ornl.gov/data/modis_webservice.html

先介绍Matlab的客户端,首先在官网下载Matlab的客户端。

客户端压缩包文件:

客户端在Matlab的部署非常简单。只需要拷贝到Matlab的工作目录即可。当然使用的时候要求位于如图的路径中。

接下来就可以愉快地使用了。当然,由于官方的镜像搬迁的问题,需要更新对应的镜像地址。

对应在Matlab客户端的modisClient.m文件中找到替换的镜像地址,保存后即可开始使用。

在Matlab中调用不含任何参数的modisClient,可以看到可供下载的MODIS产品列表。

modisClient()

用产品名称作为参数,则可以看到该产品下所有数据集。

modisClient('MOD15A2')

modisClient('MOD15A2','Lai_1km',36.833,116.567)

加上数据集名称(以1 km的叶面积指数数据为例)以及经纬度坐标。结果为对应的数据集(该数据8天为间隔)所在的时间范围。

在前面的基础上加上时间范围即可用客户端下载对应的MODIS数据。数据的下载格式是一个多元结构体。包括了数据、转换因子、对应时间序列和单位等等。这样我们就用Matlab下载到了对应的MODIS数据。

YC_LAI2009=modisClient('MOD15A2','Lai_1km',36.833,116.567,2009000,2009365)


接下来我们讲的是R语言的客户端及其下载方式。R语言的客户端有两种配置方法,一个是基础设置(基于SSOAP来进行),一个是高级设置(MODISTools包)。
笔者个人使用的是高级设置,基础设置没有配置过。只是对官方给出的例子做了下翻译,具体的demo如下:

##确定你安装了SSOAP包,否则先安装SSOAP,用install.packages("SSOAP")
##接着你就可以尝试用命令行的方式来下载裁切你想要的MODIS影像数据了## 载入包
library(SSOAP)## 获取SOAP服务
ornlMODIS = processWSDL("http://daac.ornl.gov/cgibin/MODIS/GLBVIZ_1_Glb_subset/MODIS_webservice.wsdl")## 定义函数设置
ornlMODISFuncs = genSOAPClientInterface(operations=ornlMODIS@operations[[1]], def=ornlMODIS)## 使用获取裁切影像的函数设定
result = ornlMODISFuncs@functions$getsubset(40.115,-110.025,
"MOD11A2","LST_Day_1km","A2001001","A2001025",1,1)##打印结果
print(result)

基础设置R语言demo地址:

https://modis.ornl.gov/files/modiswebservice/R_getsubset.r

接下来用MODISTools包来做测试,GetProducts函数类似于Matlab的moidsClient():

GetProducts()

而对应的查看数据集的函数并不是在GetProdcuts函数中填入参数,而是使用GetBands函数。

GetBands("MOD15A2")

对应查看数据时间范围的函数为GetDates。

GetDates(36.833,116.567,"MOD15A2")

而类似于Matlab客户端下载数据的函数则为GetSubset和MODISSubsets。

YC_LAI2009<-GetSubset(36.833,116.567,"MOD15A2","Lai_1km","A2009001","A2009081",KmAboveBelow = 0,KmLeftRight = 0)

GetSubset函数较为简单。但笔者测试时,发现终止时间仅能到达第81天(LAI数据为8天合成产品)。目前尚不清楚具体原因,故最后使用MODISSubsets获取对应的数据。MODISSubsets必须先建立一个数据框作为经纬度(lat,long为字段名),时间限制范围(start.date,end.date为字段名)的数据。而函数中比较重要的参数还包括了Size和TimeSeriesLength,Size可以用默认值(经纬度位置所处瓦片数量,c(0,0)表示像元中心值),TimeSeriesLength表示时间序列长度,等于1代表从一年的开头到结尾。运行程序,会发现在工作目录下生成了一个.asc文件(即对应MODIS下载下来的数据)。

yclai2009<-data.frame(lat=36.833,long=116.567,start.date=2009,end.date=2009)
MODISSubsets(LoadDat = yclai2009,Products = "MOD15A2",Bands = "Lai_1km",Size = c(0,0),StartDate = T,TimeSeriesLength = 1)

最后对获取的LAI数据进行绘图可视化。

#Matlab中
Puredata=[YC_LAI2009.data(:,:)]
plot([0:(length(Puredata)-1)]*8+1,Puredata*YC_LAI2009.scale,'b-')
ylabel=(YC_LAI2009.units)
xlabel=('day of year')
title=('禹城站2009年LAI')#R中
a<-read.table("Lat36.83300Lon116.56700Start2009-01-01End2009-12-31___MOD15A2.asc",sep = ",")
lai<-data.frame(day=seq(1,365,8),lai=a$V11*0.1)
plot(lai,type="l",pch=16,col="blue",xlab="day of year",ylab="LAI",main="禹城站2009年LAI")

Matlab绘图结果

R绘图结果

总的来说,Matlab和R的客户端下载各有优缺点,而基于MODIS Web Service的下载方式最大好处就是在于它的Subset功能,而不是需要先下载整景影像再处理。在做单点模型的时候是非常快捷的。当然客户端的其它函数还有很多,包括像质量控制。本文没有对数据进行质量控制。实际研究中这个是必须进行的步骤(也可以基于客户端的函数来进行,譬如R里面的QualityCheck函数,Matlab的modisClientGetQC等)。
此外地理所也开发了在线平台,研究人员只需填写所需参数即可下载。

http://159.226.110.142/carboncloud/datetool/toolmethod?url=onlinedo&pId=3

MODIS数据的简介和下载(三)——MODIS数据下载方式(基于MODIS Web Service)相关推荐

  1. 需要四维数据,但图片是三位数据?

    需要四维数据,但图片是三位数据? 解决方法:

  2. 【计算机网络】网络层 : IP 数据报分片 ( 数据分片机制 | 分片示例 | 三种数据长度单位 )

    文章目录 一.最大传送单元 MTU 二.分片机制 ( 标识.标志.片偏移 ) 三.分片机制 示例 四.IP 数据报首部中的相关数据长度单位 一.最大传送单元 MTU 最大传送单元 MTU : MTU ...

  3. 【数据治理相关概念】(三)数据溯源综述

    目录 1.1 概念和定义 1.2 数据溯源模型 1.3 几种主要的数据溯源模型 1.4 数据溯源方法 1.5 数据溯源的应用 1.1 概念和定义 数据溯源(data provenance)是一个新兴的 ...

  4. PIEGEE下载三款10米土地利用数据代码

    0.背景 GEE已经上线了Esri和ESA的10米土地利用数据,PIE也上线了FROM_GLC的10米土地利用数据.汇总了这三款数据的下载方法. 1.ESA的10米数据下载 第一步是设置参数,并加载E ...

  5. verilog实现多周期处理器之——(三)数据相关问题及其解决

    本文于自己动手写CPU之第五阶段--流水线数据相关问题 "相关"问题 流水线中常常有一些被称为"相关"的情况发生,它使得指令序列中下一条指令无法依照设计的时钟周 ...

  6. Matlab:可视化标量三维体数据的方法

    Matlab:可视化标量三维体数据的方法 什么是标量三维体数据? 显示 MRI 数据的方法 更改数据格式 显示 MRI 数据的图像 显示二维等高线切片 显示三维等高线切片 将等值面应用于 MRI 数据 ...

  7. 用python批量下载modis数据的速度怎么样_MODIS数据的简介和下载(五)——应用密钥的Python脚本下载...

    接上文,由于NASA官方弃用了FTP改用HTTPS服务,所以关于MODIS数据的下载方式有所改变.完整系列博客可以参照以下链接.本篇主要接着上一篇没有讲完的应用密钥的脚本下载介绍. 1 官方教程与说明 ...

  8. 卫星数据下载地址整理(包含Sentinel、Modis、Landsat等)

    地理空间数据云 http://www.gscloud.cn/ 说明:可下载landsat系列.MODIS系列.DEM数据高程数据.EO-1系列(目前退休了).Sentinel系列等卫星数据. 国家气象 ...

  9. 基于MODIS数据的NDVI与LST相关性分析(IDL代码实现)

    1 数据预处理 (1)数据提取 我们可以选取2018年5月初华东地区MODIS中的MOD11A2和MOD13A2的16天合成LST和NDVI产品数据,下载地址:MODIS数据下载 网站下载数据需要注册 ...

最新文章

  1. Java学习总结:9
  2. 有没有记录程序运行中所有的函数调用堆栈的工具?
  3. β射线与哪些物质可产生较高的韧致辐射_辐射防护试题库(无评分标准)
  4. boost::unorder_map如何插入元素_链表和有序二叉树插入元素时真的比数组快吗?
  5. 数据类型及其基本操作
  6. 中国中医科学院院长黄璐琦发表2022年新春贺词
  7. Oracle 21C 新特性:数据泵相关新特性汇总
  8. mac无法下载python_无法在Mac上安装Python包(gcc4.0错误)
  9. 机器这次击败人之后,争论一直没平息 | SQuAD风云
  10. java解析md文件_md格式详解
  11. python 自动化合并 ts 视频流
  12. 软硬一体的算法实践,阿里云如何以算法实现场景 “再创新”?
  13. 迅雷html什么意思,迅雷达到高速状态是什么意思?带图
  14. 网络服务器带宽Mbps、Mb/s、MB/s有什么区别?10M、100M到底是什么概念?
  15. Linux内核模块-初识LKM(一)
  16. 【MobaXterm教程】【公网】利用ipv6远程访问服务器
  17. Linux中如何优雅的批量合并、拆分、加密pdf文件
  18. 步进电机的使用教程以及步距角和细分讲解
  19. 网页下拉框智能诱导输入
  20. 史上最全手机简史,无线通讯佳话还在持续...

热门文章

  1. pycharm常用的快捷方式及设置
  2. linux学习134 unit6
  3. [Guava源码日报](8)ImmutableCollection
  4. Java try和catch的使用介绍
  5. ASP Webshell查***代码的小东东
  6. r k-means 分类结果_《机器学习》之 Kmeans聚类的原理及代码
  7. JAVA-SWING:生成透明JTable的改进2
  8. android 将.txt文件转化为.db并使用raw下的数据文件
  9. springboot冲突导致的发版失败
  10. 可以完成99%的静态页面的HTML标签