緯度と経度を使用した 2 点間の距離の計算
緯度と経度に基づいて 2 点間の距離を正確に計算するには、次のことが重要です。地球の表面の曲率を考慮します。よく知られた公式である Haversine 法は、この曲率に対処し、正確な結果を提供します。
Dommer のコード
Dommer のコードは、Haversine の公式を利用して距離を計算します。ただし、2 点間の高さの違いは考慮されません。
推奨される実装
高度が要素となる GPS トラックまたはアプリケーションの場合は、この修正を検討してください。実装:
public static double distance(double lat1, double lat2, double lon1,
double lon2, double el1, double el2) {
final int R = 6371; // Radius of the earth
double latDistance = Math.toRadians(lat2 - lat1);
double lonDistance = Math.toRadians(lon2 - lon1);
double a = Math.sin(latDistance / 2) * Math.sin(latDistance / 2)
Math.cos(Math.toRadians(lat1)) * Math.cos(Math.toRadians(lat2))
* Math.sin(lonDistance / 2) * Math.sin(lonDistance / 2);
double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
double distance = R * c * 1000; // convert to meters
double height = el1 - el2;
distance = Math.pow(distance, 2) Math.pow(height, 2);
return Math.sqrt(distance);
}
このコードには、ハバーサイン公式と高低差の両方が組み込まれており、2 点間の距離を正確に計算します。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3