【问题标题】:get nearest coordinate from sqlite database从 sqlite 数据库中获取最近的坐标
【发布时间】:2015-02-24 15:47:26
【问题描述】:

我有一个基于两个双精度值x0,y0 的点坐标,两者都采用这种格式:xx.x(点作为小数点分隔符)

在数据库中,我有一个由坐标 x1,y1 作为起点和 x2,y2 作为终点定义的线列表。在数据库中的其他列(如线条粗细等)中,有这些列:

id | x1 | y1 | x2 | y2

我需要的是一个查询,它返回具有最接近我的基点 (x0,y0) 的星点 (x1,y1) 或端点 (x2,y2) 的任何线。所以开始或结束最接近我当前位置的线。

谢谢

【问题讨论】:

  • 这是笛卡尔坐标系吗?
  • 是的,它是一个笛卡尔坐标系。
  • 您需要 1. 计算两点之间的距离,2. 获得两个距离中的较小者,以及 3. 获得距离较小的行。您对这三个步骤中的哪一个有疑问?
  • 所有三个,因为它应该在一个查询中完成..在外面很容易做到,但我不知道如何在查询中做到这一点,因为 sqlite 非常有限..

标签: sqlite coordinates distance


【解决方案1】:

SQLite 没有平方根函数,但是为了比较距离,我们也可以使用距离的平方:

SELECT *
FROM MyTable
ORDER BY min((x1-x0)*(x1-x0) + (y1-y0)*(y1-y0),
             (x2-x0)*(x2-x0) + (y2-y0)*(y2-y0))
LIMIT 1

【讨论】:

  • 谢谢!按 min (distance1, distance2) 排序,如果距离 2 最小会怎样?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-27
  • 1970-01-01
  • 2019-04-14
  • 1970-01-01
  • 2020-10-30
相关资源
最近更新 更多