获取经纬度图的纵横比
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
和基础一起工作。
我知道 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
和基础一起工作。