gpt4 book ai didi

ruby-on-rails - 多边形 rgeo 中的点

转载 作者:太空宇宙 更新时间:2023-11-03 17:43:40 27 4
gpt4 key购买 nike

我需要知道一个点是否在我的 Rails 应用程序中的多边形中,以便我想使用 rgeo gem。

为了安装这个 geme,我按照 rgeo git 上的说明进行操作

然后我确定 GEOS 和 Proj4 已正确安装。

enter image description here

我还添加了这个 gem 'ffi-geos',没有特别的原因,只是遵循 rgeo 文档

最后我在 rails console 上做了一个测试来检查是否正常工作

  1. poly_text = "POLYGON ..."(很多点,我知道第一个点和最后一个点是相同的,否则我认为这不会起作用,因为需要是一个封闭的多边形)
  2. factory = RGeo::Cartesian::Factory(我正在使用笛卡尔工厂,因为根据我的调查,如果我使用球形工厂,这将无法工作)
  3. poly = factory.new().parse_wkt(poly_text)
  4. point1 = factory.new().parse_wkt("POINT (0 0)")(这个点不属于多边形)
  5. poly.within?(point1)
  6. 结果:RGeo::Error::UnsupportedOperation:方法几何#contains?没有定义的。 来自(IRB):26

在这里你可以看到输出: enter image description here

更多信息: rails 版本 5.1.2创意c9操作系统 ubuntu

如果有人有解决方案,在此先感谢,我也愿意使用其他 gem 或其他任何东西,我的目标是解决我的点/多边形问题。

最佳答案

你可以使用 Geokit , 只需在您的 Gemfile 中包含 gem 'geokit'

然后您需要创建一个点数组,其中每个点都是一个 Geokit::LatLng

例如:

points = []
points << Geokit::LatLng.new("-34.8922513", "-56.1468951")
points << Geokit::LatLng.new("-34.905204", "-56.1848322")
points << Geokit::LatLng.new("-34.9091105", "-56.170756")
polygon = Geokit::Polygon.new(points)
polygon.contains? polygon.centroid #this should return true

不要担心第一点是否与最后一点相同,new 已经解决了这一点,正如所解释的那样here在源代码中。

关于ruby-on-rails - 多边形 rgeo 中的点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46841110/

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