当前位置: 首页 > 知识库问答 >
问题:

在rails查询中调用postgis ST_DWithin

高溪叠
2023-03-14

以下操作正在控制台中尝试,用于启用postgis的铁路4.2应用程序

@target = Target.last
@meter_radius = 1000
@valid_points = Target.where("ST_DWithin(#{@target.lat}, #{@target.lon},  #{@meter_radius}))

lat和lon定义为十进制值。这转化为以下查询

SELECT "targets".* FROM "targets"  WHERE (ST_DWithin(38.656679, 15.984094, 1000))

与错误:PG::未定义函数:错误:函数st_dwithin(数字,数字,整数)不存在

我认为我需要为这些值声明数据类型(几何或地理),但不确定如何声明。我还想知道ST_DWithin函数是否可以处理3857数据类型,即使文档中没有说明。

注意@target对象还具有一个lonlat属性,该属性在postgresql中定义为一个带有:srid的空间值=

最新消息

@valid_points = Target.where("ST_DWithin(lonlat, ST_PointFromText('#{@target.lonlat}',  #{@meter_radius}))

返回一个结果,因此在语法上是有效的。

SELECT "targets".* FROM "targets"  WHERE (ST_DWithin(lonlat, ST_PointFromText('POINT (15.984094 38.656679)', 3857), 1000))

然而,结果是不正确的。它基本上找到了表中的所有点。由于是SRID类型,这需要以度表示,而不是以米表示。

共有1个答案

彭鸿文
2023-03-14

一个答案是,利用存储的lonlat空间点:

@target = Target.last
@degree_radius = 0.2249
@valid_points = Target.where("ST_DWithin(lonlat, ST_PointFromText('#{@target.lonlat}',  #{@degree_radius}))

它返回一个结果,因此在语法上是有效的。

SELECT "targets".* FROM "targets"  WHERE (ST_DWithin(lonlat, ST_PointFromText('POINT (15.984094 38.656679)', 3857), 0.2249))
 类似资料:
  • 问题内容: 我希望使用find在rails控制器中编写此SQL查询: 我该怎么做?我正在使用Rails框架和MySQL。提前致谢。 问题答案: 简单方法: 一枪:

  • 问题内容: 非常感谢你的帮助。我有一个和表。位置 我对位置模型执行以下查询。 然后,我要对其执行附加查询并根据以下内容对其进行过滤 该查询并 没有 工作。它返回一个空对象。 这是参数: location_params 1} permitted: true> ads_params 1} permitted: true> 不允许这样输入特定的列: 我有postgresql,我没有考虑过使用SQL,但是

  • 问题内容: 我正在尝试查询Postgres数据库中的某个值。我在表中有一个命名字段,可以用以下两种方式之一表示: 1。 2。 我对这两种表示形式都满意。但是,我似乎无法找出如何让意甲5中的所有用户都说出来。我按照以下方式尝试了多个查询: 还有许多其他尝试,比其他尝试更愚蠢(请参见上文)。我该怎么办? 我已经能够确定: 但是,以下查询有效: 我认为我没有正确地传递列中的数据。我提供的创建的哈希是:

  • 问题内容: 我正在将旧数据库迁移到我的Rails应用程序(3.2.3)中。原始数据库带有相当多的长SQL查询报表。就目前而言,我想使用Rails应用程序中的sql查询,然后(在时间允许的情况下)将sql查询一一交换为“适当的” Rails查询。 我有一个临床模型,控制器具有以下代码: 但是,当我运行该代码时,会遇到一些与格式有关的错误。 在将它导入控制器之前,我应该对sql查询做些什么?尽管查询可

  • 问题内容: 多亏了Erwin Brandstetter在我之前的问题“具有has_many关系的订单”中的帮助,我的SQL查询才能正常工作。 如何将该SQL转换为ActiveRecords或AREL查询以在范围中使用? 我最近来的是在朋友的帮助下… …这给了我一个错误: 更新: 我之前的问题对相关的架构和查询有完整的描述。但是基本上Articles have_many Metrics和一个Metr

  • 问题内容: 在Rails 3上有什么宝石可以显示 我的代码的哪一部分生成了哪个SQL查询 吗? 在Rails 2.3上有一个名为query_trace的插件,但是在Rails 3上似乎不起作用,它会产生以下错误: 问题答案: QueryTrace无法按原样工作,因为在ActiveRecord区域中的Rails 3 esp中进行了许多更改。 所以,我四处乱窜,使它像这样工作: 您只需要在提到的位置下