Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

दो बिंदुओं के बीच की दूरी की गणना (अक्षांश, देशांतर)

चूंकि आप 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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर में वर्तमान तिथि कैसे प्राप्त करें

  2. SQL सर्वर में किसी पहचान कॉलम पर वर्तमान पहचान मान वापस करने के लिए IDENT_CURRENT() का उपयोग करें

  3. समग्र कुंजी के लिए विदेशी कुंजी

  4. केवल sql सर्वर पर छवि संग्रहीत करने के लिए जावास्क्रिप्ट का उपयोग करके छवि को बाइट सरणी में कैसे बदलें?

  5. एसक्यूएल में औसत को गोल करते समय मैं दशमलव कैसे प्राप्त करूं