将Google地图与空间多边形结合使用时,会将多边形形状拼凑起来

时间:2017-05-23 21:08:00

标签: r ggplot2 gis shapefile ggmap

将Google Map Api中的地图与来自geom_polygon的{​​{1}}构建的地图合并时出现问题。当我自己绘制每个地图时,没有什么奇怪的东西出现,但是当我把它们组合起来时,会出现一些直线(直线),弄乱我打算突出的边界。

enter image description here

1)我用来构建带有黑色边框的多边形的数据来自这个link。该文件的确切网址在我的代码下面。有时需要手动解压缩文件,因此下面的代码可能无法下载数据:

ggplot2

2)然后我加载我将构造多边形的shapefile。

path <- getwd()
fileName <- "R05.zip"
if (!file.exists(fileName)) {
    urlFile = "http://www.censo2017.cl/wp-content/uploads/2016/12/R05.zip" 
            download(urlFile, dest = "./R05.zip", mode ="wb")
}
if (!dir.exists("./R05")) {
    unzip("R05.zip")
}

3)选择我感兴趣的行政部门

distritos <- readOGR( dsn= paste(getwd(), "/R05", sep = ""),
                  layer="Distritos_Censales", 
                  encoding = "UTF-8", stringsAsFactors = FALSE)

4)然后我感兴趣的地区(多边形):

 distritos <- distritos[distritos@data$DESC_COMUN=="QUILPUÉ", ]

5)从distritos <- distritos[distritos@data$DESC_DISTR=="EL RETIRO" | distritos@data$DESC_DISTR=="BELLOTO NORTE" | distritos@data$DESC_DISTR=="VALENCIA" | distritos@data$DESC_DISTR=="MENA" | distritos@data$DESC_DISTR=="BELLOTO SUR" | distritos@data$DESC_DISTR=="ALTO QUILPUÉ" | distritos@data$DESC_DISTR=="EL SAUCE", ] 的边界构造基本地图。为了那个原因, 我使用该函数从this StackOverflow问题

获取地图的中心
distritos

6)准备shapefile数据,用bbox(distritos) MapCenter <- function(x1, y1, x2, y2){ center.x <- x1 + ((x2 - x1) / 2) center.y <- y1 + ((y2 - y1) / 2) center <- c(center.x, center.y) center } mcdistritos <- MapCenter(bbox(distritos)[1,1], bbox(distritos)[2,1], bbox(distritos)[1,2], bbox(distritos)[2,2]) basemap <- get_googlemap(mcdistritos, zoom = 13, maptype = "roadmap", color = "bw", style = "feature:administrative|element:labels|visibility:off") basemap <- ggmap(basemap , extent = "device")

绘制它
ggplot2

7)将两张地图拼凑在一起

distritos.fort <- fortify(distritos, region = "DESC_DISTR")

我尝试通过缩小基本地图,以防多边形边界混乱,因为它们不适合基本地图,但我得到了相同的结果,只是一个较小的地图。有谁知道如何解决它?

1 个答案:

答案 0 :(得分:2)

您需要为您的美学添加组映射。例如

geom_polygon(data = distritos.fort, 
                    aes(x = long, y = lat, group = group),
                        colour = "black",
                          fill = NA) + coord_map()

目前你已经有了一条连续路径。群体审美将您的数据分成不同的多边形。

我无法提取您的数据,因此我不知道您对群组所需的确切映射。但是看看其他强化的例子&amp;文档,我相信它是group = group