下方多边形的边界线
Bounding lines by the polygon underneath
我是 {tmap}
包的新手,我在创建合适的路线图时遇到困难。这是我的代码(不能立即运行,因为我在磁盘上有一个导出的 OpenStreetMap .osm
文件)。
# 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()
图像结果是here,其中道路超出了holden_town_polygon
的可见区域,但在我想象的范围内是holden_town_polygon
对象的边界框。我不知道为什么会这样,也不知道如何配置它。我尝试在所有 tm_*
函数中使用 bbox
参数进行欺骗,但没有任何改变结果。
我只想看到阴影多边形内的部分道路。这样做的正确方法是什么?
您可以使用 sf
包中的 st_intersection
。
看起来像这样:
library(sf)
inside_lines <- st_intersection(holden_lines, holden_town_polygon)
tm_shape(holden_town_polygon) +
tm_fill() +
tm_shape(inside_lines) +
tm_lines()
我是 {tmap}
包的新手,我在创建合适的路线图时遇到困难。这是我的代码(不能立即运行,因为我在磁盘上有一个导出的 OpenStreetMap .osm
文件)。
# 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()
图像结果是here,其中道路超出了holden_town_polygon
的可见区域,但在我想象的范围内是holden_town_polygon
对象的边界框。我不知道为什么会这样,也不知道如何配置它。我尝试在所有 tm_*
函数中使用 bbox
参数进行欺骗,但没有任何改变结果。
我只想看到阴影多边形内的部分道路。这样做的正确方法是什么?
您可以使用 sf
包中的 st_intersection
。
看起来像这样:
library(sf)
inside_lines <- st_intersection(holden_lines, holden_town_polygon)
tm_shape(holden_town_polygon) +
tm_fill() +
tm_shape(inside_lines) +
tm_lines()