Создание растра с кругами из фрейма данных в R

Как я могу создать растровый слой с закрашенными кругами с центром в «c (df $ lat, cd $ lon)» и радиусом «df $ радиус» из фрейма данных?

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

person ADM    schedule 15.06.2016    source источник


Ответы (1)


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

Вычислить круги

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)

person Robert Hijmans    schedule 15.06.2016
comment
Это именно то, что мне нужно. Большое тебе спасибо! - person ADM; 17.06.2016