【发布时间】:2019-06-06 07:38:48
【问题描述】:
我想以交互方式(基于传单的方法)在地图上表示 2 艘船以及它们的一些元数据。自然,船舶的元数据通常包含船舶的航向,而最容易理解的表示方式是相应地旋转点数据的符号。
经过一些初步试验后,我设法按照icon rotation in leaflet package 重新创建它,使用纯粹的传单和一个插件,让我可以用rotationAngle=~T_heading 这样的流畅语法编写。这种方式的结果如下所示。
但是,我正在寻找一种将 sf 和 tmap 包用作语法的方法(tmap 的交互式视图也是基于传单的),因为它们是用于管理和可视化地理空间信息的更完整和更复杂的框架。
让我们再次重新创建两个容器的样本数据并绘制它们。
aship<-c(23.622333,37.937489,'Santa Maria',8,300)
bship<-c(23.621303,37.937430,'Vancouver CC',10,35)
shipdata<-data.frame(rbind(aship,bship))
colnames(shipdata)<-c('long','lat','VesselName','sog','T_heading')
shipdata$long<-as.numeric(as.character(shipdata$long))
shipdata$lat<-as.numeric(as.character(shipdata$lat))
shipdata$sog<-as.numeric(as.character(shipdata$sog))
shipdata$T_heading<-as.numeric(as.character(shipdata$T_heading))
#Simple features transformation
ship_sf<-shipdata%>%
st_as_sf(coords=c('long','lat'))%>%
st_set_crs(4326)
# Use tmap and plot the vessels using a vessel_icon of my own
map_s1<-tm_basemap(leaflet::providers$OpenStreetMap)+
tm_shape(ship_sf)+
tm_markers(shape = vessel_icon)+
tm_view(set.view=c(lon=23.622333,lat=37.937489,zoom=17))
到目前为止,我还没有找到一种以 tmap 方式旋转标记的方法。有什么我错过的简单解决方案吗?
非常感谢
【问题讨论】:
标签: r leaflet geospatial sf tmap