Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Menghitung jarak antara dua titik (Lintang, Bujur)

Karena Anda menggunakan SQL Server 2008, Anda memiliki geography tipe data yang tersedia, yang dirancang untuk jenis data ini:

DECLARE @source geography = 'POINT(0 51.5)'
DECLARE @target geography = 'POINT(-3 56)'

SELECT @source.STDistance(@target)

Memberi

----------------------
538404.100197555

(1 row(s) affected)

Memberitahu kami bahwa jaraknya sekitar 538 km dari (dekat) London ke (dekat) Edinburgh.

Tentu saja akan ada sejumlah pembelajaran yang harus dilakukan terlebih dahulu, tetapi begitu Anda mengetahuinya, itu jauh lebih mudah daripada menerapkan perhitungan Haversine Anda sendiri; plus Anda mendapatkan BANYAK fungsi.

Jika Anda ingin mempertahankan struktur data yang ada, Anda masih dapat menggunakan STDistance , dengan menyusun geography . yang sesuai instance menggunakan Point metode:

DECLARE @orig_lat DECIMAL(12, 9)
DECLARE @orig_lng DECIMAL(12, 9)
SET @orig_lat=53.381538 set @orig_lng=-1.463526

DECLARE @orig geography = geography::Point(@orig_lat, @orig_lng, 4326);

SELECT *,
    @orig.STDistance(geography::Point(dest.Latitude, dest.Longitude, 4326)) 
       AS distance
--INTO #includeDistances
FROM #orig dest


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. CONVERT() vs TRY_CONVERT di SQL Server:Apa Bedanya?

  2. Daftar Fungsi Tanggal dan Waktu di SQL Server (T-SQL)

  3. 4 Cara Mendaftar Semua Tampilan di Database SQL Server

  4. Kesalahan Umum SQL Server

  5. Batasan yang Dapat Ditangguhkan di SQL Server