我正在使用 R 和 maps/mapproject/maptools 包来绘制一些地图,并注意到一种对我来说似乎违反直觉并且实际上限制了我能做的行为。
在不指定任何投影的情况下绘制欧洲地图(限制取自ETRS89 / ETRS-LCC,因此没有冰岛,也剪裁在东部):
library(maps)
map("world",xlim=c(-10.67,34.5),ylim=c(31.55,71.05), interior = T)
结果与预期的一样,正在使用限制并且生成的地图遵循它们。
根据帮助,地图默认使用的投影是:
The default is to use a rectangular projection with the aspect ratio
chosen so that longitude and latitude scales are equivalent at the
center of the picture.
这对我的需要来说不是一个很好的投影,我将使用 LCC 投影,其平行线如上面的 spatialreference.org 链接所示:
library(maps)
map("world",xlim=c(-10.67,34.5),ylim=c(31.55,71.05), interior = T, projection="lambert", parameters = c(45,65))
box()
结果出乎意料,因为它包括更大的区域(向北走很远,包括俄罗斯),基本上使地图无法使用。
奇怪的是,在使用网格时,会清楚地考虑原始限制:
library(maps)
library(mapproj)
map("world",xlim=c(-10.67,34.5),ylim=c(31.55,71.05), interior = T, projection="lambert", parameters = c(45,65))
map.grid(cex=0.1 , col="grey30")
box()
我想要的(以及我认为是上述代码的结果)是一个矩形裁剪,其中包括我指定的限制(由于使用的投影进行了调整,因此预期的面积比上面的矩形更大) . 此外,每当使用 map() 进行投影时,地图和边界都会出现空白区域。
问题是:在使用 map/mapproj/maptools 时有没有办法得到这个结果?我试图人为地更改 xlim/ylim 没有好的结果,因为它似乎在很大的间隔内工作(即更改它们不会产生效果,直到突然一半的欧洲随着下一次递减而消失)。