sql >> データベース >  >> RDS >> Oracle

Oracleの2つの緯度経度ポイント間の距離を計算します

    select sdo_geom.sdo_distance(
      sdo_geometry(2001, 4326, sdo_point_type(40.0, 10.0, null), null, null),
      sdo_geometry(2001, 4326, sdo_point_type(40.0, 11.0, null), null, null),
      0.01,
      'unit=KM'
    ) as distance
    from dual;
    
    DISTANCE
    ----------
    110.611186
    

    Oracleの計算では、 110.611186 kmが返されます。

    あなたのサイトにあるものは111.19kmを返します したがって、 580 mの差 。その違いは、オンライン計算機が球形を想定した単純な計算を使用しているためです。 オラクルは適切な楕円体を使用しますが、地球 地球の形(WGS84楕円体)。

    https://www.fai.org/page/worldで、違いを確認できます。 -距離計算機 WGS84を選択した場合 地球モデル(WGS84楕円体)の場合、Oracle(110.611186562098)と同じ結果が得られます。 FAI Sphereに変更した場合 次に、コンパレータと同じ111.19492643325476を取得します。

    正しい距離は110.611kmです。 580 mオフで計算することが重要かどうかは、アプリケーションによって異なります。短い距離(km以下など)を測定する場合、エラーはごくわずかです。しかし、長距離の場合、それは重要になる可能性があります。ここでは、ターゲットを1/2 km逃すことを意味します!

    これらの計算に正しい地球モデルを使用することの重要性を示しています。

    編集: また、Oracleの表現(およびほとんどすべてのGISツール)は経度、緯度です。 。数字を入れ替えると、非常に異なる結果が得られます。



    1. カンマ区切りの文字列をループする手順が機能しない

    2. ORIGINAL_DB_NAME()がSQLServerでどのように機能するか

    3. AzureDataStudioを使用してMacでSQLServerデータベースを復元する方法

    4. Oracleは1時間前の日付を取得します