在ggplot地图上覆盖多边形

时间:2014-10-13 16:20:15

标签: r ggplot2 gis shapefile ggmap

我努力在谷歌地图上叠加邻居边界。我试图遵循这个code。我的版本如下。你看到什么明显错了吗?

#I set the working directory just before this...
chicago = readOGR(dsn=".", layer="CommAreas")
overlay <- spTransform(chicago,CRS("+proj=longlat +datum=WGS84"))
overlay <- fortify(overlay)
location <- unlist(geocode('4135 S Morgan St, Chicago, IL 60609'))+c(0,.02)
ggmap(get_map(location=location,zoom = 10, maptype = "terrain", source = "google",col="bw")) +
  geom_polygon(aes(x=long, y=lat, group=group), data=overlay, alpha=0)+
  geom_path(color="red")

非常感谢任何见解。感谢您的帮助和耐心。

1 个答案:

答案 0 :(得分:5)

这对我有用:

library(rgdal)
library(ggmap)

# download shapefile from:
#   https://data.cityofchicago.org/api/geospatial/cauq-8yn6?method=export&format=Shapefile

# setwd accordingly

overlay <- readOGR(".", "CommAreas")
overlay <- spTransform(overlay, CRS("+proj=longlat +datum=WGS84"))
overlay <- fortify(overlay, region="COMMUNITY") # it works w/o this, but I figure you eventually want community names

location <- unlist(geocode('4135 S Morgan St, Chicago, IL 60609'))+c(0,.02)

gmap <- get_map(location=location, zoom = 10, maptype = "terrain", source = "google", col="bw")

gg <- ggmap(gmap)
gg <- gg + geom_polygon(data=overlay, aes(x=long, y=lat, group=group), color="red", alpha=0)
gg <- gg + coord_map()
gg <- gg + theme_bw()
gg

enter image description here

如果环境中的任何内容导致问题,您可能需要重新启动R会话,但您可以在geom_polygon调用中设置行颜色和alpha 0填充(就像我做的那样)

你也可以这样做:

gg <- gg + geom_map(map=overlay, data=overlay, 
                    aes(map_id=id, x=long, y=lat, group=group), color="red", alpha=0)

代替geom_polygon,它使您能够在一次调用中与两次调用绘制地图并执行美学映射(如果您根据其他值进行着色)。