【问题标题】:Extracting WorldClim data in R but some months are missing在 R 中提取 WorldClim 数据,但缺少几个月
【发布时间】:2020-02-21 10:13:49
【问题描述】:

我有一个关于在 R 中提取 WorldClim 数据的问题并得到了很好的帮助 (Extract WORLDCLIM data using R for a single country)

该解决方案运行良好,但我现在面临一个单独的问题。

我执行以下代码以 .cvs 格式提取并保存 WorldClim 月度最低温度数据

library(sp)
library(rgeos)
library(rgdal)
r<- getData('CMIP5', var='tmin', res=10, rcp=45, model='HE', year=70)
r <- r[[c(1,12)]]
poly <- shapefile("C:/Users/pc5/Desktop/r1//2011_Dist.shp")
plot(poly)
pr <- extract(r, poly, fun='mean', na.rm=TRUE, df=TRUE, weights = TRUE) 
write.csv(cbind(poly$DISTRICT,ex),"Worldclim.csv", row.names = F)

但是,当我提取并保存数据时,我只得到三个变量:DISTRICT 名称、第 1 个月的 TMIN 和第 12 个月的 TMIN。 我在运行代码时看到了这一点

ex <- extract(r, poly, fun='mean', na.rm=TRUE, df=TRUE, weights = TRUE) 

它只提取 3 个变量而不是 13(12 个月 + I 区名称),尽管我可以看到所有 12 个月的数据都以 Geotiff 格式下载到默认文件夹中。我做错了什么?

【问题讨论】:

  • 您使用na.rm=TRUE,因此如果缺少数据,它们将被跳过,请尝试不使用此选项,看看您是否在几个月内获得no data,这意味着不幸的是您的数据几个月不存在(但至少解释一下为什么你什么都得不到)
  • 感谢您的回答。我试过了,但得到了同样的结果。我在上面的帖子中没有提到我第一次运行上面的代码时能够以 .cvs 格式保存整个数据。但是我第二次尝试时遇到了上述问题。
  • 如果省略这一行会发生什么:r &lt;- r[[c(1,12)]]?

标签: r extract


【解决方案1】:

在没有r &lt;- r[[c(1,12)]] 的情况下运行代码,你会得到想要的结果。 r &lt;- r[[c(1,12)]] 部分代码仅从 12 个月数据的栅格堆栈中取消 1 个月和 12 个月。您可以通过以下代码确定

r<- getData('CMIP5', var='tmin', res=10, rcp=45, model='HE', year=70)
r #will show you dimensions  : 900, 2160, 1944000, 12  (nrow, ncol, ncell, nlayers)
r1 <- r[[c(1,12)]]
r1 #will show you dimensions  : 900, 2160, 1944000, 2  (nrow, ncol, ncell, nlayers)
plot(r) #Plot of all the 12 months
plot(r1) #Plot of only 1 and 12 month

我也编辑了我以前的答案。

【讨论】:

  • 感谢您的回答。我删除了这条线,并且能够保存所有 12 个月的数据。有没有办法循环这个命令,以便我可以提取最低和最高温度的数据并保存它而不重复运行这个命令?例如r&lt;- getData('CMIP5', var='tmin', res=10, rcp=45, model='HE', year=70)r&lt;- getData('CMIP5', var='tman', res=10, rcp=45, model='HE', year=70)
  • 对于替代质心方法,我还有什么需要更改的。因为当我运行它时,我收到以下错误# using centroids nc &lt;- readOGR(dsn="C:\\Users\\pc5\\Desktop\\R\\2011_Dist.shp", layer="india70again") # view the attributes &amp; first 6 attribute values of the data head(nc@data) sp_cent &lt;- gCentroid(as(nc, "Spatial"), byid = TRUE) Error in TopologyFunc(spgeom, id, byid, "rgeos_getcentroid") : rgeos_convert_R2geos: invalid R class Spatial, unable to convert
  • 我已经更新了我之前的答案。请检查一下。 shapefile 应以nc &lt;- readOGR(dsn="C:\\Users\\pc5\\Desktop\\R", layer="2011_Dist") 形式读入。也请访问this
  • 对于质心选项,代码一直有效,直到我执行 ** sp_cent Error in TopologyFunc(spgeom, id, byid, "rgeos_getcentroid") : rgeos_convert_R2geos: 无效的 R 类空间,无法转换
  • 试试上一个问题的答案。我现在使用sf 库读取shapefile,没有出现错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-13
  • 1970-01-01
  • 1970-01-01
  • 2011-05-17
  • 2015-02-19
  • 2021-10-25
相关资源
最近更新 更多