Tôi đang cố tính khoảng cách giữa hai vị trí trên bản đồ. Tôi đã lưu trữ trong dữ liệu của mình: Kinh độ, Vĩ độ, X POS, Y POS.Tính khoảng cách giữa hai điểm (Vĩ độ, Kinh độ)
Tôi đã từng sử dụng đoạn mã dưới đây.
DECLARE @orig_lat DECIMAL
DECLARE @orig_lng DECIMAL
SET @orig_lat=53.381538 set @orig_lng=-1.463526
SELECT *,
3956 * 2 * ASIN(
SQRT(POWER(SIN((@orig_lat - abs(dest.Latitude)) * pi()/180/2), 2)
+ COS(@orig_lng * pi()/180) * COS(abs(dest.Latitude) * pi()/180)
* POWER(SIN((@orig_lng - dest.Longitude) * pi()/180/2), 2)))
AS distance
--INTO #includeDistances
FROM #orig dest
Tôi không tin tưởng vào dữ liệu sắp ra, dường như kết quả không chính xác.
Một số dữ liệu mẫu trong trường hợp bạn cần nó
Latitude Longitude Distance
53.429108 -2.500953 85.2981833133896
Ai có thể giúp tôi ra với mã của tôi, tôi không quan tâm nếu bạn muốn sửa chữa những gì tôi đã có nếu bạn có một phương pháp mới để đạt được điều này sẽ rất tuyệt.
Đề nghị ghi rõ những gì đơn vị đo lường kết quả của bạn đang ở.
Hệ thống cơ sở dữ liệu nào? – AakashM
MSSQL 2008 R2 .. – Waller
Bạn không nên chia đối số để sine bằng bổ sung/2. Ngoài ra, bạn có thể có độ chính xác hơn trong bán kính Trái đất, cũng như sử dụng một số _Datum_ được sử dụng, ví dụ:bởi hệ thống GPS (WGS-84) xấp xỉ Trái đất bởi một ellipsoid (với bán kính khác nhau tại đường xích đạo và cực) –