正确使用nowrapRecenter()

时间:2014-12-26 10:53:43

标签: r maps

我使用R 3.1.2,尝试使用世界地图创建一个等值区。怪癖是,因为我的观众在亚洲,我需要重新定位地图。从文档看起来像nowrapRecenter()是完美的,但我发现它似乎没有像宣传的那样工作。例如,在没有任何重新定位的情况下开始:

library(maps)
library(maptools)
library(rgdal)
data(wrld_simpl)
plot(wrld_simpl)

现在尝试以148E经度重新定位,以便将亚洲移近地图的中心,同时在左/右边缘分割尽可能少的陆块:

library(maps)
library(maptools)
library(rgdal)
data(wrld_simpl)
world <- nowrapRecenter(wrld_simpl,offset=148,avoidGEOS=TRUE)
plot(world)

你得到的有点乱。地图不仅以180E经度为中心,而且地图上还有划痕,其中nowrapRecenter()应该被分割并在左/右重新关闭的多边形在地图的整个宽度上延伸。实际上,对于任何选择的偏移量,重新定位似乎并不干净。

类似的问题出现了before,最后的评论提供了一个使用nowrapRecenter()的例子,但它似乎不再起作用。什么是重新定位世界地图的最佳方式(使用SpatialPolygons)并且左/右边距的多边形是否被正确划分?

谢谢!

1 个答案:

答案 0 :(得分:0)

这只是部分答案,所以如果不够,请告诉我,我会将其删除。

问题似乎是转换墨卡托投影在极点附近失败。如果你愿意排除格陵兰岛和南极洲,那就行了。

library(maptools)
data(wrld_simpl)
wrld   <- wrld_simpl[!(wrld_simpl$NAME %in% c("Greenland","Antarctica")),]
library(ggplot2)
ggplot(wrld,aes(x=long,y=lat,group=group))+
  geom_polygon(fill="white",color="grey30")+
  coord_map(orientation=c(90,0,148))+
  scale_x_continuous(breaks=c(0,60,120,180,-120,-60))+
  theme_bw()

即使有此限制,nowrapRecenter(...)也会失败。