Puede usar el raster
paquete para descargar datos de WorldClim, consulte ?getdata
para saber sobre resolución, variables y coordenadas.
Como ejemplo:
library(raster)
library(sp)
r <- getData("worldclim",var="bio",res=10)
Bio 1 y Bio12 son la temperatura media anual y la precipitación anual:
r <- r[[c(1,12)]]
names(r) <- c("Temp","Prec")
Creo puntos aleatorios como ejemplo, en su caso use coordenadas para crear un SpatialPoint
objeto.
points <- spsample(as(r@extent, 'SpatialPolygons'),n=100, type="random")
Finalmente, use extract
. Con cbind.data.frame
y coordinates
obtendrá el deseo data.frame.
values <- extract(r,points)
df <- cbind.data.frame(coordinates(points),values)
Usé puntos aleatorios, así que obtuve muchos NA
. Es de esperarse.
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)
No olvide que los datos de WorldClim tienen un factor de escala de 10, por lo que Temp = -37
es -3.7 ºC.
Con coordenadas ejemplo:
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
cuál es un marco de datos de lats y longs de mi conjunto de datos. Entonces corro exactamente como lo hiciste. Sin embargo, cuando corrovalues
me da un error:not compatible with requested type
. También he notado que suspoints
sólo marcas de la medida de la muestra, pero no produce un vector con las coordenadas de latitud desde hace mucho tiempospTransform
. Si tiene coordenadas en DDMMSS, transfórmelas en DD.MMM. En segundo lugar, escribiste sobre diferentes coordenadas, así que lo interpreto como puntos, puedes usar polígonos en su lugar con el mismo esquema. Si tiene una capa con esta información, úselashapefile
para cargarla.spsample
requiere un objeto espacial para establecer límites de muestra. Las entradas son cuadrículas, polígonos o líneas. Lo que hice fue usar el cuadro de límite WorlClim para establecer la extensión de la muestra. Lo hice para hacer un ejemplo reproducible en mi respuesta. En su caso, no necesita usarspsample
, ya tiene coordenadas para muestrear.