gpt4 book ai didi

r - 使用 ggplot 绘制带孔的多边形(在城市 map 中)

转载 作者:行者123 更新时间:2023-12-04 19:31:25 24 4
gpt4 key购买 nike

我有 3 个用于创建城市 map 的 shp 文件:

  • land.shp(多边形绘制水面以上的土地)
  • road.shp(多边形绘制所有的道路,注意有的是“环路”,就是中间有个洞)
  • building.shp(绘制所有建筑物的多边形)

我用QGIS画出我想要的 map ,然后用ggplot打land.shp,然后road.shp和building shp再做一遍。以下是谷歌地图的输出,用于说明我的问题:

enter image description here

你可以看到它们之间有 2 座桥和一些海(我没有海 shp,我只是将背景设置为蓝色),用蓝点标记。在R中,那个区域应该是一个洞,但是里面全是灰色。同样的问题出现在用红点标记的灰色区域,这是一 block 土地,以及另一个用绿点标记的灰色区域,这是一栋被道路包围的建筑物。

我将在 road.shp 的洞中有陆地/海洋/建筑物,我无法使用 R 显示它们。

谁能教我如何在 R 中显示 road.shp 层后面的东西?谢谢。

最佳答案

绘制带孔多边形的一个常见约定是:

  • 一个闭合多边形,其点逆时针形成一个实心形状
  • 顺时针前进的封闭多边形形成一个

那么,让我们构建一些数据和绘图:

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")

enter image description here

关于r - 使用 ggplot 绘制带孔的多边形(在城市 map 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12033560/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com