Tôi đang cố gắng tính toán 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.
Trước đây tôi đã 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
Tuy nhiên, tôi không tin tưởng dữ liệu đến từ điều này, nó có vẻ như đưa ra kết quả hơi không chính xác.
Một số dữ liệu mẫu trong trường hợp bạn cần
Latitude Longitude Distance
53.429108 -2.500953 85.2981833133896
Ai có thể giúp tôi với mã của tôi, tôi không phiền nếu bạn muốn sửa chữa những gì tôi đã có nếu bạn có một cách mới để đạt được điều này, điều này sẽ rất tuyệt.
Vui lòng cho biết đơn vị đo lường kết quả của bạn.