是否有一种简单的方法可以在spet的位置周围投影sp对象。
示例:我在俄罗斯工作,我如何投射合理的平面投影,类似于我在GoogleEarth中居中时所获得的内容?
library("rworldmap")
russia <- countriesCoarse[which(countriesCoarse$ADMIN=="Russia"),]
plot(russia)
给我:
远离那个几何:
注意:我不仅对地图感兴趣,而且还对投影坐标本身(作为sp对象)感兴趣,以便能够在计算中使用它们,特别是对于rgeos。
答案 0 :(得分:1)
这是ggplot2
的一种方式,其扩展名ggalt
(不是真的需要,但geom_map
有点破解)和maps
包:
library(maps)
library(ggplot2)
library(ggalt)
mapa <- map_data('world', 'Ru')
ggplot() +
geom_cartogram(map = mapa,
data = mapa,
aes(long, lat, map_id = region),
color = 'black',
fill = 'grey') +
coord_map('polyconic') +
theme_minimal()
请注意'polyconic'
投影,我认为很好,可随意调整
答案 1 :(得分:0)
Extended Transverse Mercator是个不错的选择。要保留不依赖于ggplot表示的R包,可以使用sp / rgdal包中的spTransform
。以下函数是从spatDataManagement package中提取的。
Project<-function(obj,objRef=obj){
xlim <- range(coordinates(obj)[,1]) # bbox(objRef)[1,]
ylim <- range(coordinates(obj)[,2]) # bbox(objRef)[2,]
cp <- c(mean(xlim),mean(ylim)) # ~baricenter of the map
stringProj <- paste0("+proj=etmerc +lat_0=",cp[2]," +lon_0=",cp[1],
" +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +units=m +no_defs")
polysProj <- spTransform(x=obj,CRSobj=CRS(stringProj))
return(polysProj)
}
library("rworldmap")
russia <- countriesCoarse[which(countriesCoarse$ADMIN=="Russia"),]
projRussia <- Project(russia)
par(mfrow=c(1,2))
plot(russia,main="Lat/Long projection")
plot(projRussia,main="Projected nicely")