我正在尝试从列中创建栅格图层,列中包含物种名称,经度和纬度。
数据名称为“base”,当我尝试使用命令
创建范围为base
的rasterlayer时
r<-raster(base)
我收到错误:
Error en .local(x, ...) : list has no "x"
你能帮助我吗?感谢
答案 0 :(得分:2)
你没有给我们太多的了解,但你可能想尝试这个(下面的例子 ASSUMES 你的坐标数据是使用WGS84数据的纬编格式。如果它不是二维空间中你的点的表示是错误的,所以请尝试找到你的投影信息......
require( sp )
require( raster )
require( maptools )
#Some dummy data in the format you have described
base <- data.frame( longitude = sample( c(-20:20) , 10 ) , latitude = sample( c(-30:30) , 10 ) , species = sample( letters[1:3] , 10 , repl = TRUE ) )
head( base )
# longitude latitude species
# 1 -10 7 a
# 2 3 14 b
# 3 -9 29 b
# 4 -8 -25 a
# 5 0 -19 b
# 6 -19 19 c
#Make spatial points dataframe, which will have a spatial extent
spdf <- SpatialPointsDataFrame( base[ c("longitude" , "latitude") ] , data = data.frame( base$species ) , proj4string = CRS("+proj=longlat +datum=WGS84") )
#make raster based on the extent of your data
r <- raster( extent( spdf ) )
r
# class : RasterLayer
# dimensions : 10, 10, 100 (nrow, ncol, ncell)
# resolution : 3.3, 5.8 (x, y)
# extent : -20, 13, -29, 29 (xmin, xmax, ymin, ymax)
# coord. ref. : NA
# values : none