ActiveRecord :: StatementInvalid:PG :: InternalError:ERROR:解析错误 - 无效的几何体

问题描述 投票:0回答:1

我需要找出距离纬度和经度一定距离的用户。

organisation.users.joins(:location)
            .where("ST_DWithin(ST_GeomFromText('POINT(locations.longitude locations.latitude)', 4326),ST_GeomFromText('POINT(? ?)', 4326), ?)", longitude, latitude, distance)
            .pluck(:id)

我收到此错误ActiveRecord::StatementInvalid: PG::InternalError: ERROR: parse error - invalid geometry

ruby-on-rails geometry postgis
1个回答
0
投票

您指的是字符串中的列名,因此使用此字符串而不是预期的坐标。

要解决这个问题,你需要连接text命令('point('和列值,最后你连接文本命令的结尾(')')。结果,列名不再在单引号内。

organisation.users.joins(:location)
            .where("ST_DWithin(ST_GeomFromText('POINT(' || locations.longitude  || ' ' ||  locations.latitude ||')', 4326),ST_GeomFromText('POINT(? ?)', 4326), ?)", longitude, latitude, distance)
            .pluck(:id)
© www.soinside.com 2019 - 2024. All rights reserved.