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

Posted

技术标签:

【中文标题】在 R 中使用 GIS 数据时仅渲染地图的一部分【英文标题】:Rendering only part of a map when using GIS data in R 【发布时间】:2014-01-21 15:02:57 【问题描述】:

好的,我有个问题在别处找不到答案,所以希望你们能帮助我。

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

library(sp)
library(maptools)

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

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

plot(yugo)

这给了我一张这样的地图:

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

我已经尝试通过绘图来做到这一点:

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

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

你们中有人知道如何将显示的区域固定到我在第二张图片中用绿色标记的部分吗?那就太好了。

【问题讨论】:

【参考方案1】:

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

问题在于:SpatialPolygons 的 plot 方法修复了纵横比,因此地图不会失真。因此,例如,当您垂直扩展地图(使其更高)时,地图也想变宽,但不能。所以它被剪掉了。

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() 的调用会关闭线条、文本和边框。

【讨论】:

像魅力一样工作,谢谢!有什么办法可以去掉纬度/经度网格以获得纯白色背景?

以上是关于在 R 中使用 GIS 数据时仅渲染地图的一部分的主要内容,如果未能解决你的问题,请参考以下文章

基于三维GIS技术的动态LOD渲染方法的实验及验证

基于三维GIS技术的矢量地图动态LOD渲染方法研究现状

使用DEM和矢量数据绘制地图

怎么把地图碎片放到gis当中去

森城市GIS数据漫谈

五分钟学GIS _ 快速认识 MapBox GL