Answers:
您可以使用raster
软件包下载WorldClim数据,?getdata
以了解有关分辨率,变量和坐标的信息。
例如:
library(raster)
library(sp)
r <- getData("worldclim",var="bio",res=10)
Bio 1和Bio12是平均年温度和年降水量:
r <- r[[c(1,12)]]
names(r) <- c("Temp","Prec")
我以随机点为例,在您的情况下,使用坐标创建SpatialPoint
对象。
points <- spsample(as(r@extent, 'SpatialPolygons'),n=100, type="random")
最后,使用extract
。使用cbind.data.frame
和,coordinates
您将获得所需的data.frame。
values <- extract(r,points)
df <- cbind.data.frame(coordinates(points),values)
我使用随机点,所以得到了很多NA
。可以预料的。
head(df)
x y Temp Prec
1 112.95985 52.092650 -37 388
2 163.54612 85.281643 NA NA
3 30.95257 5.932434 270 950
4 64.66979 40.912583 150 150
5 -169.40479 -58.889104 NA NA
6 51.46045 54.813600 36 549
plot(r[[1]])
plot(points,add=T)
不要忘记WorldClim数据的比例因子为10,Temp = -37
-3.7ºC也是如此。
带有坐标示例:
library(raster)
library(sp)
r <- getData("worldclim",var="bio",res=10)
r <- r[[c(1,12)]]
names(r) <- c("Temp","Prec")
lats <- c(9.093028 , 9.396111, 9.161417)
lons <- c(-11.7235, -11.72975, -11.709417)
coords <- data.frame(x=lons,y=lats)
points <- SpatialPoints(coords, proj4string = r@crs)
values <- extract(r,points)
df <- cbind.data.frame(coordinates(points),values)
df
x y Temp Prec
1 -11.72350 9.093028 257 2752
2 -11.72975 9.396111 257 2377
3 -11.70942 9.161417 257 2752
points
的数据集是经纬度和经度的数据框。然后,我完全按照您的方式运行。但是,当我运行时values
,出现错误:not compatible with requested type
。我还注意到,您points
仅标记了样本的范围,但没有产生具有经度-纬度坐标的矢量
spTransform
。如果在DDMMSS中有坐标,则将其转换为DD.MMM。其次,您撰写了有关不同坐标的文章,因此我将其解释为点,可以在同一模式下使用多边形。如果您的图层具有此信息,请使用shapefile
它进行加载。
spsample
需要一个空间对象来设置样本边界。输入是网格,多边形或线。我所做的是使用WorlClim边界框设置样本范围。我这样做是为了在我的回答中举一个可重复的例子。在您的情况下,您无需使用spsample
,就已经有要采样的坐标。