Вы можете использовать raster
пакет для загрузки данных WorldClim, ?getdata
узнать о разрешении, переменных и координатах.
Как пример:
library(raster)
library(sp)
r <- getData("worldclim",var="bio",res=10)
Био 1 и Био12 - это среднегодовая температура и годовой уровень осадков:
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
, у вас уже есть координаты для выборки.