我想用R下载和处理GIMMS NDVI 3g.v1
集合。使用gimms
包,我设法下载了完整的集合,但是我不知道如何在文件上分配日期。我的最终结果是,我要成为一个具有高质量(零标志值)NDVI的栅格堆栈。因此,每年每月2次观察。我真的很感谢您的帮助。
my_dir <- "my_directory_here"
my_gimms_files <- downloadGimms(dsn = my_dir)
my_ndvi <- stack(my_gimms_files , varname = "ndvi")
my_flags<-stack(my_gimms_files , varname = "percentile")#and from this point, I do not know how to deal with the files.
有什么建议吗?
答案 0 :(得分:1)
我建议您查看Florian Detsch' s(软件包维护者)有关使用软件包的博客文章。为什么? Florian出色地强调了如何使用 Gimms 导入文件,以及包如何使用 update_inventory()临时解决文件组织问题(即按时间顺序) > 和 rearrangeFiles() -我的感觉是您遇到的问题。
我希望这可以为您指明正确的方向。
弗洛里安(Florian)还为该包装写了一个书指南:
上面介绍了软件包的使用和应用。
这是怎么回事
随着AVHRR GIMMS数据收集的最新更新到NDVI3g(Pinzon和Tucker,2014年),我们决定使用迄今为止编写的所有功能创建一个程序包,以便从NASA ECOCAST服务器下载和处理GIMMS二进制文件。 。该软件包称为gimms,具有将数据导入R所需的基本工作步骤的集合:
gimms 软件包(0.1.1版)现已正式在CRAN上,可以直接通过
安装## install 'gimms' package
install.packages("gimms")
## load 'gimms' package
library(gimms)
要使用开发版本(不承担任何责任),请参阅位于GitHub的'develop'分支。在这里,您还将找到有关该软件包的最新新闻和更新。
library(devtools)
install_github("environmentalinformatics-marburg/gimms", ref = "develop")
updateInventory将online file inventory的最新版本作为“字符”向量导入R。通过设置sort = TRUE,它同时是对rerangeFiles的包装,因为输出向量将按日期而不是按日期排序按字母顺序。当考虑使用GIMMS文件命名约定时,后一种功能特别有用,例如“ geo13jul15a.n19-VI3g”表示2013年7月上半年。如果没有可用的互联网连接,则updateInventory会自动导入文件清单的最新离线版本。
gimms_files <- updateInventory()
## Trying to update GIMMS inventory from server...
## Online update of the GIMMS file inventory successful!
gimms_files[1:5]
## [1] "<span class="skimlinks-unlinked">http://ecocast.arc.nasa.gov/data/pub/gimms/3g.v0/1980s_new/geo81jul15a.n07-VI3g</span>"
## [2] "<span class="skimlinks-unlinked">http://ecocast.arc.nasa.gov/data/pub/gimms/3g.v0/1980s_new/geo81jul15b.n07-VI3g</span>"
## [3] "<span class="skimlinks-unlinked">http://ecocast.arc.nasa.gov/data/pub/gimms/3g.v0/1980s_new/geo81aug15a.n07-VI3g</span>"
## [4] "<span class="skimlinks-unlinked">http://ecocast.arc.nasa.gov/data/pub/gimms/3g.v0/1980s_new/geo81aug15b.n07-VI3g</span>"
## [5] "<span class="skimlinks-unlinked">http://ecocast.arc.nasa.gov/data/pub/gimms/3g.v0/1980s_new/geo81sep15a.n07-VI3g</span>"
gimms 处理链的下一个逻辑步骤是下载选定的(如果不是全部)每两个月的数据集。这可以通过运行接受各种输入参数的downloadGimms来实现。
-“缺少”输入→下载整个集合:不指定任何特定输入可能是最简单的数据采集方法。该功能将自动开始下载整个文件集(当前为1981年7月至2013年12月),并将数据写入dsn。
## download entire gimms collection
downloadGimms(dsn = paste0(getwd(), "/data"))
-'数字'输入→下载时间范围 还可能指定开始年(x)和/或结束年(y),以限制要下载的数据集的时间范围。如果缺少x(或y),则数据下载将自动从可用的第一年(或最后一年)开始。
## download gimms data from 1998-2000
downloadGimms(x = 1998, y = 2000,
dsn = paste0(getwd(), "/data"))
-“字符”输入→下载特定文件 作为运行downloadGimms的第三种也是最后一种可能性,还可以提供由有效在线文件路径组成的“字符”向量。后者可以很容易地从updateInventory中检索(如上所述),并直接传递给输入参数x。
## download manually selected files
downloadGimms(x = gimms_files[769:780],
dsn = paste0(getwd(), "/data"))
rasterizeGimms将从本地二进制文件中检索到的GIMMS数据转换为通用的“ GeoTiff”格式,并使单层在R中可用作普通的“ Raster *”对象。因此,由用户决定是否丢弃“ mask-water”值(-10,000)和“ mask-nodata”值(-5,000)(另请参见official NDVI3g README)并应用缩放比例系数(1 / 10,000)。由于栅格化通常需要一些时间,因此我们强烈建议您使用自动调用raster :: writeRaster的filename参数。
## list available files
gimms_files <- rearrangeFiles(dsn = paste0(getwd(), "/data"),
pattern = "^geo13", <span class="skimlinks-unlinked">full.names</span> = TRUE)
## rasterize files
gimms_raster <- rasterizeGimms(gimms_files,
filename = paste0(gimms_files, ".tif"))
通过一点点的努力和RColorBrewer和sp的帮助,这就是我们到目前为止创建的内容。
有时,用户需要从每两个月的GIMMS数据集中计算月度综合值。以确保与其他某些遥感产品的时间重叠。为此, gimms 还具有一个称为monthlyComposite的函数,该函数可同时处理文件名的矢量和整个“ RasterStack”对象(理想情况下由rasterizeGimms返回),并根据用户定义的函数(例如, fun = max以创建每月的MVC层)。该功能主要基于光栅包中的stackApply,所需的编码工作非常简单。
## 'GeoTiff' files created during the previous step
gimms_files_tif <- sapply(gimms_raster@layers, function(i) attr(i@file, "name"))
## create monthly maximum value composites
gimms_raster_mvc <- monthlyComposite(gimms_files_tif)
可以在https://github.com/environmentalinformatics-marburg/gimms在线找到有关gimms软件包的简短介绍的更全面版本,其中包括一些用例(尤其是结合R的并行功能)。高度赞赏有关如何改进软件包,可能的错误报告等的任何评论!