2017-06-19 65 views
0

我为此奋斗了几天,我不确定为什么查询是错误的。 我想找到给定纬度/经度的最近点。Spatialite为给定的经纬度找到最近的节点

SELECT rid,DISTANCE(geometry, MakePoint(-79.91759, 43.266571)) 
FROM room2f ORDER BY DISTANCE(Startpoint(geometry), MakePoint(-79.91759, 43.266571))limit 1 

它总是返回第一行,nomatter我用什么点。然后我试图删除“极限1”:

SELECT rid,DISTANCE(geometry, MakePoint(-79.91759, 43.266571)) 
    FROM room2f ORDER BY DISTANCE(Startpoint(geometry), MakePoint(-79.91759, 43.266571)) 

结果是很奇怪......结果被去掉排序,而不是距离,我想这就是为什么它总是返回第一行。我的查询错误了吗?或者,Spatialite有一个错误?

感谢![enter image description here] 1

+0

你能为适当定制玩具数据库的[MCVE]提供的东西从SQLite的命令行工具'.dump'? – Yunnosch

+0

您在两个距离计算中都没有使用'StartPoint'。但这确实看起来像一个错误。 –

+0

什么'SELECT rid,AsEWKT(起点(几何)),AsEWKT(几何)LIMIT 5'显示?你可以添加这个问题吗? – BradHards

回答

0

在你比较不同的距离你的SQL语句..

  1. 从一般的几何形状的特定点(因为我知道它是从点的最短距离到你的几何图形)。
  2. 从几何的第一个点到您的特定点。

因此,您还得到了不同的结果顺序!

见参考距离函数: http://www.gaia-gis.it/gaia-sins/spatialite-sql-4.2.0.html#p13

相关问题