R:多边形组合算法

标签 r algorithm polygon ggmap

我有一个包含不同多边形的文件,定义为 data.frameid , lnglat .使用以下代码,我可以在 map 上绘制这些多边形。

    library(ggmap)
    library(ggplot2)

    map <- get_googlemap(center = c(lon = 9.26, lat = 47.3), zoom=10)
    xy <- data.frame(id = c(rep(1,4), rep(2,4)), lng = c(9,9.5,9.5,9,9.25,9.7,9.7,9.24), lat= c(47.1,47.1,47.4,47.4,47.2,47.2,47.5,47.5))
    p <- ggmap(map) + geom_polygon(data=xy, aes(x=xy$lng, y=xy$lat,group=xy$id),fill='red',alpha= 0.2)
    print(p)

在绘制多边形之前是否有合并多边形的功能? 我想绘制一个多边形来覆盖至少一个多边形下的所有内容。因此,我需要在交点处创建新点,凸包不会被切割。

最佳答案

如果你的意思是:

I want to plot one polygon which covers everything that's under AT LEAST one of the polygons.

then chull(凸包)可能就是您想要的。

举个例子(虽然不是 ggplot):

# create data: (x,y)-coords
x<-c(1:9,9:1)
y<-runif(length(x))*10
# plot `em
plot(x,y,type="l")
# these are the indexes of points that are the convex hull
print(chull(x,y))
these.idx<-chull(x,y)
# plot the convex hull using the indexes
lines(x[these.idx],y[these.idx],type="l",col="red",lwd=2)

对于您的 ggplot 场景,如果您的代码像下面这样修改,它会绘制一个多边形(尽管很难知道这是否是您所追求的):

library(ggmap)
library(ggplot2)

map <- get_googlemap(center = c(lon = 9.26, lat = 47.3), zoom=10)
xy <- data.frame(id = c(rep(1,4), rep(2,4))
    , lng = c(9,9.5,9.5,9,9.25,9.7,9.7,9.24)
    , lat= c(47.1,47.1,47.4,47.4,47.2,47.2,47.5,47.5))
ch.idx<-chull(xy$lng,xy$lat)
xy<-xy[ch.idx,]
# removing:: ,group=xy$id
p <- ggmap(map) 
p <- p + geom_polygon(data=xy, aes(x=xy$lng, y=xy$lat),fill='red',alpha= 0.2)
print(p)

(这更像是评论而不是答案,但我没有“代表”来做那件事抱歉)

关于R:多边形组合算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29347394/

相关文章:

reactjs - 多边形填充颜色无法正常工作(React Native map )

JAVA绘制正多边形

r - 如何在 ggplot2 中的 X 和 Y 下绘制多列

r - 从MODISSummaries函数返回错误(R包MODISTools)

algorithm - Scala:如何通过分组(或分箱)获取 Iterable 的前 N ​​个元素

java - 如何通过消除所有空/空条目来折叠二维数组

Javascript:多边形中的点性能改进

datetime - 在 R 中处理日期和时间

r - 在R中按组按顺序匹配和计数值

c - C 中使用拉格朗日插值计算多项式系数的算法