下面多边形的边界线

问题描述

我是 {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对象的边界框。我不知道为什么会发生这种情况,也不知道如何配置它。我尝试在所有 bBox 函数中使用 tm_* 参数进行修改,但没有任何改变结果。

我只想看到阴影多边形内的部分道路。这样做的正确方法是什么?

解决方法

您可以从 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()

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...