Rumah >pangkalan data >tutorial mysql >Bagaimanakah Jenis Data Geografi SQL Server Dapat Meningkatkan Pengiraan Jarak Antara Titik Latitud/Longitud?

Bagaimanakah Jenis Data Geografi SQL Server Dapat Meningkatkan Pengiraan Jarak Antara Titik Latitud/Longitud?

Linda Hamilton
Linda Hamiltonasal
2025-01-12 13:12:43521semak imbas

How Can SQL Server's Geography Data Type Improve Distance Calculations Between Latitude/Longitude Points?

Mengoptimumkan Pengiraan Jarak Latitud/Longitud dalam Pelayan SQL

Artikel ini meneroka kaedah yang dipertingkatkan untuk mengira jarak antara titik latitud/longitud, menangani kebimbangan ketepatan dengan pendekatan tradisional.

Batasan Kaedah Sedia Ada

Pengiraan jarak semasa selalunya bergantung pada formula Haversine, yang, walaupun berfungsi, boleh mengalami had ketepatan.

Memanfaatkan Jenis Data Geografi SQL Server

Diperkenalkan dalam SQL Server 2008, jenis data geography menawarkan penyelesaian yang unggul. Jenis data khusus ini dioptimumkan untuk data geografi dan pengiraan, memberikan kelebihan yang ketara:

  • Ketepatan Dipertingkat: geography menggunakan algoritma yang diperhalusi, menghasilkan pengiraan jarak yang lebih tepat.
  • Kod Ringkas: Kaedah STDistance membandingkan secara langsung dua geography kejadian, menghapuskan keperluan untuk formula kompleks seperti formula Haversine.

Contoh Ilustrasi menggunakan geography

Yang berikut menunjukkan pengiraan jarak antara London dan Edinburgh menggunakan geography jenis data:

<code class="language-sql">DECLARE @source geography = 'POINT(0 51.5)'
DECLARE @target geography = 'POINT(-3 56)'

SELECT @source.STDistance(@target)</code>

Ini menghasilkan jarak kira-kira 538 kilometer.

Mengintegrasikan geography dengan Struktur Data Sedia Ada

Mengekalkan struktur data semasa anda adalah mungkin sementara masih mendapat manfaat daripada ketepatan STDistance. Bina geography kejadian daripada medan latitud dan longitud sedia ada anda:

<code class="language-sql">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
FROM #orig dest</code>

Dengan menggunakan geography jenis data dan kaedah STDistance, anda mencapai ketepatan yang lebih baik dan kod diperkemas untuk pengiraan jarak geografi.

Atas ialah kandungan terperinci Bagaimanakah Jenis Data Geografi SQL Server Dapat Meningkatkan Pengiraan Jarak Antara Titik Latitud/Longitud?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn