我需要在世界地图中可视化一些地理数据。我已经学会了流动数据的great circle mapping tutorial,结果看起来很奇怪。它如下所示:
显然我需要避免这些交叉画面线。但是我该怎么做呢?绘制地图的代码是:
map("world", col="#f2f2f2", fill=TRUE, bg="white",lwd=0.05)
for (j in 1:length(location$lon)) {
inter <- gcIntermediate(c(lon_nj, lat_nj), c(location$lon[j], location$lat[j]), n=100, addStartEnd=TRUE)
lines(inter, col="black", lwd=0.8)
}
我已尝试过gpe Automating great-circle map production in R
提供的代码 map("world", col="#f2f2f2", fill=TRUE, bg="white",lwd=0.05)
for (j in 1:length(location$lon)) {
inter <- clean.Inter(c(lon_nj, lat_nj), c(location$lon[j], location$lat[j]),n=100, addStartEnd=TRUE)
lines(inter, col="black", lwd=0.8)
}
结果是这样的:
我只想用最短的距离到达所需的地方。
来自网络的答案,比如使用像greatCircle()这样的其他功能也未能实现我的目标。
那么有没有人知道如何实现这个目的呢?
非常感谢!!
答案 0 :(得分:1)
一种选择是切换到以太平洋为中心并分裂大西洋的地图。这可能是最容易查看的。
另一种选择是检查inter对象(可能是带有x和y的列表,但我不熟悉所使用的确切函数)并查看x坐标是否会增加或减少。寻找突然向另一个方向跳跃并在那里插入NA的地方(并在y值的相同位置),然后不会显示穿过整个地块的线。如果这不起作用,您可以在点之间的距离超过阈值的任何地方插入NA。
可能足够好的另一个快速想法(部分取决于每条曲线使用了多少点)是绘制点而不是线,使用points(inter, pch='.')
而不是线命令。