【问题标题】:Spatialite find the nearest node for the given lat/lonSpatialite 找到给定纬度/经度的最近节点
【发布时间】:2017-06-19 23:30:46
【问题描述】:

我为此苦苦挣扎了几天,我不知道为什么查询是错误的.. 我想在给定的纬度/经度上找到最近的点。

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

它总是返回第一行,无论我使用什么点。然后我尝试删除“limit1”:

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

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

谢谢]1

【问题讨论】:

  • 您能否提供来自 SQLite 命令行工具的.dump 以作为minimal reproducible example 之类的适当定制玩具数据库?
  • 您在两个距离计算中都没有使用StartPoint。但这确实看起来像一个错误。
  • SELECT rid, AsEWKT(Startpoint(geometry)), AsEWKT(geometry) LIMIT 5 显示什么?您可以将其添加到问题中吗?

标签: mysql sqlite spatialite


【解决方案1】:

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

  1. 从一般几何图形到特定点(据我所知,这是从该点到几何图形的最短距离)。
  2. 从几何图形的第一个点到您的特定点。

因此,您也会得到不同的结果排序!

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-05
    • 2013-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多