2017-06-19 87 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