确定点是否在另一个点周围35km半径相交?可能在Linq?

时间:2010-06-02 03:35:19

标签: linq math virtual-earth

假设我在以下位置有一个观点:

纬度:47°36'N 经度:122°19'W

围绕上述点,我画了半径35公里。我现在还有几点我想知道它们是否落在35公里半径范围内?我怎样才能做到这一点? Linq是否可以给出两个点的坐标(lat,long)?

1 个答案:

答案 0 :(得分:4)

不确定。假设您有一个函数来计算两个位置之间的Haversine距离(由纬度和经度坐标组成)。如果不是,您可以找到一个here。然后只需将该函数用作Where子句中的选择器。如果使用LINQ to SQL,则需要将它们具体化为Position对象,以便您可以将Haversine函数用作对象的LINQ;没有SQL的翻译,尽管如果你真的不想先返回所有的点,你可能会创建一个表值函数来做同样的事情。

var origin = new Position( 47.6, 122.3 );
var close = positions.Where( p => Haversine.Distance( origin, p, DistanceType.Km ) <= 35 );