【发布时间】:2023-03-16 12:50:02
【问题描述】:
我有一个包含匹配信息的表格。一列称为坐标,包含一个带有 lat lng 坐标的 jsonb,如下所示:
{"lat": 70.852104, "lng": 7.937035}
客户端应用程序可以过滤匹配项,向我发送一个像这样的 json:
{"lat": 65.852104, "lng": 6.937035, "distance": 300}
我需要查询客户端发送的坐标和距离之间的所有匹配项。我可以在不更改坐标列类型的情况下创建正确的查询吗?怎么做? Postgres 版本是 9.6.2。
【问题讨论】:
-
恐怕你不会喜欢它:处理地理数据的唯一合理方法是使用
postgis扩展名。相信我,您会惊讶于它的帮助!安装非常简单,您只需将现有的jsonb坐标存储为geometry在新列中,然后使用类似ST_Distance的内容。如果您已经安装了postgis并且没有创建新列的奢侈,您可以动态地进行...让我们知道。 -
这只是与 Elixir 无关。这更像是一个postgresql问题。我的意思是即使没有 ecto 或 elixir,您也可以(并且可能应该进行测试)直接针对 postgresql 运行查询。首先修复 postgresql 部分,然后如果您仍然对 Elixir 有疑问,请为此发布一个单独的问题。
-
我还要说这是一个研究不足的问题,因为您没有分享您尝试过的任何查询或您实际完成的任何研究。 idownvotedbecau.se/noattempt
标签: postgresql geometry elixir postgis