2016-06-15 11 views
0

Как создать растровый слой с заполненными кругами с центром в "c (df $ lat, cd $ lon)" и радиус "df $ radius" из кадра данных?Создание растра с кругами из dataframe в R

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 

ответ

0
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)) 

Обратите внимание на использование долготу/лат, не широта/долгота

p <- df[,2:1] 

радиус в метрах, так что ваши номера очень маленькие. Я изменю их

rad <- df[,3]*2500 

Compute круги

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) 

(если вы не хотите, чтобы перекрытия были подсчитаны, используйте dissolve=TRUE в функции circles)

+0

Это точно, что мне нужно. Большое спасибо! – ADM