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:
geography
menggunakan algoritma yang diperhalusi, menghasilkan pengiraan jarak yang lebih tepat.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!