次の場所にポイントがあるとします。
緯度:北緯47度36分 経度:西経122度19分
上記の点を中心に、半径 35Km を描きます。現在、別の地点またはいくつかの地点があり、それらが半径 35Km 内にあるかどうかを確認したいですか? これどうやってするの?両方のポイントの座標(緯度、経度)が与えられたLinqで可能ですか?
次の場所にポイントがあるとします。
緯度:北緯47度36分 経度:西経122度19分
上記の点を中心に、半径 35Km を描きます。現在、別の地点またはいくつかの地点があり、それらが半径 35Km 内にあるかどうかを確認したいですか? これどうやってするの?両方のポイントの座標(緯度、経度)が与えられたLinqで可能ですか?
もちろん。2 つの位置 (緯度と経度の座標で構成される) の間の Haversine 距離を計算する関数があるとします。お持ちでない場合は、こちらで見つけることができます。次に、その関数を Where 句のセレクターとして使用します。LINQ to SQL を使用している場合は、Position オブジェクトにマテリアライズして、それらの Haversine 関数を LINQ to オブジェクトとして使用できるようにする必要があります。SQL への変換はありませんが、すべてのポイントを最初に返したくない場合は、おそらく同じことを行うテーブル値関数を作成できます。
var origin = new Position( 47.6, 122.3 );
var close = positions.Where( p => Haversine.Distance( origin, p, DistanceType.Km ) <= 35 );