gpt4 book ai didi

r - 在 R 中构建多层栅格上的温度分布的任何解决方法

转载 作者:行者123 更新时间:2023-12-04 12:13:43 25 4
gpt4 key购买 nike

在这里我发现了一个很有趣的博客:critical threshold in temperature effects经验方法很有趣,所以我想在R中实现它的想法。但是,我有德国历史日气温(15年历史日平均气温)的多层栅格数据RasterBrick目的。根据 inspired post 中讨论的经验方法,我需要从我的多层栅格数据构建温度分布。

更新 2:可重现的 shapefile :

我知道从 3rd 方网站下载 shapefile 是不切实际的,所以在这里我想出可重现的 shapefile 来尝试一下:

library(sf)
library(maps)
library(rgeos)
library(mapdata)

germany <- st_as_sf(map("Germany", plot = FALSE, fill = TRUE))
write_sf(germany, "germany.shp")

为了轻松跟进我的帖子,我创建了可重现的栅格数据以在 R 中使用。我还提供了从欧洲统计局网站获取的德国 shapefile;这是动态的 shapefile(我可以保证链接非常安全,而且文件非常小): eurostat' shapefile这是方便的可复制栅格数据:

可重复数据
library(raster)
library(lubridate)
library(tidyverse)

r <- raster(xmn=5.75, xmx= 15, ymn = 47.25, ymx =55,res=c(0.25,0.25))
Deu_crop <- do.call(stack,lapply(1:5479,function(i) setValues(r,round(runif(n = ncell(r),min = -10,max = 25)))))
names(Deu_crop) <- paste0('X',gsub('-','.',ymd('1980.01.01') + days(1:5479)))
shp <- shapefile('eurostat_NUTS3/deu_adm_2006.shp')
e <- raster::extract(Deu_crop,shp)
names(e) <- shp$NUTS_ID

所以要测试 inspired post 中介绍的工作流程,我需要设计几个全局变量,这些变量将用于 here 中提供的辅助函数。 .但我不明白如何设计一些用于完成其工作流程的关键全局变量;建议定义全局变量,如: w - 天气数据; tempDat :特定的聚合天气数据; Trows :跨越聚合网格数据;和 T :整数温度向量(详细信息可以在这里找到: details)。

我想从网格化的每日天气数据中估计温度随时间的分布。但是我很难测试此 inspired post 中介绍的经验步骤。因为它没有提到处理多层栅格数据的情况下的解决方案,所以我不知道如何在R中自己采用它的绝妙想法。

这是我在 eurostat' shapefile 中使用辅助函数之前从 shapefile ( inspired post ) 为每个多边形聚合多层栅格数据的方法:

操作多层栅格的初步尝试 :
rasterHelper <- function(ix,e){
gather(data.frame(e[[ix]],stringsAsFactors = F),'colname','temp') %>%
group_by(colname) %>% summarise(temp = mean(temp)) %>% ungroup() %>% # spatial mean
mutate(year = sub('X(\\d{4}).+','\\1',colname)) %>%
group_by(year) %>% summarise_all(funs(sum)) %>% mutate(NUTS_ID = names(e)[ix])
}
do.call(rbind,lapply(1:length(e),function(ix) rasterHelper(ix)))

但我的上述尝试不起作用;在我的尝试中,我打算聚合每个多边形的温度栅格数据。 inspired post的实现非常有用,但处理多层栅格数据仍然很难跟进。我假设我应该在每个栅格层上工作并随着时间的推移构建温度分布,但真的不知道如何在 R 中做。有什么想法吗?

更新 :

这是我从中得到灵感的论文: nonlinear temperature effect ... ,但即使我遵循相应博客中提供的工作流程,实现所提出的方法对我来说仍然具有挑战性: searching critical threshold in temperature effect

有没有人指出我如何在 R 中的多层栅格数据上采用其经验方法?如何估计温度随时间的分布?我怎样才能在 R 中做到这一点?还有什么想法吗?谢谢

最佳答案

我不太确定你想做什么。

要设置一个较小的示例:

library(raster)
lux <- shapefile(system.file("external/lux.shp", package="raster"))
r <- raster(lux)
s <- stack(lapply(1:12, function(i) setValues(r, 1:ncell(r))))

e <- extract(s, lux)

现在你说你要聚合---这有点含糊,但也许你想要的是
x <- lapply(e, function(i) apply(i,2,mean))

相当于
y <- extract(s, lux, fun='mean')

关于r - 在 R 中构建多层栅格上的温度分布的任何解决方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50940349/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com