在R中使用GIS数据时,仅渲染地图的一部分

时间:2014-01-21 15:02:58

标签: r gis geospatial

好吧,我有一个问题,我找不到其他地方的答案,所以我希望你们能帮助我。

我想渲染前南斯拉夫地区,我有dataset。 到目前为止,我有以下,工作正常:

library(sp)
library(maptools)

greg <- readShapePoly("../GlobalData/GREG/GREG.shp", proj4string=CRS("+proj=longlat  +ellps=WGS84"))

yugo <- greg[greg$COW == 345,]

plot(yugo)

这给我一张这样的地图:

Map of former Yugoslavia

但实际上我只想要地图的左上角部分:

Yugoslavia with marked area that I want to retain

我试图通过绘图:

plot(yugo, xlim=c(11.8, 12.01), ylim=c(43.6,47))

这在RStudio的预览窗口中看起来不错,但是如果我改变输出的大小,显示的区域也会改变。

您是否有人知道如何将显示的区域固定到我在第二张图片中标记为绿色的部分?那将是非常好的。

1 个答案:

答案 0 :(得分:2)

首先,您正在显示的地图 long = [11.8,12.01]开始运行;更像是[11.8,17.01]。但那不是你的问题。

问题在于:SpatialPolygons的绘图方法修复了纵横比,因此地图不会失真。因此,当你垂直地扩展地图(使其更高)时,地图也希望变宽,但不能。所以它被削减了。

ggplot包管理得更干净:

library(rgdal)
library(ggplot2)

setwd("<directory with map>")
greg=readOGR(dsn=".",layer="GREG")
yugo <- greg[greg$COW == 345,]

yugo.df <- fortify(yugo)
ggp <- ggplot(yugo.df) 
ggp <- ggp + geom_path(aes(x=long,y=lat,group=group))
ggp <- ggp + coord_fixed()
ggp

ggp + xlim(11.8,17.01) + ylim(43.6,47)

现在尝试更改包含此地图的窗口的大小,看看会发生什么。

编辑 [对OP评论的回应]

在渲染之前添加:

ggp <- ggp + theme_bw()
ggp <- ggp + theme(line = element_blank(), 
                   text = element_blank(), 
                   rect = element_blank())
ggp

您基本上想要“关闭”所有默认格式。对theme_bw()的调用会为您提供黑/白配色方案。对element_blank()的调用会关闭行,文本和边界矩形。