Gimms NDVI3g 使用R进行数据下载与处理

Gimms NDVI3g v1 数据产品介绍

关于此数据集处理方式网上找了不少资料,一般都是用matlab或者是R来处理,matlab处理方法直接百度都能搜到很多,这里就不逐一介绍了,主要讲一讲如何用R进行处理,得到整月最大值合成,或者是半月影像。

老板事先安排了数据下载工作,于是就在ecocast用wget下载好了数据,本以为完事了,老板又安排对数据进行提取,得到半月影像数据,尝试了gdal,读取虽然没报错,但是值不对,再加上电脑重装系统没有matlab,但是之前有用过R,于是尝试使用R来处理数据。

在使用R之前也尝试过GDAL来读取,提取半月影像数据,使用gdalinfo看到数据一些信息,一共俩subdataset ndvi包含12个波段,percentile也是12个波段,percentile相当于一个包含精度信息的数据集,里面不同区间的像元值代表了ndvi数据是如何得到的。使用gdal_translate提取的ndvi数据有些问题,之前觉得可能ndvi数据与percentile有关联,不能分开读取,老板认为可能是与gdal或者netcdf版本有关系,这里也没深究。在使用R处理数据前,首先介绍一个R包,gimms,这个是类似于官方的一个R包,专门用来处理Gimms ndvi3g(此数据集分为v0和v1,分别对应envi格式和netcdf4格式)数据,可以对数据进行下载,提取,最大值合成。

在R中进行包管理还是很简单的,直接install.packages("gimms","rgdal") ,rgdal是gimms包的依赖包。

Gimms NDVI3g v1 数据产品处理

接下来直接上代码(本人一直用java,R只是接触过几次,所以代码结构比较混乱),由于提前下载好了数据,所以这里就直接对硬盘上数据进行处理。


# downloadGimms() 可以使用这个函数来下载

#

library("gimms","rgdal")

#这个包还有些函数,可以对数据进行精度控制,这里暂时用不到。

for (value in 1982:2015) {

    fn1 <- paste0("你的输入路径/ndvi3g_geo_v1_",value,"_","0106",".nc4")

    ndvi3g <- rasterizeGimms(x = fn1)

    sprintf("正在读取...%s_%s",value,"0106")

    for (variable in 1:12) {

      name <- paste0("你的输出路径/ndvi3g_geo_v1_" , value ,"_","0106","-", variable, ".tif")

      sprintf("正在处理...%s",name)

      writeRaster(x = ndvi3g[[variable]],filename = name)

    }

}

for (value in 1981:2015) {

  fn2 <- paste0("你的输入路径/ndvi3g_geo_v1_",value,"_","0712",".nc4")

  ndvi3g <- rasterizeGimms(x = fn2)

  sprintf("正在读取...%s_%s",value,"0712")

for (variable in 1:12) {

  name <- paste0("你的输出路径/ndvi3g_geo_v1_" ,value,"_","0712","-", variable, ".tif")

  sprintf("正在处理...%s",name)

  writeRaster(x = ndvi3g[[variable]],filename = name)

}

    }

最大值合成 月ndvi数据处理


gimms_files_date <- downloadGimms(x = as.Date("2000-01-01"),y = as.Date("2000-06-06"),dsn="E:/ndvi")

mvc <- monthlyComposite(ndvi3g_geo_v1_2000_0106,indices = monthlyIndices(gimms_files_date))

ndvi3g <- rasterizeGimms(x = gimms_files_date)

mvc <- monthlyComposite(ndvi3g,indices = monthlyIndices(gimms_files_date))

writeRaster(x = mvc,filename = "E:\ndvi\ndvi.tif")

image.png

你可能感兴趣的:(Gimms NDVI3g 使用R进行数据下载与处理)