Как выбрать точки, которые находятся вне буфера в R? - PullRequest
0 голосов
/ 29 апреля 2020

Я использую набор точечных данных класса sf и дорожную сеть класса sf. Я создал буфер с дорожной сетью, используя функцию st_buffer(), и я могу успешно выбрать точки, которые находятся внутри дорог, с помощью следующего: points_within_roads <- st_intersection(points_shp, roads_buffer)

Мне нужно сделать наоборот. Я хочу выбрать точки, которые находятся за пределами дорог. Есть ли функция, которая позволяет мне это сделать? Заранее спасибо.

1 Ответ

1 голос
/ 29 апреля 2020

Вы можете проверить функцию sf::st_disjoint. Например:

# packages
library(sf)
#> Linking to GEOS 3.6.1, GDAL 2.2.3, PROJ 4.9.3

# create some fake data
set.seed(1234)
my_line <- st_linestring(rbind(c(-1, -1), c(1, 1)))
my_points <- st_cast(st_sfc(st_multipoint(matrix(runif(100, -1, 1), ncol = 2))), "POINT")
my_buffer <- st_buffer(my_line, 0.1)

# plot 
par(mar = rep(0, 4))
plot(st_boundary(my_buffer), col = "darkgrey")
plot(my_line, add = TRUE)
plot(my_points[my_buffer, op = st_intersects], add = TRUE, col = "darkred")
plot(my_points[my_buffer, op = st_disjoint], add = TRUE, col = "darkblue")

Создано в 2020-04-29 пакетом Представить (v0.3.0)

Более того, я думаю, что вы ошиблись sf::st_intersection там, где должно быть sf::st_intersects.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...