【发布时间】:2014-10-14 07:16:13
【问题描述】:
我只是想用白色填充一个简单多边形之外的区域。出于某种原因,它搞砸了,在中心画了一个奇怪的木桩,好像它认为它是吸血鬼杀手什么的。
我尝试关注this post,但有些东西不见了。我本以为这样会更容易,但事实证明它是一个非常暴躁的小恶魔。
如何在不弄乱多边形内部区域的情况下,将适合投影的多边形外部区域填充为白色?谢谢
# reproducible example
library(rgeos)
library(maptools)
shpct.tf <- tempfile() ; td <- tempdir()
download.file(
"ftp://ftp2.census.gov/geo/pvs/tiger2010st/09_Connecticut/09/tl_2010_09_state10.zip" ,
shpct.tf ,
mode = 'wb'
)
shpct.uz <- unzip( shpct.tf , exdir = td )
# read in connecticut
ct.shp <- readShapePoly( shpct.uz[ grep( 'shp$' , shpct.uz ) ] )
# box outside of connecticut
ct.shp.env <- gEnvelope( ct.shp )
# difference between connecticut and its box
ct.shp.diff <- gDifference( ct.shp.env , ct.shp )
# prepare both shapes for ggplot2
f.ct.shp <- fortify( ct.shp )
outside <- fortify( ct.shp.diff )
library(ggplot2)
# create all layers + projections
plot <- ggplot(data = f.ct.shp, aes(x = long, y = lat)) #start with the base-plot
layer1 <- geom_polygon(data=f.ct.shp, aes(x=long,y=lat), fill='black')
layer2 <- geom_polygon(data=outside, aes(x=long,y=lat), fill='white')
co <- coord_map( project = "merc" )
# this works
plot + layer1
# this does not
plot + layer1 + layer2
# this also does not
plot + layer1 + layer2 + co
【问题讨论】:
-
plot + layer2 + layer1怎么样?这似乎奏效了。当您在多边形中绘制多边形时,我认为您必须先绘制外部多边形。 This post 可能会有所帮助。 -
@jazzurro 感谢您的想法,但这并不能解决我想要做的事情。我有一个 rectangle 点
ct.shp.env我想要映射,并且 layer2 需要覆盖康涅狄格形状之外的点。加上即使你的解决方案,左边仍然有那个奇怪的形状。 :( 无论如何,layer1和layer2不应该是完全互补的吗?我不明白为什么切换顺序很重要?
标签: r map ggplot2 gis map-projections