在RGoogleMaps上绘制区域

时间:2012-02-26 20:45:36

标签: r shapefile rgooglemaps

我有一个包含多边形区域的shapefile,可以像这样成功使用PlotOnStaticMap:

#Map <- GetMap.bbox(bb$  #Just to show I read "Map" here
shp_0 <- rgdal::readOGR(dsn="dir", layer="TheLayer")
shp_1 <- shp_0@polygons[[i1]]  # where i1=the region I'm looking at
shp_2 <- shp_1@Polygons[[i2]]  # where i2=the polygon I want to plot
tbl_coords_i2 <- data.frame(shp_2@coords)
tbl_coords_i2$color <- colors()[33]  # red
tmp <- PlotOnStaticMap(lat=tbl_coords_i2$X2, lon=tbl_coords_i2$X1, cex=0.5, pch=15, col=tbl_coords_i2$color, MyMap=Map, add=FALSE, NEWMAP=FALSE, FUN=points)

但我真正想要的是绘制充满红色的区域,如下所示:

tmp <- PlotPolysOnStaticMap(polys=shp_2, col=colors()[33], MyMap=Map, border = NULL, lwd=0.25, add=FALSE, NEWMAP=FALSE)

但是这给出了错误“多边形[,”Y“]中的错误:”S4“类型的对象不是子集”“应该如何做呢?

  • shp_0是“SpatialPolygonsDataframe”
  • shp_1是“多边形”
  • shp_2是“Polygon”

很抱歉没有提供可重现的代码。

非常感谢。

/克里斯

更新:我刚刚意识到PlotPolysOnStaticMap(shp)中的“shp”应该是一个带有“X”和“Y”列的数据帧,即不是我之前假设的shapefile。

更新2:即使我使用“border = NA”,我也会得到带有黑色边框的红色多边形。有谁知道如何摆脱边界?

1 个答案:

答案 0 :(得分:1)

为了别人的利益,我在这里介绍了我找到的解决方法:我打印了“PlotPolysOnMap”并将其粘贴到我自己的函数“PlotPolysOnMap2”中。然后在新功能(不共享)中,我手动设置border = NA(它是border = border)。然后绘制多边形而没有围绕它们的线。这个“难看的修复”可能会让程序员比我更熟练,但我今天需要完成......

/克里斯