2017-04-22 25 views
0

ランダムな座標(緯度と経度)の配列を持ち、特定の座標に従って距離でソートしたいと思います。誰でも助けてくれますか?私はインターネットで検索しましたが、それを見つけることができませんでした。前もって感謝します。あなたはポイントからの距離に応じてあなたのポイントをソートする必要が特定の座標の近接度に応じて座標の配列を並べ替える方法

var mapItens = ((from i in coordinatesArray 
     (latitudeCurrent > i.Latitude && ((latitudeCurrent - i.Latitude) < 0.700 || (longitudeCurrent - i.Longitude) < 0.700)) || 
     (latitudeCurrent < i.Latitude && ((i.Latitude - latitudeCurrent) < 0.700 || (i.Longitude - longitudeCurrent) < 0.700))) 
     select i).toList(); 
+0

あなたの現在のコードを投稿してください...あなたがexaclyしようとしていることを知るように – Rahul

+0

こんにちは@Rahul!あなたの返事をありがとう、私はちょうどあなたが甘いものを更新しました –

+0

私はこの[リンク](http://stackoverflow.com/a/12930598/2238515)で私の問題を解決しました –

答えて

2

:私は、それぞれがfarestに最も近いからによって座標を取得する必要があるので、私は以下のコードを使用しますが、効率的ではないのです

興味を持っている。 (ポイントiと呼ぼう)

これは、IList.Sort()関数を呼び出してIComparerを渡すことを伴います。 (https://msdn.microsoft.com/en-us/library/234b841s(v=vs.110).aspxを参照)比較者には2つの点aとbが与えられ、どれが「より大きい」かを判断するはずです。

問題の定義によれば、aとiの間の距離がbとiの間の距離より大きい場合、点aは点bよりも大きくなります。したがって、比較者はこれらの2つの距離を単純に計算し、ポイントの代わりに距離を比較します。

あなたの座標が、地球の曲率が重要となるような広い地理的領域にまたがる場合は、地理座標で与えられた2点間の距離を計算する特別な式が必要です。それは自明ではなく、一般的に人々はそのようなことをするために図書館を利用しています。

座標は、地球の曲率は関係ないことを十分に小さい地理的エリア内に限定されている場合、あなたは、単純な三角距離式を使用することができます:=((斧平方根-の

距離を - ix) +(by-iy))。

実際には正確な距離は気にしませんが、距離がどのように比較されているか分からないので、ハッキリな小さなトリックを使用して平方根を避けることができます。

関連する問題