首页 > 解决方案 > R包tmap:无法在线叠加点&无法在视图模式下显示点

问题描述

我开发了代码来识别高速公路坡道在地面街道上的终止位置,我想在地图上显示这些点,该地图还显示高速公路和坡道,以检查我的代码是否正确。

我使用 osm 包从开放的街道地图为城市创建了高速公路(高速公路)和坡道(motorway_links)的简单要素(sf)对象。我的代码标识了坡道在地面街道上终止的点的坐标,并创建了这些点的 sf 对象。两个 sf 对象中的坐标都是地理坐标。它们是一致的,因为斜坡终点节点是从链接端点坐标中选择的。

我已经检查过这两个对象都属于“sf”类。我可以使用 plot 命令绘制两个 sf 对象:

plot(st_geometry(Hwy_sf))
plot(st_geometry(RampTerminiNodes_sf), add = TRUE, col = "red")

我想在“视图”模式下使用 tmap 包绘制它们,以便能够放大区域以确认正确识别斜坡终点,但我遇到了 2 个问题。

首先,我无法在 tmap 的高速公路线上绘制坡道终点点。我可以让每个图层单独绘制,但不能将点图层绘制在线条图层的顶部。这可以将高速公路显示为线条:

tmap_mode("plot")
tm_shape(Hwy_sf) + tm_lines(lwd = 2)

这可以将斜坡终点显示为点:

tmap_mode("plot")
tm_shape(RampTerminiNodes_sf) + tm_bubbles(size = 0.1, col = "red")

但这不起作用(显示线条但不显示点):

tmap_mode("plot")
tm_shape(Hwy_sf) + tm_lines(lwd = 2) + 
  tm_shape(RampTerminiNodes_sf) + tm_bubbles(size = 0.1, col = "red")

其次,我一直无法弄清楚如何在“查看”模式下显示点数据。这行不通。绘图区域显示消息:“地图数据尚不可用”

tmap_mode("view")
tm_shape(RampTerminiNodes_sf) + tm_bubbles(size = 0.1, col = "red")

系统信息为:
Windows 10
R 版本 Rx64 4.0.2
R Studio 版本 1.3.1093

标签: rtmap

解决方案


解决了这个问题。我的代码中有一个错误,它改变了 RampTerminiNodes_sf 对象的投影。纠正即解决问题。


推荐阅读