获取经纬度图的纵横比

Get aspect ratio for lat-long plots

我知道 R 有多种方法可以使用投影正确绘制地图。但是只是为了使用基函数快速获得 'good enough' 结果,是否有一个函数可以计算特定纬度的纵横比,如果提供给 R 的典型 asp 参数,将近似于正确的图?即相当于 ggplot2 的 coord_quickmap 方法。感谢您的任何建议。

如果 coord_quickmap 提供的内容对您来说足够接近,那么您可以这样做:

library(ggplot2)
library(maps)
library(mapdata)

# shamelessly stolen from coord_quickmap

map_aspect = function(x, y) {
  x.center <- sum(range(x)) / 2
  y.center <- sum(range(y)) / 2
  x.dist <- ggplot2:::dist_central_angle(x.center + c(-0.5, 0.5), rep(y.center, 2))
  y.dist <- ggplot2:::dist_central_angle(rep(x.center, 2), y.center + c(-0.5, 0.5))
  y.dist / x.dist
}

ggplot 会做什么:

ggplot(data.frame(state.center)) + geom_point(aes(x=x, y=y)) + coord_quickmap()

同样的事情,现在,在基地:

plot(state.center$x, state.center$y,
     asp=map_aspect(state.center$x, state.center$y))

不过请记住,coord_quickmap(以及由此计算出的比率)是为 区域设计的。我 post 一些能够在这里选择地图投影的资源:here 这将与 spTransform 和基础一起工作。