R - Лучший способ выполнить геопространственные расчеты

Я работаю над проектом, в котором я извлекаю данные о преступности из API и, по сути, рассчитываю плотность преступлений на предварительно определенную единицу сетки. Я делаю это сейчас, помещая lat и lon в data.frame, а затем вычисляя количество точек в радиусе центра точки. Это вычислительно дорого, поскольку в предопределенной сетке есть тысячи точек и тысячи точек преступления.

Мне интересно, есть ли лучший способ рассчитать плотность преступности; Я слышал, что растр может быть ценным?

Некоторые примеры данных:

# Create a predefined grid of coordinates
predef.grid <- data.frame(lat = seq(from = 2.0, to = 4.0, by = 0.1),lon = seq(from = 19.0, to = 21.0, by = 0.1))
predef.grid <- expand.grid(predef.grid)

# Create random sample of crime incidents
crime.incidents <- data.frame(lat = rnorm(10, 4),lon = rnorm(10,20))
crime.incidents <- expand.grid(mydata)

# Need to count number of crimes within radius of every point in predef.grid

Спасибо!

1 ответ

# Need to count number of crimes within radius of every point in   
library(raster)
library(sp)

# predfined raster
predef.grid <- raster(xmn=2,  # xmin
                  ymn=4,  # ymin
                  xmx=19, # xmax
                  ymx=21, # ymax
                  res=1,  # spatial resolution
                  vals = 1) # cell value
plot(predef.grid)

# Create random sample of crime incidents
# points should be a Spatial object of some form, point, etc.
crime.incidents <- spsample(x = as(extent(predef.grid), 'SpatialPolygons'),
                        n =  100, 
                        type = 'random')

# plot points over grid
points(crime.incidents, pch = 20)

# count points per cell
density <- rasterize(crime.incidents, predef.grid, fun='count')

# plot the density 
plot(density)

Другие вопросы по тегам