С новым пакетом sf это теперь быстро и просто:
library(sf)
out <- st_intersection(points, poly)
Дополнительные опции
Если вы не хотите, чтобы все поля из многоугольника добавлялись вточечный объект, просто позвоните dplyr::select()
на объект полигона до:
library(magrittr)
library(dplyr)
library(sf)
poly %>%
select(column-name1, column-name2, etc.) -> poly
out <- st_intersection(points, poly)
Если у вас возникнут проблемы, убедитесь, что ваш полигон действителен:
st_is_valid(poly)
Если вы видитеFALSE
выводит здесь, попробуйте сделать его действительным:
poly <- st_make_valid(poly)
Обратите внимание, что эти «действительные» функции зависят от sf
установки, скомпилированной с liblwgeom
.