R中的GIMMS NDVI 3g.v1处理

时间:2019-07-01 09:33:23

标签: r date process stack r-raster

我想用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. 

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

我建议您查看Florian Detsch' s(软件包维护者)有关使用软件包的博客文章。为什么? Florian出色地强调了如何使用 Gimms 导入文件,以及包如何使用 update_inventory()临时解决文件组织问题(即按时间顺序) > rearrangeFiles() -我的感觉是您遇到的问题。

我希望这可以为您指明正确的方向。

弗洛里安(Florian)还为该包装写了一个书指南:

上面介绍了软件包的使用和应用。


引用的文章(为简单起见导入)

这是Florian Detsch

的来宾帖子

这是怎么回事

随着AVHRR GIMMS数据收集的最新更新到NDVI3g(Pinzon和Tucker,2014年),我们决定使用迄今为止编写的所有功能创建一个程序包,以便从NASA ECOCAST服务器下载和处理GIMMS二进制文件。 。该软件包称为gimms,具有将数据导入R所需的基本工作步骤的集合:

  • updateInventory以列出所有在线可用的GIMMS文件,并且
  • rearrangeFiles按日期对文件(在线或本地)进行排序
  • downloadGimms下载所选文件,
  • rasterizeGimms将二进制数据作为“ Raster *”对象导入R和
  • monthlyComposite,将两个月的数据集聚合为月度值组合。

如何安装

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的帮助,这就是我们到目前为止创建的内容。

Global bi-monthly GIMMS NDVI3g images from July to December 2013

每月生成合成

有时,用户需要从每两个月的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)

Global monthly composite GIMMS NDVI3g images from July to December 2013.

最后的话

可以在https://github.com/environmentalinformatics-marburg/gimms在线找到有关gimms软件包的简短介绍的更全面版本,其中包括一些用例(尤其是结合R的并行功能)。高度赞赏有关如何改进软件包,可能的错误报告等的任何评论!