RGeo凸包的点列表

6

RGeo提供了凸包方法,但在这方面没有任何文档。

给定一组点,我如何找到它们的凸包?

1个回答

4

好问题。原来有一种几何类型称为“MultiPoint”,适用于此情况。我创建了一个简单的示例来测试它,看起来效果不错。

f = RGeo::Geos.factory(:srid => 3361, :buffer_resolution => 8) #my typical local rectilinear projection factory with my default settings.
coords = [[1,1], [2,2], [1,3]]
points = []
coords.each {|x,y| points << f.point(x,y)}

points

f.multi_point(points).convex_hull

looks good to me


我尝试了你的解决方案,但是出现了“**NoMethodError: undefined method `factory' for #<RGeo::Geos::CAPIFactory:0x4a9bc54 srid=4326 bufres=1 flags=8>**”错误。 - shrikant1712
1
看起来你正在对一个工厂调用工厂方法。 - boulder_ruby
修复那个问题,需要安装 libgeos 包。 - shrikant1712
为了真正说明“凸包”行为,这个答案应该展示添加另一个点,该点位于其他三个点形成的三角形区域内。正如预期的那样,“convex_hull”方法返回一个多边形,仍然只有外部的三个点。 - Harry Wood
顺便提一下,我已经编辑了工厂方法上的工厂问题 - Harry Wood
这似乎适用于 RGeo::Geos.factory,但不适用于 RGeo::Geographic.spherical_factory。您可以使用 RGeo::Geos.factory 然后转换为其他类型,但转换可能会创建无效的多边形。 - Jacob Dalton

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接