जैसा कि आपने बताया है, मोंगो वर्तमान में Point
के अलावा कुछ भी समर्थन नहीं करता है। क्या आप एक रूट बॉक्सर की अवधारणा में आ गए हैं? 1 यह Google मानचित्र पर कुछ साल पहले बहुत लोकप्रिय था। आपके द्वारा खींची गई रेखा को देखते हुए, dist(x)
के भीतर स्थित स्टॉप ढूंढें। यह लाइन में प्रत्येक बिंदु के चारों ओर बाध्यकारी बक्से की श्रृंखला बनाकर और बाल्टी के भीतर आने वाले बिंदुओं की खोज करके किया गया था।
मैंने आपके प्रश्न पर ठोकर खाई जब मुझे एहसास हुआ कि मोंगो केवल अंक के साथ काम करता है, जो मुझे लगता है कि उचित है।
मेरे पास पहले से ही कुछ विकल्प हैं कि यह कैसे करें (वे टिप्पणी में क्या कहते हैं @mnemosyn कहते हैं)। जिस डेटासेट पर मैं काम कर रहा हूं, उसके साथ यह क्लाइंट-साइड पर है, इसलिए मैं रूटबॉक्सर का उपयोग कर सकता हूं, लेकिन मैं प्रदर्शन कारणों से इसे सर्वर-साइड लागू करना चाहता हूं। यहाँ मेरी सुझाव हैं:
तोड़ LineString
अपने व्यक्तिगत में नीचे सेट समन्वय, और $near
उन में से प्रत्येक के प्रयोग करने के लिए क्वेरी, परिणामों को जोड़ सकते हैं और एक अद्वितीय सेट निकालें। अंक की संख्या को कम करके, जटिल रेखा को सरल बनाने के लिए वहां एल्गोरिदम हैं, लेकिन एक साधारण लिखना आसान है।
उपर्युक्त जैसा ही है, लेकिन संग्रहीत प्रक्रिया/फ़ंक्शन के रूप में। मैंने मोंगो के संग्रहीत कार्यों के साथ नहीं खेला है, और मुझे नहीं पता कि वे ड्राइवरों के साथ कितनी अच्छी तरह से काम करते हैं, लेकिन यह उपरोक्त पहले विकल्प से तेज़ हो सकता है क्योंकि आपको राउंडट्रिप्स नहीं करना होगा, और मशीन के आधार पर मोंगो का आपका उदाहरण (हैं) होस्ट किया गया है, गणना microseconds द्वारा तेजी से हो सकती है।
रूटबॉक्सर दृष्टिकोण सर्वर-साइड को कार्यान्वित करें (PHP में किया गया है), और उसके बाद परिणामी बाउंडिंग बॉक्स $within
स्टॉप खोजने के लिए उपर्युक्त 2 में से किसी एक का उपयोग करें। रूटबॉक्सर विधि आयताकार लौटने के बाद से हेक, इन सभी आयतों को अपने मार्ग को कवर करने वाले एक बहुभुज में विलय करना संभव होगा, और उस पर केवल $within
करें। (क्या @mnemosyn सुझाव दिया)।
संपादित करें: मैं इस के बारे में सोचा, लेकिन इसके बारे में भूल है, लेकिन यह एकत्रीकरण ढांचे का उपयोग करके उपरोक्त में से कुछ प्राप्त करने के लिए संभव हो सकता है।
यह कुछ है कि मैं जल्द ही (उम्मीद) पर काम करने जा रहा हूँ, मैं खुले स्रोत मेरी परिणाम (रों) आधारित है जिस पर मैं अंत के साथ जा रहा होगा।
संपादित करें: मैं यह है कि 1 और 2 दोष है कि आप एक लाइन है कि अलग 2 किमी कहते हैं में 2 अंक है, और अगर आप अंक कि 1 के भीतर हैं चाहते हैं उल्लेख करना होगा।आपकी लाइन के 8 किमी, आप स्पष्ट रूप से अपनी लाइन के उस हिस्से के बीच सभी बिंदुओं को याद करेंगे। समाधान इसे सरल बनाते समय आपकी रेखा पर बिंदुओं को इंजेक्ट करना है (मुझे पता है, नए लोगों को वापस जोड़ते समय अंक कम करने के उद्देश्य को धड़कता है)।
3 के साथ दोष यह है कि यह हमेशा सटीक नहीं होगा क्योंकि आपके बहुभुज के भीतर कुछ बिंदु आपकी सीमा से अधिक दूरी होने की संभावना है, हालांकि अंतर आपकी सीमा का एक महत्वपूर्ण प्रतिशत नहीं होगा।
[1]google maps utils routeboxer
स्रोत
2013-11-23 00:16:58
मुझे नहीं लगता कि संभव है है के लिए जाँच की जरूरत की सूची को कम करने के कर सकते हैं की जाँच करने के है। हालांकि, आप सड़क को 'बड़ा' कर सकते हैं और '$ बहुभुज' का उपयोग कर सकते हैं या 'पास के पास' का उपयोग कर सकते हैं और बाकी क्लाइंट-साइड कर सकते हैं या ओवरलैपिंग गोलाकारों के साथ '$ के पास 'श्रृंखला का उपयोग कर सकते हैं। – mnemosyn
क्या आप सड़क को बढ़ाते हैं और $ बहुभुज का उपयोग करते हैं? – icaro56
हाय, क्या आपको समाधान मिला? –