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

शहरों की तालिका से जिओलोकेशन दूरी SQL

यदि आप अपने शहरों और अपनी स्थानीय स्थिति के बीच अधिकतम दूरी को सीमित कर सकते हैं, तो इस तथ्य का लाभ उठाएं कि एक मिनट का अक्षांश (उत्तर-दक्षिण) एक समुद्री मील है।

अपनी अक्षांश तालिका पर एक अनुक्रमणिका रखें।

अपने प्रश्न में दिखाए गए हावर्सिन सूत्र से अपने आप को एक हावर्सिन (lat1, lat2, long1, long2, इकाई) संग्रहीत फ़ंक्शन बनाएं। नीचे देखें

फिर mylatitude, mylongitude, और mykm को देखते हुए ऐसा करें।

SELECT * 
  from cities a
 where :mylatitude >= a.latitude  - :mykm/111.12
   and :mylatitude <= a.latitude  + :mykm/111.12
   and haversine(:mylatitude,a.latitude,:mylongitude,a.longitude, 'KM') <= :mykm
 order by haversine(:mylatitude,a.latitude,:mylongitude,a.longitude, 'KM')

यह एक अक्षांश बाउंडिंग बॉक्स का उपयोग उन शहरों को गंभीर रूप से रद्द करने के लिए करेगा जो आपके बिंदु से बहुत दूर हैं। आपका DBMS आपके शहरों की तालिका में उन पंक्तियों को जल्दी से चुनने के लिए आपके अक्षांश सूचकांक पर एक इंडेक्स रेंज स्कैन का उपयोग करेगा, जो विचार करने योग्य हैं। फिर यह आपके हावरसाइन फ़ंक्शन को चलाएगा, जिसमें सभी साइन और कोसाइन गणित हैं, केवल उन पंक्तियों पर।

मैं अक्षांश का सुझाव देता हूं क्योंकि देशांतर की जमीनी दूरी अक्षांश के साथ बदलती रहती है।

ध्यान दें यह कच्चा है। स्टोर-फ़ाइंडर के लिए यह ठीक है, लेकिन यदि आप एक सिविल इंजीनियर हैं तो इसका उपयोग न करें -- पृथ्वी का आकार अंडाकार है और यह मान लेता है कि यह गोलाकार है।

(111.12 जादुई संख्या के बारे में क्षमा करें। यह अक्षांश की एक डिग्री में किमी की संख्या है, जो कि साठ समुद्री मील में है।)

एक व्यावहारिक दूरी समारोह के लिए यहां देखें।

यह MySQL संग्रहीत फ़ंक्शन क्वेरी में गणना करने की तुलना में भिन्न परिणाम क्यों देता है?




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL - टेबल 'my_table' को लॉक टेबल्स के साथ लॉक नहीं किया गया था

  2. Symfony2 सिद्धांत Qb STR_TO_DATE अज्ञात कार्य

  3. प्रदर्शन समस्या MySQL में शामिल हों

  4. Neo4j - Cypher . का उपयोग करके संबंध बनाएं

  5. अज्ञात प्रमाणीकरण विधि के साथ MySQL दूरस्थ कनेक्शन विफल हो जाता है