1. ホーム
  2. java

javaで経度と緯度がわかっているときにメートル単位で距離を計算する [重複]。

2023-10-05 23:42:17

質問

重複の可能性があります。

Javaで緯度/経度の値を扱う

重複しています。

私は2つの座標によって与えられた2点間の距離を計算する必要があります。私が取り組んでいるプロジェクトは、Javaプロジェクトなので、Java-コードは素晴らしいだろうが、疑似コードも与えることができ、その後、私はそれを自分で実装することができます :)

おそらく知っているように、座標を表現する3つの方法があります。

  • 度:分:秒 (北緯 49°30'00"、西経 123°30'00"°)
  • 度:分(49°30.0', -123°30.0'), (49d30.0m,-123d30.0')
  • Decimal Degrees (49.5000°,-123.5000°), 一般に小数点以下4~6桁の数字で表示。

私の座標の与え方は3つ目なので、この値のコードが優先されるでしょう :)

どのように解決するのですか?

ベースとなるのは stackoverflowの別の質問 に基づいて、私はこのコードを得ました... これは、マイルではなく、メートルで結果を計算します :)

 public static float distFrom(float lat1, float lng1, float lat2, float lng2) {
    double earthRadius = 6371000; //meters
    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));
    float dist = (float) (earthRadius * c);

    return dist;
    }