चूंकि आप SQL Server 2008 का उपयोग कर रहे हैं, इसलिए आपके पास geography
है डेटा प्रकार उपलब्ध है, जो बिल्कुल इस प्रकार के डेटा के लिए डिज़ाइन किया गया है:
DECLARE @source geography = 'POINT(0 51.5)'
DECLARE @target geography = 'POINT(-3 56)'
SELECT @source.STDistance(@target)
देता है
----------------------
538404.100197555
(1 row(s) affected)
हमें बता दें कि यह लंदन से (निकट) एडिनबर्ग से (निकट) लगभग 538 किमी दूर है।
स्वाभाविक रूप से पहले करने के लिए सीखने की मात्रा होगी, लेकिन एक बार जब आप इसे जान लेंगे तो यह आपकी अपनी हावर्सिन गणना को लागू करने से कहीं अधिक आसान है; साथ ही आपको बहुत सारी कार्यक्षमता मिलती है।
यदि आप अपनी मौजूदा डेटा संरचना को बनाए रखना चाहते हैं, तब भी आप STDistance
. का उपयोग कर सकते हैं , उपयुक्त geography
. का निर्माण करके उदाहरण Point
. का उपयोग कर रहे हैं विधि:
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
--INTO #includeDistances
FROM #orig dest