【问题标题】:ggplot2 with ggmap odd shaped polygon Rggplot2与ggmap奇形多边形R
【发布时间】:2014-03-13 18:24:57
【问题描述】:

我正在尝试使用 ggplot2 绘制多边形 shapefile,但得到了一些奇怪的结果。我使用以下代码读取具有单个多边形的 shapefile:

zctaSp<-readShapePoly("zctaSp.shp")

然后我使用几种不同的方法进行绘图,其中两种可行,但我需要的那一种不行。

情节 1:形状看起来正确:

plot(zctaSp)

情节 2:形状看起来也正确,这似乎与情节 2 几乎相同:

ggplot(data=zctaSp, aes(x=long, y=lat, group=group)) + geom_polygon()

情节 3:但形状被这样弄乱了:

ggplot(data=zctaSp, aes(x=long, y=lat, group=group)) + geom_polygon()    
atl <- qmap('atlanta', zoom=11, color="bw")
atl + geom_polygon(data=zctaSp, aes(x=long, y=lat, group=group), alpha=1)

我将 shapefile 放在http://bit.ly/1nnlAg3

请注意,在按照 Hadley Wickham 在 this link 的说明运行 fortify 命令后,我也尝试过绘图,但这并没有改善问题。

【问题讨论】:

  • 感谢您添加图形 rcs!

标签: r ggplot2 spatial shapefile


【解决方案1】:

尝试:

library(ggmap)
library(rgdal)
# Data using NAD83 - epsg: 4269
zct <- readOGR(dsn = 'D:/Programacao/R/Stackoverflow/22387624',
               layer = 'zctaSp')
zctdf <- fortify(zct)

# Project to wgs84
wgs84proj <- CRS('+init=epsg:4326')
zct_g <- spTransform(zct, wgs84proj)
zctgdf <- fortify(zct_g)
map_loc <- get_map(location = c(lon = mean(zctgdf$lon), mean(zctgdf$lat)),
                   source = 'google', zoom = 11)
map <- ggmap(map_loc, extent = 'device')
map + 
  geom_polygon(data=zctgdf, aes(x=long, y=lat, group=group), alpha=.8)

来自 Qgis 的地图

关于本练习中使用的预测,NAD 83 / WGS84 可能是一个陷阱。 NAD83 和 WGS84 之间存在细微差别。 NAD83 依赖于 GRS80 基准,其实现与 WGS84 非常相似,但又不一样。

对于这些 ggmap 应该始终使用未投影的 WGS84 (epsg4326)。

【讨论】:

  • 非常感谢您的回复!在使用您的代码时,这不是投影问题,因为如果您放弃所有投影代码,那么您所拥有的就是工作。使所有不同的代码段是位置规范。在您的代码中,如果您使用:get_map(location = c(lon = mean(zctgdf$lon), mean(zctgdf$lat))) 它可以完美运行。 但是如果你使用 get_map(location = 'Atlanta') 多边形会被破坏。您的回复很有帮助,谢谢!
  • 似乎与绘图边缘的多边形有关!试试,例如get_map(location=c(lon=-84.42798, lat=33.749), source='google', zoom=11)。然后将 lon 值替换为 -84.48798。你会看到,如果多边形的一部分不在图上,多边形就会被破坏。
  • @user2631089。是的,ggmap 会切断掉出窗口的坐标,从而产生该绘图行为。我认为应该避免这种行为或发出警告。关于投影,请注意 NAD83 和 WGS84 并不相同。
  • 同意 Paulo,感谢您的帮助。是的,NAD83 和 WGS84 不一样(尽管它们非常接近(!)并且在大多数情况下几乎无法区分)。
猜你喜欢
  • 2018-08-31
  • 1970-01-01
  • 2012-11-08
  • 1970-01-01
  • 1970-01-01
  • 2017-08-22
  • 2015-09-27
  • 1970-01-01
  • 2016-03-10
相关资源
最近更新 更多