gpt4 book ai didi

ruby-on-rails - Ruby on Rails PostGIS - 将多边形记录插入数据库

转载 作者:数据小太阳 更新时间:2023-10-29 07:08:10 24 4
gpt4 key购买 nike

我将 RoR 与 PostGIS 结合使用来存储位置数据。我正在尝试使用圆(例如,带半径的中心点)来存储估计位置。

我试过类似的东西,但它不起作用:

@location = Location.new(:place_id => place.id,
:circle => %{ST_Buffer(ST_MakePoint(#{latitude}, #{longitude})::geography, #{accuracy})})

我也尝试过使用 RGeo,它是出厂设置,但不确定如何准确使用它。

任何帮助将不胜感激。谢谢。

编辑 1:我取得了一些进步。

factory = RGeo::Cartesian.factory
center_point = factory.point(latitude, longitude)
circle = center_point.buffer(accuracy)

@location = Location.new(:place_id => place.id,
:circle => circle)

但是 - 现在它抛出以下异常:

can't cast RGeo::Cartesian::Polygon Impl to string

再次强调,我们将不胜感激。

最佳答案

看起来 locations 表中名为 circle 的列是文本列而不是几何列。您的架构是什么样的?

您可能还想设置您的 SRID。

circle = RGeo::Cartesian.factory.point(0, 0).buffer(20)
@location = Location.new(:place_id => place.id, :circle => circle)
@locaiton.save

另一个可能更好的选择是只存储确切的位置并查询一定距离的位置。您可以使用距离运算符 ( http://postgis.net/docs/manual-2.1/geometry_distance_centroid.html ) 或重叠运算符 ( http://postgis.net/docs/manual-2.1/geometry_overlaps.html )。

关于ruby-on-rails - Ruby on Rails PostGIS - 将多边形记录插入数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22423655/

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