Al principio hay que crear un objeto espacial a partir de localities
datos de ocurrencia. Estos datos son una tabla con columnas decimalLongitude
y decimalLatitude
. Puede utilizar sp
o sf
paquete para esto.
# make spatial point object from lat,lon columns
library(sp)
sp_occs <- SpatialPoints(coords = locations[c("decimalLongitude","decimalLatitude")],
proj4string=CRS("+proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0 "))
Puede utilizar la base plot()
que es útil para la inspección rápida de los datos.
# download world polygon data
library(maptools)
data("wrld_simpl")
# plot both spatial objects
plot(wrld_simpl)
plot(sp_occs,add=T,col="red")
Para recortar los polígonos en la medida deseada se puede utilizar crop()
función de raster
paquete. Esto recortará su objeto poligonal por otro objeto espacial o límites definidos (extensión).
library(raster)
extent_eur <- extent(-30,50,-30,70)
eur <- crop(wrld_simpl,extent_eur)
# plot cropped polygons and species points
plot(eur)
plot(sp_occs,
pch=20,
col="red",
add=T)
Tenga en cuenta que sólo recortamos los polígonos del mundo, no los datos de ocurrencia. Si necesita un subconjunto de los datos de ocurrencia en esa región, sólo tiene que utilizar crop()
de la misma manera. Además, si necesita un mapa de países específicos, también puede subconjuntar los datos de los polígonos por atributos (es decir, el nombre/código del país o la región, si está disponible).
Ejemplo de código para Mantis religiosa :
library(rgbif)
library(raster)#loads also "sp" package
library(maptools)
Species.Name <- "mantis religiosa"
Species.key <- name_backbone(name=Species.Name)$speciesKey
locations <- occ_search(taxonKey=Species.key,hasCoordinate = TRUE, return='data', limit=500)
locations <- subset(locations, coordinateUncertaintyInMeters <= 5000)
sp_occs <- SpatialPoints(coords = locations[c("decimalLongitude","decimalLatitude")],
proj4string=CRS("+proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0 "))
data("wrld_simpl")
extent_eur <- extent(-30,50,-30,70)
eur <- crop(wrld_simpl,extent_eur)
plot(eur)
plot(sp_occs,
pch=20,
col="red",
add=T)