Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Mengira Jarak Antara Dua Titik Latitud/Longitud dalam Pelayan SQL?

Bagaimanakah Saya Boleh Mengira Jarak Antara Dua Titik Latitud/Longitud dalam Pelayan SQL?

Susan Sarandon
Susan Sarandonasal
2025-01-12 13:02:43152semak imbas

How Can I Calculate the Distance Between Two Latitude/Longitude Points in SQL Server?

Memanfaatkan Jenis Data Geografi SQL Server untuk Pengiraan Jarak

Menentukan jarak antara dua titik yang ditentukan oleh latitud dan longitud memerlukan pendekatan khusus. SQL Server, bermula dengan versi 2008, menawarkan geography jenis data, alat yang berkuasa untuk mengendalikan dan menganalisis maklumat geografi.

Kaedah geography::Point membina objek geography untuk setiap titik, menggunakan SRID 4326, yang sepadan dengan WGS84 (Sistem Geodetik Dunia 1984). Setelah objek ini dibuat, kaedah STDistance mengira jarak dengan cekap:

<code class="language-sql">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</code>

Ini menghasilkan jarak yang tepat dalam meter. Contohnya, data sampel yang diberikan:

<code>Latitude        Longitude     Distance 
53.429108       -2.500953     85.2981833133896</code>

Jarak yang dikira adalah kira-kira 85.3 meter, memberikan hasil yang jauh lebih tepat daripada kaedah yang lebih mudah. Oleh itu, jenis data geography merupakan penyelesaian yang teguh dan cekap untuk aplikasi geospatial dalam SQL Server, memudahkan pengiraan yang kompleks sambil meningkatkan ketepatan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengira Jarak Antara Dua Titik Latitud/Longitud dalam Pelayan SQL?. 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