Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Hitung jarak antara dua titik panjang lat di Oracle

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

Perhitungan Oracle mengembalikan 110,611186 km

Yang ada di situs Anda kembali 111,19 km jadi selisih 580 m . Perbedaan itu karena kalkulator online Anda menggunakan matematika sederhana dengan asumsi bola bumi, sedangkan Oracle menggunakan ellipsoidal yang tepat bentuk bumi (elipsoid WGS84).

Anda dapat melihat perbedaannya di https://www.fai.org/page/world -kalkulator-jarak Jika Anda memilih WGS84 model bumi (elipsoid WGS84) maka Anda mendapatkan hasil yang sama seperti Oracle (110.611186562098). Jika Anda mengubahnya menjadi FAI Sphere maka Anda mendapatkan 111.19492643325476, sama dengan komparator Anda.

Jarak yang benar adalah 110,611 km. Penting tidaknya menghitung dengan jarak 580 m tergantung pada aplikasi Anda. Jika Anda mengukur jarak pendek (seperti satu km atau kurang), kesalahannya dapat diabaikan. Tapi untuk jarak jauh itu bisa signifikan. Ini berarti kehilangan target sejauh 1/2 km!

Itu menunjukkan pentingnya menggunakan model bumi yang benar untuk perhitungan tersebut.

EDIT: Dan representasi Oracle (dan hampir semua alat GIS) adalah garis bujur, garis lintang . Jika Anda menukar angka, maka Anda akan mendapatkan hasil yang sangat berbeda.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. konversi xml ke oracle

  2. Oracle:Bagaimana saya bisa menentukan literal karakter dalam konversi TO_DATE?

  3. Bagaimana cara memeriksa apakah indeks sedang digunakan atau tidak di Oracle

  4. Oracle SQL:pilih dari tabel dengan tabel bersarang

  5. Oracle SQL - Jumlahkan dan kelompokkan data berdasarkan minggu