Ограничивающие линии нижним полигоном

#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()