栅格堆栈或砖块无法处理来自 greenbrown 包的趋势图功能
Raster stack or brick unable to process trendmap function from greenbrown package
greenbrown 包不适用于栅格时间序列 (RTS),因此我想使用栅格堆栈或砖块。由于长度问题,趋势图函数在这种情况下仍然不起作用,但堆栈和时间函数都具有相同数量的变量。数据为MODIS EVI.
显示在这里http://greenbrown.r-forge.r-project.org/trends.php
trendmap <- TrendRaster(ndvimap, start=c(1982, 1), freq=12, method="AAT", breaks=1, funAnnual=max)
library(bfastSpatial)
library(raster)
library(rgdal)
library(greenbrown)
library(rts)
library(lubridate)
#All file names
all_NDVI_files = c('MOD13Q1_EVI_2000_049.tif',
'MOD13Q1_EVI_2000_065.tif',
'MOD13Q1_EVI_2000_081.tif',
'MOD13Q1_EVI_2000_097.tif',
'MOD13Q1_EVI_2000_113.tif',
'MOD13Q1_EVI_2000_129.tif',
'MOD13Q1_EVI_2000_145.tif',
'MOD13Q1_EVI_2000_161.tif',
'MOD13Q1_EVI_2000_177.tif',
'MOD13Q1_EVI_2000_193.tif',
'MOD13Q1_EVI_2000_209.tif',
'MOD13Q1_EVI_2000_225.tif',
'MOD13Q1_EVI_2000_241.tif',
'MOD13Q1_EVI_2000_257.tif',
'MOD13Q1_EVI_2000_273.tif',
'MOD13Q1_EVI_2000_289.tif',
'MOD13Q1_EVI_2000_305.tif',
'MOD13Q1_EVI_2000_321.tif',
'MOD13Q1_EVI_2000_337.tif',
'MOD13Q1_EVI_2000_353.tif',
'MOD13Q1_EVI_2001_001.tif',
'MOD13Q1_EVI_2001_017.tif',
'MOD13Q1_EVI_2001_033.tif',
'MOD13Q1_EVI_2001_049.tif',
'MOD13Q1_EVI_2001_065.tif',
'MOD13Q1_EVI_2001_081.tif',
'MOD13Q1_EVI_2001_097.tif',
'MOD13Q1_EVI_2001_113.tif',
'MOD13Q1_EVI_2001_129.tif',
'MOD13Q1_EVI_2001_145.tif',
'MOD13Q1_EVI_2001_161.tif',
'MOD13Q1_EVI_2001_177.tif',
'MOD13Q1_EVI_2001_193.tif',
'MOD13Q1_EVI_2001_209.tif',
'MOD13Q1_EVI_2001_225.tif',
'MOD13Q1_EVI_2001_241.tif',
'MOD13Q1_EVI_2001_257.tif',
'MOD13Q1_EVI_2001_273.tif',
'MOD13Q1_EVI_2001_289.tif',
'MOD13Q1_EVI_2001_305.tif',
'MOD13Q1_EVI_2001_321.tif',
'MOD13Q1_EVI_2001_337.tif',
'MOD13Q1_EVI_2001_353.tif',
'MOD13Q1_EVI_2002_001.tif',
'MOD13Q1_EVI_2002_017.tif',
'MOD13Q1_EVI_2002_033.tif')
EVI_path <- //path
all_EVI <- list.files(EVI_path,
full.names = TRUE,
pattern = ".tif$")
EVI_stack <- stack(all_EVI)
EVI_Brick <- brick(EVI_stack)
ndvi.time = data.frame(year=substr(basename(all_NDVI_files),13,16),
julD=substr(basename(all_NDVI_files),18,20))
ndvi.time$dateJ = paste(ndvi.time$year,ndvi.time$julD,sep='-')
ndvi.time$julD = parse_date_time(ndvi.time$dateJ,'y-j')
trendmap <- TrendRaster(
EVI_stack, start=min(ndvi.time$julD), freq=23, method='AAT', breaks=4)
错误是
trendmap <- TrendRaster(EVI_Brick, start=min(ndvi.time$julD), freq=23, method='AAT', breaks=4)
Error in Kendall(1:length(x), x) : length(x)<3
In addition: Warning message:
In process[-(1:nh)] - process[1:(n - nh + 1)] :
longer object length is not a multiple of shorter object length
trendmap <- TrendRaster(EVI_stack, start=min(ndvi.time$julD), freq=23, method='AAT', breaks=4)
Error in Kendall(1:length(x), x) : length(x)<3
In addition: Warning messages:
1: In .Internal(gc(verbose, reset, full)) :
closing unused connection 4 (C:/Users/Test/AppData/Local/Temp/Rtmpkbf9IT/raster/r_tmp_2019-11-07_040206_15796_57306.gri)
2: In .Internal(gc(verbose, reset, full)) :
closing unused connection 3 (C:\Users\Test\AppData\Local\Temp\Rtmpkbf9IT\raster\r_tmp_2019-11-07_035713_15796_14107.gri)
3: In process[-(1:nh)] - process[1:(n - nh + 1)] :
longer object length is not a multiple of shorter object length
我该如何解决这个问题?谢谢。
问题是数据的大小。在普通机器上 运行 整个研究区域的脚本导致了问题,但这些问题通过获取一小部分数据得到了解决。
greenbrown 包不适用于栅格时间序列 (RTS),因此我想使用栅格堆栈或砖块。由于长度问题,趋势图函数在这种情况下仍然不起作用,但堆栈和时间函数都具有相同数量的变量。数据为MODIS EVI.
显示在这里http://greenbrown.r-forge.r-project.org/trends.php
trendmap <- TrendRaster(ndvimap, start=c(1982, 1), freq=12, method="AAT", breaks=1, funAnnual=max)
library(bfastSpatial)
library(raster)
library(rgdal)
library(greenbrown)
library(rts)
library(lubridate)
#All file names
all_NDVI_files = c('MOD13Q1_EVI_2000_049.tif',
'MOD13Q1_EVI_2000_065.tif',
'MOD13Q1_EVI_2000_081.tif',
'MOD13Q1_EVI_2000_097.tif',
'MOD13Q1_EVI_2000_113.tif',
'MOD13Q1_EVI_2000_129.tif',
'MOD13Q1_EVI_2000_145.tif',
'MOD13Q1_EVI_2000_161.tif',
'MOD13Q1_EVI_2000_177.tif',
'MOD13Q1_EVI_2000_193.tif',
'MOD13Q1_EVI_2000_209.tif',
'MOD13Q1_EVI_2000_225.tif',
'MOD13Q1_EVI_2000_241.tif',
'MOD13Q1_EVI_2000_257.tif',
'MOD13Q1_EVI_2000_273.tif',
'MOD13Q1_EVI_2000_289.tif',
'MOD13Q1_EVI_2000_305.tif',
'MOD13Q1_EVI_2000_321.tif',
'MOD13Q1_EVI_2000_337.tif',
'MOD13Q1_EVI_2000_353.tif',
'MOD13Q1_EVI_2001_001.tif',
'MOD13Q1_EVI_2001_017.tif',
'MOD13Q1_EVI_2001_033.tif',
'MOD13Q1_EVI_2001_049.tif',
'MOD13Q1_EVI_2001_065.tif',
'MOD13Q1_EVI_2001_081.tif',
'MOD13Q1_EVI_2001_097.tif',
'MOD13Q1_EVI_2001_113.tif',
'MOD13Q1_EVI_2001_129.tif',
'MOD13Q1_EVI_2001_145.tif',
'MOD13Q1_EVI_2001_161.tif',
'MOD13Q1_EVI_2001_177.tif',
'MOD13Q1_EVI_2001_193.tif',
'MOD13Q1_EVI_2001_209.tif',
'MOD13Q1_EVI_2001_225.tif',
'MOD13Q1_EVI_2001_241.tif',
'MOD13Q1_EVI_2001_257.tif',
'MOD13Q1_EVI_2001_273.tif',
'MOD13Q1_EVI_2001_289.tif',
'MOD13Q1_EVI_2001_305.tif',
'MOD13Q1_EVI_2001_321.tif',
'MOD13Q1_EVI_2001_337.tif',
'MOD13Q1_EVI_2001_353.tif',
'MOD13Q1_EVI_2002_001.tif',
'MOD13Q1_EVI_2002_017.tif',
'MOD13Q1_EVI_2002_033.tif')
EVI_path <- //path
all_EVI <- list.files(EVI_path,
full.names = TRUE,
pattern = ".tif$")
EVI_stack <- stack(all_EVI)
EVI_Brick <- brick(EVI_stack)
ndvi.time = data.frame(year=substr(basename(all_NDVI_files),13,16),
julD=substr(basename(all_NDVI_files),18,20))
ndvi.time$dateJ = paste(ndvi.time$year,ndvi.time$julD,sep='-')
ndvi.time$julD = parse_date_time(ndvi.time$dateJ,'y-j')
trendmap <- TrendRaster(
EVI_stack, start=min(ndvi.time$julD), freq=23, method='AAT', breaks=4)
错误是
trendmap <- TrendRaster(EVI_Brick, start=min(ndvi.time$julD), freq=23, method='AAT', breaks=4) Error in Kendall(1:length(x), x) : length(x)<3 In addition: Warning message: In process[-(1:nh)] - process[1:(n - nh + 1)] : longer object length is not a multiple of shorter object length trendmap <- TrendRaster(EVI_stack, start=min(ndvi.time$julD), freq=23, method='AAT', breaks=4) Error in Kendall(1:length(x), x) : length(x)<3 In addition: Warning messages: 1: In .Internal(gc(verbose, reset, full)) : closing unused connection 4 (C:/Users/Test/AppData/Local/Temp/Rtmpkbf9IT/raster/r_tmp_2019-11-07_040206_15796_57306.gri) 2: In .Internal(gc(verbose, reset, full)) : closing unused connection 3 (C:\Users\Test\AppData\Local\Temp\Rtmpkbf9IT\raster\r_tmp_2019-11-07_035713_15796_14107.gri) 3: In process[-(1:nh)] - process[1:(n - nh + 1)] : longer object length is not a multiple of shorter object length
我该如何解决这个问题?谢谢。
问题是数据的大小。在普通机器上 运行 整个研究区域的脚本导致了问题,但这些问题通过获取一小部分数据得到了解决。