【问题标题】:Extract WORLDCLIM data using R for a single country使用 R 提取单个国家/地区的 WORLDCLIM 数据
【发布时间】:2020-02-20 09:12:25
【问题描述】:

我想使用 R 提取仅印度一个国家的最低和最高温度的世界气候数据,并将其保存为数据集(与我自己的包含地区级作物产量的数据集一起使用)。 我浏览了几篇文章,可以看到这可以在 R 中轻松完成,但是我尝试关注的文章在命令或序列方面有点不同,我感到困惑。 (https://gis.stackexchange.com/questions/259478/worldclim-data-na-for-my-coordinates, https://gis.stackexchange.com/questions/227585/using-r-to-extract-data-from-worldclim

我尝试使用的如下。

library(raster)
library(sp)
r<- getData('CMIP5', var='tmin', res=10, rcp=45, model='HE', year=70)
r <- r[[c(1,12)]]
values <- extract(r,points)
df <- cbind.data.frame(coordinates(points),values)
head(df)

但是,我只能运行前两行和行值

<- extract(r,points) gives the error Error in (function (classes, fdef, mtable)  : 
  unable to find an inherited method for function ‘extract’ for signature ‘"RasterStack", "function"’

有什么建议吗?

【问题讨论】:

  • 您的points 对象在哪里?请在问题中提供。
  • 感谢您的回答。我不确定我应该在 points 对象中放置什么。以上几行是我执行的唯一代码行。我做错了什么?
  • 您应该有一个包含纬度和经度的两列文件,您要从中提取生物气候变量。
  • 再次感谢您的回答。我有一个包含印度所有地区的 GIS 数据的文件。纬度应该是所有印度地区的边界还是这些地区的质心?
  • GIS 数据是指 shapefile 吗?如果您有 shapefile,那么您可以通过两种方式提取数据:1. 使用区域的质心和 2. 使用区域统计数据,即区域下整个区域的平均值。

标签: r extraction


【解决方案1】:

这里有解决办法

library(raster)
library(sp)
library(rgeos)
library(rgdal)
library(sf)

r<- getData('CMIP5', var='tmin', res=10, rcp=45, model='HE', year=70)

#Using Zonal statistics
poly <- shapefile("Provide_your_drive_name" e.g. "F:\\Kriging in R\\India Shape files\\2011_Dist.shp")
plot(poly)

#This will take considerable time
ex <- extract(r, poly, fun='mean', na.rm=TRUE, df=TRUE, weights = TRUE) 

write.csv(cbind(poly$DISTRICT,ex),"Worldclim.csv", row.names = F)

# using centroids
nc <- st_read(dsn="Provide_your_drive_name" e.g. "F:\\Kriging in R\\India Shape files", layer="2011_Dist")
# just view the attributes & first 6 attribute values of the data
head(nc)
sp_cent <- gCentroid(as(nc, "Spatial"), byid = TRUE)
values <- extract(r,sp_cent)

write.csv(cbind(as.data.frame(nc$DISTRICT),as.data.frame(values)),"Worldclim_centroids.csv", row.names = F)

【讨论】:

  • 谢谢。我现在要试试这个。
  • 我运行代码,但在第五和第六行它给出了错误 ex
  • 你不必担心警告信息,它表示它只能实现mean功能。关于第二个错误,你能告诉我head(nc@data) 的输出吗?您的操作已经完成。您可以拨打ex 查看。
  • 是的,先生,当我调用 eg 命令时,我看到操作是圆顶当我执行 head(nc@data) 我得到以下 > head(nc @data)头部错误(nc@data):找不到对象'nc'
  • 你是从plot(poly)那里得到剧情的吗?如果不是,那么您将无法正确读取形状文件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-05
相关资源
最近更新 更多