r - 使用 R 中的传单库绘制跨越国际日期变更线的路线
问题描述
我有兴趣使用 R 的传单库绘制从滑铁卢到台湾的路线。路线的坐标是使用 geosphere 中的 gcIntermediate 函数获得的。然而,该路线涉及国际日期变更线的交叉,因此该路线在地图边缘被截断,并在顶部与一条直线相连。
我得到的情节:错误的地图
我想要的情节:理想地图
使用谷歌地图有可能解决这个问题,但有没有办法使用传单解决这个问题?我应该如何修改下面的代码以获得理想的路线?谢谢!
代码:
library(dplyr)
library(leaflet)
library(geosphere)
# Source
latWaterloo <- 43.46687
lngWaterloo <- -80.52464
# Destination
latTaiwan <- 23.5983
lngTaiwan <- 120.8354
m <- leaflet() %>% addTiles()
m <- addCircleMarkers(m, lng=c(lngWaterloo, lngTaiwan) , lat=c(latWaterloo, latTaiwan), popup=c("Waterloo","Taiwan"), radius=5, opacity=0.5)
geo_lines <- gcIntermediate(c(lngWaterloo, latWaterloo), c(lngTaiwan, latTaiwan), n=100, addStartEnd=T, sp=T, breakAtDateLine=F)
m <- addPolylines(m, data=geo_lines, color="blue")
m
m <- leaflet() %>% addTiles()
m
解决方案
正如 Jean-Claude 在他的评论中所说,你的手绘路径比给出的路径要长gcIntermediate
。要获得正确的路径,只需gcIntermediate
调用breakAtDateLine=TRUE
:
geo_lines <- gcIntermediate(c(lngWaterloo, latWaterloo), c(lngTaiwan, latTaiwan), n=100, addStartEnd=TRUE, sp=TRUE, breakAtDateLine=TRUE)
m <- addPolylines(m, data=geo_lines, color="blue")
m
产生
我不知道是否有办法告诉leaflet
复制路径的各个部分,因为它穿过日期线,以便它直接到达情节的边缘。
推荐阅读
- c++ - C++ 复数模板 - /= 运算符
- c# - 在不同的应用程序之间共享 iOS 上的文件
- node.js - Nodemailer 仅使用一个电子邮件地址
- excel - 我正在尝试使用来自活动表(VBA)的值创建数组
- jenkins - Jenkins 部署出错 :: [cargo.remote.username] [cargo.remote.password] 属性是必需的
- sql - SQL查询输出超链接
- apache-spark - pyspark.sql.functions 的 unix_timestamp 仅对大多数值变为空
- python - 烧瓶、蓝图碰撞和 Pytest
- linux - 如何在 Linux/ARM 系统上强制从用户空间分配新的页表?
- authentication - omniauth ldap 模块中的 ldap 过滤器在话语中不起作用