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

时间:2014-10-28 12:36:11

标签: c# sql entity-framework

我知道在一些论坛上已经谈过这个问题,而且我发现了几种不同的方法。举例来说,this is a stackoverflow post discussing itthis is an msdn post talking about it.两者似乎都很有趣,但似乎以不同的方式为原作者完成了它。他们似乎对提供的答案感到满意,但我没有得到满意的结果(阅读:未能正确排序)

问题有两个:

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

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

  3. 使用的技术是EF,SQL存储过程,C#。

1 个答案:

答案 0 :(得分:0)

虽然可能有更有效的方法来做到这一点,仔细阅读这两篇文章并通过一些反复试验......

  1. 确定距离的公式如前所述 在我的问题中引用的帖子基本相同。

  2. 首先按顺序排列列表非常重要 根据给定的公式排序或分类。

  3. 在第一次排序后,再次对其进行排序,但要考虑到 teasel的回答中提到的“软糖”,无论是在sql还是代码中(在 我的情况,C#)。

    • 同样重要的是要注意,这总是总是 只是一个近似而且从不准确,但你可以非常接近。