从 R 中的数据框创建带有圆圈的栅格
Creating raster with circles from dataframe in R
如何根据数据框创建一个带有以 "c(df$lat,cd$lon)" 为中心、半径为 "df$radius" 的实心圆的栅格图层?
df <- data.frame(lat=c(40.4,42.4,42.4,42.4,42.3),
lon=c(-0.3,1,1.5,2.7,2.1),
radius=c(4.4,8.4,11.4,5.4,10.3))
df
# lat lon radius
# 40.4 -0.3 4.4
# 42.4 1.0 8.4
# 42.4 1.5 11.4
# 42.4 2.7 5.4
# 42.3 2.1 10.3
library(dismo)
df <- data.frame(lat=c(40.4,42.4,42.4,42.4,42.3),
lon=c(-0.3,1,1.5,2.7,2.1),
radius=c(4.4,8.4,11.4,5.4,10.3))
注意使用lon/lat,而不是lat/lon
p <- df[,2:1]
半径以米为单位,因此您的数字非常小。我会改变它们
rad <- df[,3]*2500
计算圈子
cc <- circles(p, rad, lonlat=TRUE, dissolve=FALSE)
plot(cc)
points(p)
获取多边形
pls <- polygons(cc)
要获得 RasterLayer,您可以使用 predict(cc, )
或 rasterize(pls, )
r <- raster(extent(pls), res=.01)
pr <- predict(cc, r)
(如果不想计算重叠,在circles
函数中使用dissolve=TRUE
)
如何根据数据框创建一个带有以 "c(df$lat,cd$lon)" 为中心、半径为 "df$radius" 的实心圆的栅格图层?
df <- data.frame(lat=c(40.4,42.4,42.4,42.4,42.3),
lon=c(-0.3,1,1.5,2.7,2.1),
radius=c(4.4,8.4,11.4,5.4,10.3))
df
# lat lon radius
# 40.4 -0.3 4.4
# 42.4 1.0 8.4
# 42.4 1.5 11.4
# 42.4 2.7 5.4
# 42.3 2.1 10.3
library(dismo)
df <- data.frame(lat=c(40.4,42.4,42.4,42.4,42.3),
lon=c(-0.3,1,1.5,2.7,2.1),
radius=c(4.4,8.4,11.4,5.4,10.3))
注意使用lon/lat,而不是lat/lon
p <- df[,2:1]
半径以米为单位,因此您的数字非常小。我会改变它们
rad <- df[,3]*2500
计算圈子
cc <- circles(p, rad, lonlat=TRUE, dissolve=FALSE)
plot(cc)
points(p)
获取多边形
pls <- polygons(cc)
要获得 RasterLayer,您可以使用 predict(cc, )
或 rasterize(pls, )
r <- raster(extent(pls), res=.01)
pr <- predict(cc, r)
(如果不想计算重叠,在circles
函数中使用dissolve=TRUE
)