2014-10-28 82 views
0

我知道这已在一些论坛中与死亡讨论过,并且我找到了几种不同的方法来实现它。举例来说,this is a stackoverflow post discussing itthis is an msdn post talking about it.两者似乎都很有趣,但似乎以不同的方式为原作者完成。他们似乎满意答案提供的,但我没有得到令人满意的结果(阅读:不是一贯正确排序)按纬度和经度排序点数/记录(按距离 - 最远离最远)

的问题是双重的:

  1. 它是更有效地在C#中后期数据整理这些检索或在SQL中通过计算从原点到使用(或其他方法)的顺序的距离?我可能最终需要根据距离原点的距离来排序3000多个位置(如经纬度和长度所示)

  2. 根据原始纬度/经度来排序这些点的最“正确”方法是什么?通过“正确”我不是通过方法,而是通过距离原点的实际距离。当然,排序的位置因问题1而发挥作用。

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

+1

你是什么意思的SQL?如果你的意思是SQLServer,那么[STDistance](http://msdn.microsoft.com/en-gb/library/bb933952.aspx)值得查找。你将需要一个几何列,它可以有一个空间索引,以加快处理,并使用ORDER BY按距离排序。这比在应用程序层中编写大量代码要好。另外,如果计算由数据库完成,则会限制返回的数据量。几何列也可以被实体框架使用。 – 2014-10-28 15:10:40

回答

0

虽然有可能做到这一点更有效的方式,仔细,并通过一些试验和错误读取两个职位....

  1. 确定距离两个 提出的公式在我的问题中引用的帖子基本上是相同的。

  2. 重要的是首先按近似顺序排列列表,然后根据给出的公式对 进行排序或排序。

  3. 第一个排序后,排序一遍,但在毛草的回答指出,无论是在SQL或代码(在 我的情况下,C#),考虑到 “忽悠”。

    • 同样重要的是要注意,这将永远永远永远仅 近似,从来没有准确的,但你可以得到非常接近。
相关问题