Как посчитать, сколько дорог пересекают полигоны? - PullRequest
0 голосов
/ 02 июня 2019

Я работаю с полигонами и линиями, теперь я хочу подсчитать, сколько линий пересекают каждый полигон.

Я могу их пересекать, но не понимаю, как считать пересечения.

inter <- intersect(district_sp, osm_maj_roads)

district_sp - пространственный многоугольник. osm_maj_roads - это пространственный линейный объект.

Таким образом, я получаю совершенно новый пространственный многоугольник, но все, что мне действительно нужно, это вектор с количеством пересечений.

Ответы [ 2 ]

1 голос
/ 18 июня 2019

Действительно ли вы получаете новый пространственный объект, когда используете st_intersects? Он должен возвращать разреженный индексный список. st_intersection должен вернуть новый пространственный объект.

library(sf)

somePolygons <- st_transform(st_read('/temp/GIS/test/polygons.shp'), 3577)
someLines <- st_transform(st_read('/temp/GIS/test/linestrings.shp'), 3577)

i <- st_intersects(someLines, somePolygons)
print(i)
Sparse geometry binary predicate list of length 4, where the predicate was 'intersects'
 1: (empty)
 2: 2
 3: 1, 3
 4: 1, 2, 3

# Get a vector with the number of polygons each line intersects with:
print(sapply(i, length))
[1] 0 1 2 3

enter image description here

0 голосов
/ 18 июня 2019

Я не понимаю, почему Нобди ответил, мне было трудно найти то, что мне нужно было сделать. В конце я использовал совокупную функцию. roads_agg <- агрегат (x = osm_roads ["osm_id"], by = polygon_shp, FUN = длина) это дает мне вектор со строками, похожими на многоугольники, и значением в них количества пересечений. Надеюсь, это кому-нибудь поможет;) </p>

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