Mysql Spatialite查找给定lat/lon的最近节点

Mysql Spatialite查找给定lat/lon的最近节点,mysql,sqlite,spatialite,Mysql,Sqlite,Spatialite,我为此挣扎了几天,我不知道为什么这个问题是错误的。。 我想找到给定纬度/经度的最近点 SELECT rid,DISTANCE(geometry, MakePoint(-79.91759, 43.266571)) FROM room2f ORDER BY DISTANCE(Startpoint(geometry), MakePoint(-79.91759, 43.266571))limit 1 它总是返回第一行,无论我使用什么点。然后我尝试删除“limit1”: 结果很奇怪。。。结果是按rid而

我为此挣扎了几天,我不知道为什么这个问题是错误的。。 我想找到给定纬度/经度的最近点

SELECT rid,DISTANCE(geometry, MakePoint(-79.91759, 43.266571))
FROM room2f ORDER BY DISTANCE(Startpoint(geometry), MakePoint(-79.91759, 43.266571))limit 1
它总是返回第一行,无论我使用什么点。然后我尝试删除“limit1”:

结果很奇怪。。。结果是按rid而不是距离排序的,我想这就是为什么它总是返回第一行。我的问题错了吗?或者,Spatialite中有一个bug


谢谢]

在sql语句中,您可以比较不同的距离

  • 从一般几何体到特定点(我知道这是从点到几何体的最短距离)
  • 从几何体的第一个点到特定点
  • 因此,您也会得到不同的结果排序

    请参见距离函数的参考:

    您能否从SQLite命令行工具中为适当定制的玩具数据库提供
    .dump
    作为一种工具?您在两种距离计算中都没有使用
    StartPoint
    。但这看起来确实像一个bug。
    选择rid、AsEWKT(起点(几何))、AsEWKT(几何)限制5显示什么?你能把这个加到问题上吗?
    
    SELECT rid,DISTANCE(geometry, MakePoint(-79.91759, 43.266571))
       FROM room2f ORDER BY DISTANCE(Startpoint(geometry), MakePoint(-79.91759, 43.266571))