我有3个shp文件用于创建城市地图:
我使用QGIS来绘制我想要的地图,然后我使用ggplot来播放land.shp,然后使用road.shp并构建shp来再次执行此操作。下面的一个是从谷歌地图输出来说明我的问题:
你可以看到它们之间有2座桥和一些海(我没有海啸,我只是将背景设置为蓝色),用蓝点标记。在R中,该区域应该是一个洞,但它都是灰色的。同样的问题是使用红点标记的灰色区域,红点是一块土地,另一个灰色区域使用绿点标记,绿点是由道路环绕的建筑物。
我会在road.shp的洞里有土地/海洋/建筑物,我不能用R来展示它们。
任何人都可以教我如何展示R中road.shp层背后的东西吗?感谢。
答案 0 :(得分:12)
绘制带孔的多边形的一个常见惯例是:
所以,让我们构建一些数据并绘制:
library(ggplot2)
ids <- letters[1:2]
# IDs and values to use for fill colour
values <- data.frame(
id = ids,
value = c(4,5)
)
# Polygon position
positions <- data.frame(
id = rep(ids, each = 10),
# shape hole shape hole
x = c(1,4,4,1,1, 2,2,3,3,2, 5,10,10,5,5, 6,6,9,9,6),
y = c(1,1,4,4,1, 2,3,3,2,2, 5,5,10,10,5, 6,9,9,6,6)
)
# Merge positions and values
datapoly <- merge(values, positions, by=c("id"))
ggplot(datapoly, aes(x=x, y=y)) +
geom_polygon(aes(group=id, fill=factor(value))) +
scale_fill_discrete("Key")