インターネット上のどこかから次の方法を借りました。しかし、2つのGPSポイントの間の距離を見つけることは、まっすぐ進むプロセスを行っている。私は何百万というポイントを超えて走っているので、少し遅いかもしれないことを除いて、それはうまく動作します。 計算コストが安くなる方法を誰かが知っているのだろうかと思いました。2地点間の地理的距離を計算するための迅速な方法
精度は「正しい」一般的な領域にある必要がありますが、100%正確である必要はありません。
private double distFrom(double lat1, double lng1, double lat2, double lng2) {
double earthRadius = 3958.75;
double dLat = Math.toRadians(lat2-lat1);
double dLng = Math.toRadians(lng2-lng1);
double a = Math.sin(dLat/2) * Math.sin(dLat/2) +
Math.cos(Math.toRadians(lat1)) * Math.cos(Math.toRadians(lat2)) *
Math.sin(dLng/2) * Math.sin(dLng/2);
double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
return earthRadius * c;
}
}
P.s私は本当に多くの他の関連する質問を見つけましたが、実際には私のスピードの懸念に焦点を当てていません。
どのような距離を使用していますか?典型的な使い方は、すべてのXをYに近づけることです。これがあなたに当てはまる場合は、バウンディングボックスアプローチを使用して計算を数百万から数十に制限することを検討する必要があります。たとえば、5マイル以内で最も近い食料品店を探してください。私の家からカリフォルニアやアラスカの店までの距離を計算する必要はありません。 –