按纬度和经度(按距离-最近到最远)对点/记录进行排序



我知道这在一些论坛上已经被讨论到了极点,我找到了几种不同的方法来做这件事。例如,这是一篇讨论它的stackoverflow帖子,这是关于它的msdn帖子。这两篇文章看起来都很有趣,但似乎都以不同的方式为原作者完成了它。他们似乎对提供的答案很满意,但我没有得到令人满意的结果(阅读:排序不一致)

问题有两个:

  1. 在C#post数据检索中还是在SQL中通过计算与原点的距离并使用(或其他方法)排序更有效?我最终可能需要根据距离原点的距离(用lat和long表示)对3000+个位置进行排序

  2. 根据来源的纬度/经度对这些点进行排序的最"正确"的方法是什么?通过"正确",我不是通过方法,而是通过与原点的实际距离。当然,排序的位置是因为问题1而起作用的。

使用的技术有EF、SQL存储过程、C#。

尽管可能有更有效的方法可以做到这一点,但请仔细阅读这两篇文章,并通过一些尝试和错误。。。。

  1. 二者中提出的确定距离的公式我的问题中提到的帖子基本上是一样的。

  2. 重要的是要先将列表按大致顺序排列,以便运行根据给定的公式进行排序或排序。

  3. 第一次排序后,请重新排序,但要考虑Teasel的回答中提到的"fudge",无论是在sql中还是在代码中(我的案例C#)。

    • 同样重要的是要注意,这将始终始终只是一个近似值,永远不会精确,但你可以非常接近

最新更新