#r #tmap
#r #tmap
Вопрос:
Я новичок в {tmap}
пакете, и у меня возникают трудности с созданием правильной дорожной карты. Вот мой код (не сразу доступный для выполнения, потому что у меня есть экспортированный .osm
файл OpenStreetMap на диске).
# Load OpenStreetMap (OSM) polygon data of the Holden area from disk
holden_bbox_shapes = sf::read_sf('./localdata/holden.osm', 'multipolygons')
# Load OSM line data from disk. These are almost all roads.
holden_lines = sf::read_sf('holden.osm', 'lines')
# Get just the administrative town of holden
holden_town_polygon = dplyr::filter(holden_bbox_shapes, name == 'Holden')
tm_shape(holden_town_polygon)
tm_fill()
tm_shape(holden_lines)
tm_lines()
Здесь приведен результат изображения, в котором дороги выходят за пределы видимой области holden_town_polygon
, но в пределах того, что я бы предположил, является граничным полем holden_town_polygon
объекта. Я не знаю, почему это происходит, и как это настроить. Я пробовал изменять bbox
параметр во всех tm_*
функциях, но результат ничего не изменил.
Я хотел бы видеть только часть дорог внутри заштрихованного многоугольника. Каков был бы правильный способ сделать это?
Ответ №1:
Вы можете получить использование st_intersection
из sf
пакета.
Это будет выглядеть примерно так:
library(sf)
inside_lines <- st_intersection(holden_lines, holden_town_polygon)
tm_shape(holden_town_polygon)
tm_fill()
tm_shape(inside_lines)
tm_lines()