2012-12-19 21 views
7

मैं फोनगैप और JQuery का उपयोग कर एक मोबाइल ऐप बना रहा हूं।डेटाबेस से समानांतरता और अक्षांश प्राप्त करना

ऐप उपयोगकर्ताओं की रेखांश और अक्षांश एकत्र करता है और उन्हें डेटाबेस (एक PHP स्क्रिप्ट - वेब सेवा का उपयोग करके) में संग्रहीत करता है, और कुछ एल्गोरिदम के साथ यह पता चलता है कि ट्रैफ़िक है या नहीं। मुझे जो चाहिए वह डेटाबेस से सभी रेखांश और अक्षांश मूल्यों को पकड़ने के लिए है जो एक दूसरे के करीब हैं, उसी सड़क/200 मीटर रेंज में कहें।

आइए कहें कि आपके पास 5 लॉन/लैट के साथ डेटाबेस में एक सूची है जो एक दूसरे के पास हैं (उसी सड़क ए में), 3 लॉन/लैट जो कुछ स्ट्रीट बी में एक-दूसरे के पास हैं, और कुछ अन्य उपयोगकर्ता यादृच्छिक रूप से अन्य सड़कों में। क्या कोई मुझे बता सकता है कि मैं एक दूसरे के निकट लोन/लैट मानों का पता कैसे लगा सकता हूं? मान जिन्हें मैं उन्हें MySQL डेटाबेस में अलग-अलग मानों के रूप में संग्रहीत कर रहा हूं, यानी अक्षांश के लिए एक क्षेत्र और अक्षांश के लिए दूसरा।

एक बार जब मैं एक दूसरे के पास लोन/लैट प्राप्त करता हूं, तो मुझे सड़क ए में उपयोगकर्ताओं के बीच केंद्र बिंदु और ट्रैफिक भीड़ के रूप में चिह्नित करने के लिए सड़क बी में उपयोगकर्ताओं को ढूंढना होगा (कुछ अन्य डिटेक्शन के आधार पर)।

+0

आपके आवेदन के पैमाने पर निर्भर करता है और यदि यह एक विकल्प है तो आप इसके बजाय पोस्टजीआईएस का उपयोग करने पर विचार करना चाहेंगे। चूंकि यह MySQL से बेहतर बेहतर समर्थन है। पोस्टजीआईएस में ऐसा करना बहुत आसान होगा http://gis.stackexchange.com/q/27878/3591 –

+0

हाय मार्क, एप्लिकेशन का स्तर बहुत बुनियादी है। हम पोस्टजीआईएस पर विचार कर रहे थे लेकिन माईएसक्यूएल का सहारा लेते थे क्योंकि हमें सस्ता था जो कि सस्ता था ... अन्यथा यह सच है कि पोस्टजीआईएस में बेहतर स्थानिक विशेषताएं हैं:/ – user1809790

उत्तर

5

आपको हावरसिन फॉर्मूला में देखना चाहिए। कृपया नीचे देखें:

SELECT id, (3959 * acos(cos(radians(37)) * cos(radians(lat)) * cos(radians(lng) - radians(-122)) + sin(radians(37)) * sin(radians(lat)))) AS distance 
FROM markers 
HAVING distance < 25 
ORDER BY distance; 

यह सभी रिकॉर्ड लौटाएगा जो इनपुट लंबी/लेट जोड़ी के 25 मील के भीतर हैं।

+0

हैविंग दूरी <25 यहां दूरस्थ शब्द - क्या यह MySQL द्वारा मान्यता प्राप्त है? कुछ समारोह या इस तरह का कुछ? – user1809790

+0

कृपया इसे उपनाम 'दूरी' बनाने में उत्तर दें –

+0

@ m4k मुझे लगता है कि उपरोक्त स्निपेट मुझे स्ट्रीट ए और स्ट्रीट बी दोनों में लंबे/लेटेगा। हालांकि दोनों के बीच अंतर करने का कोई तरीका है? मुझे जो करना होगा, वह उन बिंदुओं को प्राप्त करें जो एक-दूसरे के करीब हैं (ऊपर के रूप में), और फिर स्ट्रीट ए या बी पर सभी अंक प्राप्त करें और उनके मध्य-बिंदु को ढूंढें। – user1809790

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^