R 中的 GIMMS NDVI 3g.v1 处理

GIMMS NDVI 3g.v1 processing in R

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

有什么建议吗?

我建议您查看 Florian Detsch's(软件包维护者)博客 post,了解如何使用该软件包。为什么? Florian 很好地强调了如何使用 Gimms 导入文件,以及包如何使用 临时组织文件(即按时间顺序) ]update_inventory()rearrangeFiles() - 我的感觉是你的问题正在相遇

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

Florian 还写了一个包的书籍指南:

以上是包的使用和应用。


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

这是 Florian Detsch

的访客 post

这是关于什么的

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

  • updateInventory 以列出所有在线可用的 GIMMS 文件并且
  • 重新排列文件以按日期对(在线或本地)文件进行排序,
  • downloadGimms 下载所选文件,
  • rasterizeGimms 将二进制数据作为 'Raster*' 对象导入 R 和
  • monthlyComposite 将 bi-monthly 数据集汇总为月值组合。

如何安装

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 的最新版本作为 'character' 向量导入 R。通过设置 sort = TRUE,它同时是 rearrangeFiles 的包装器,因为输出向量将被排序按日期而不是按字母顺序。在考虑 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 处理链的下一个逻辑步骤是下载选定的(如果不是全部)bi-monthly 数据集。这可以通过 运行ning downloadGimms 来实现,它接受各种类型的输入参数。

-- 'missing' 输入 → 下载整个集合 不指定特定输入可能是最直接的数据获取方式。该功能会自动开始下载整个文件集合(目前为1981年7月至2013年12月)并将数据写入dsn。

## download entire gimms collection
downloadGimms(dsn = paste0(getwd(), "/data"))

-- 'numeric' 输入 → 下载时间范围 也可以指定开始年份 (x) and/or 结束年份 (y) 以限制要下载的数据集的时间范围。如果缺少 x(或 y),数据下载将自动从可用的第一年(或最后一年结束)开始。

## download gimms data from 1998-2000
downloadGimms(x = 1998, y = 2000, 
              dsn = paste0(getwd(), "/data"))

-- 'character' 输入 → 下载特定文件 作为 运行 downloadGimms 的第三种也是最后一种可能性,也可以提供由有效在线文件路径组成的 'character' 矢量。后者可以很容易地从 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.

的文件名参数
## 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 的帮助下,我们付出了一些努力,这就是我们目前所创造的。

生成月度复合材料

有时,用户需要根据 bi-monthly GIMMS 数据集计算月度复合值,例如以确保与其他一些遥感产品在时间上重叠。为此,gimms 还具有一个名为 monthlyComposite 的函数,该函数同时处理文件名向量和整个 'RasterStack' 对象(理想情况下由 rasterizeGimms 返回)并根据 user-defined 函数(例如 fun = max 来创建月度 MVC层)。该函数主要基于 raster 包中的 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 的并行功能相结合)。非常感谢任何关于如何改进包的评论,可能 bug-reports 等!