У меня есть два класса, использующих один и тот же CRS (Latitute и Longitude):
bolognaQuartieriMap
:SpatialPolygonDataFrame
содержащие данные городских районов.crashPoints
:SpatialPointsDataFrame
содержащие данные о несчастных случаях.
Они хорошо построены с использованием:
plot(bolognaQuartieriMap)
title("Crash per quartiere")
plot(crashPoints, col="red",add=TRUE)
Что мне нужно, это получить количество точек ( crashPoints
) в каждом многоугольнике, которые составляют bolognaQuartieriMap
. Мне предложили использовать, over()
но мне не удалось.
Я хочу оставить другой вариант. Вы можете достичь этой задачи , используя
poly.counts()
вGISTools
пакете. Используя примеры данных от rcs, вы можете сделать следующее. Если вы посмотрите на функцию, вы поймете, что функция написана какcolSums(gContains(polys, pts, byid = TRUE))
. Итак, вы можете просто использоватьgContains()
вrgeos
пакете иcolSums()
.Или
И результат:
источник
Вы можете достичь того же, используя
sf
пакет. Проверьте воспроизводимый и прокомментированный код ниже. Пакетsf
используется для обработки пространственных объектов как простых объектов объектов. В этом ответе пакетraster
используется только для загрузки примера данных многоугольника и пакетаdplyr
для преобразования данных в конце.источник