अब अधिक से अधिक मोबाइल एप्लिकेशन भू-निर्भर बन रहे हैं। कुछ बस उपयोगकर्ता के स्थान के ज्ञान के बिना कोई मतलब नहीं रखते हैं, अन्य उसके साथ अधिक सुविधाजनक हो जाते हैं। ये तथाकथित स्थान आधारित सेवाएं (एलबीएस) हैं: नेविगेटर, फोर्स स्क्वेयर, जियोटैग्ड फोटो के साथ इंस्टाग्राम और यहां तक कि रिमाइंडर एप्लिकेशन जो एक विशिष्ट स्थान के पास काम करते हैं, उदाहरण के लिए, एक कार्यालय या स्टोर के पास।
यांडेक्स सेवाओं और अनुप्रयोगों के लिए, हमने जीपीएस के बिना स्थान निर्धारित करने के लिए एक विधि का अपना कार्यान्वयन बनाया है -
यैंडेक्स ।
लोकेटर । यह उपयोगकर्ता का समय बचाता है और हमारे अनुप्रयोगों को थोड़ा स्मार्ट बनाता है। नेविगेटर और मैप्स में, यह मार्ग के शुरुआती बिंदु में प्रवेश करने की आवश्यकता को समाप्त करता है, भले ही आप एक कवर किए गए पार्किंग स्थल में हों। और जब किनोफिश या मोबाइल मार्केट में एक उत्पाद चुनते हैं, तो यह तुरंत दिखाने में मदद करता है कि उन्हें शहर के अपने क्षेत्र में कहां ढूंढना है। ठीक है, निश्चित रूप से, जब कैफे और एटीएम की खोज करते हैं - यह आपको तुरंत मेट्रो में दिखाने के लिए अनुमति देता है, भले ही आप मेट्रो में हों।

हमने
बहुत पहले एक फ्री एपीआई के रूप में तकनीक की
खोज की थी । आज हम बताना चाहते हैं कि इसकी व्यवस्था कैसे की जाती है।
बिना GPS के क्यों और कैसे
हमारे मामले में GPS नेविगेशन सिस्टम (
GNSS ), GPS और GLONASS, आज तक की सबसे सटीक भू-निर्धारण विधि है। संबंधित मॉड्यूल लगभग सभी आधुनिक स्मार्टफ़ोन में हैं। लेकिन हमेशा नहीं और हर जगह वह एलबीएस की समस्याओं को हल नहीं कर सकता है।
सबसे पहले, उपग्रहों की खोज में कभी-कभी कई मिनट लग जाते हैं, और ऐसी परिस्थितियां होती हैं जिनमें सटीकता की हानि के साथ भी निर्धारण की गति महत्वपूर्ण होती है। उदाहरण के लिए, जब आपको नाविक में प्रारंभिक मार्ग बनाने की आवश्यकता होती है या
चेक-इन किया जाता है । दूसरे, उपग्रह आमतौर पर "दृश्यमान" या भूमिगत नहीं होते हैं। तीसरा, हर मोबाइल फोन या टैबलेट में जीपीएस मॉड्यूल नहीं होते हैं, और वे लैपटॉप में लगभग अनुपस्थित होते हैं। यानी एलबीएस को विकल्प की जरूरत है।
और निश्चित रूप से, विकल्प हैं - आप निकटतम जीएसएम टॉवर, वाई-फाई नेटवर्क और यहां तक कि आईपी पते द्वारा स्थान निर्धारित कर सकते हैं। इनमें से प्रत्येक विधि की सटीकता जीपीएस की तुलना में बहुत खराब है। लेकिन अगर आप उन्हें जोड़ते हैं, तो एक साथ वे एक स्वीकार्य गुणवत्ता देंगे। उसी समय, एक की कुछ कमियों को दूसरे की क्षमताओं द्वारा बेअसर कर दिया जाता है। जीएसएम टॉवर लगभग हर जगह हैं, लेकिन वाई-फाई नेटवर्क नहीं हैं। इसी समय, वाई-फाई सटीकता बेहतर है। इसलिए, पूर्णता और सटीकता के संदर्भ में संयुक्त विधि प्रत्येक व्यक्तिगत रूप से बेहतर है। कम प्रसिद्ध तथ्य यह है कि शहर के विभिन्न हिस्सों में दो राउटर एक ही मैक पते हो सकते हैं। जीएसएम और वाई-फाई का संयोजन ऐसे टकरावों को हल करता है। सबसे अधिक संभावना है, इन राउटरों के बगल में अलग-अलग पहचानकर्ताओं के साथ टॉवर होंगे - आखिरकार, तिमाही के भीतर संयोग की संभावना पूरे शहर के पैमाने से बहुत कम है।
दुनिया में भू-निर्धारण की ऐसी संयुक्त विधि के कई कार्यान्वयन हैं। और ऐसा लगता है कि पहला सवाल जो सभी डेवलपर्स का सामना करना पड़ा, वह वाई-फाई नेटवर्क और सेल टावरों के स्थान के बारे में जानकारी प्राप्त करने के लिए था।
नेटवर्क लोकेशन बेस
"खरीदने या बनाने" की दुविधा में, हमने अंततः बाद को प्राथमिकता दी। मुख्य कारण यह है कि आपके स्वयं के डेटा और एल्गोरिदम के साथ परिणाम की गुणवत्ता को नियंत्रित करना बहुत आसान है। जानकारी एकत्र करने में, हमें मोबाइल Yandex.Maps के उपयोगकर्ताओं द्वारा मदद की गई।
जब हमने अक्षांश विकसित करना शुरू किया, तो पहले से ही यैंडेक्स के साथ शहर की सड़कों पर सैकड़ों हजारों लोग थे। उनके फोन में चालू थे। उपयोगकर्ता की सहमति से, एप्लिकेशन लगातार अपने जीपीएस निर्देशांक को प्रसारित करता है - Yandex.Tracks इस जानकारी के आधार पर बनाया गया है। हमने सोचा कि इसके साथ ही, अनुप्रयोग यह नोट कर सकता है कि इन निर्देशांकों में टेलीफ़ोन किस बेस स्टेशन पर परोसा गया है, जो वाई-फाई नेटवर्क दिखाई दे रहे हैं (जबकि, निश्चित रूप से, स्वयं नेटवर्क से कनेक्ट नहीं हो रहे हैं - ताकि गोपनीयता जोखिम पैदा न हो)।
एक व्यक्ति को विशेष रूप से ऐसी भीड़ में भाग लेने के लिए कुछ भी करने की आवश्यकता नहीं है - बस आवेदन का उपयोग करें। साथ ही साथ निर्देशांक, आसपास के वाई-फाई नेटवर्क और जीएसएम स्टेशनों पर डेटा को अज्ञात किया जाता है। वे व्यावहारिक रूप से कुछ भी "वजन" नहीं करते हैं, और उनके स्थानांतरण से बैटरी, तदनुसार, तेजी से नाली नहीं करती है।
इस प्रकार, उपयोगकर्ता एक दूसरे की मदद करने लगे:

कुछ, फोन में एक जीपीएस-रिसीवर के साथ, नेटवर्क के सटीक स्थान का पता लगाते हैं और यांडेक्स को जानकारी प्रसारित करते हैं। अन्य जिनके पास GPS मॉड्यूल नहीं हैं, वे इस समय देखे जाने वाले नेटवर्क की एक सूची भेजते हैं और प्रतिक्रिया में मानचित्र पर अपना अनुमानित स्थान प्राप्त करते हैं।
आधार को इकट्ठा और नियमित रूप से अपडेट किया जाता है। और यहाँ हम निम्नलिखित समस्या का सामना कर रहे हैं।
"चल रहा है" नेटवर्क
अनुभव से पता चलता है कि सेल टावरों के पहचानकर्ता लगातार बदल रहे हैं - कल शहर के केंद्र में जो संख्या थी वह कल सरहद पर हो सकती है। वाई-फाई राउटर भी अपने मालिकों के साथ मिलकर आगे बढ़ सकते हैं। और यह पता चला है कि प्रत्येक कदम के साथ आपको डेटा के एक महत्वपूर्ण हिस्से को अमान्य करने की आवश्यकता है।
यहाँ बताया गया है कि हम एक साथ टावरों और राउटरों को स्थानांतरित करने के साथ समस्याओं को हल करने में कैसे कामयाब रहे। उपयोगकर्ता डेटा के साथ एक स्थान अनुरोध प्राप्त करता है जिसके बारे में वह देखता है कि कौन से नेटवर्क हैं। यदि नेटवर्क की सूची में वह है जो शहर के विभिन्न हिस्सों में देखा गया था, तो एल्गोरिथ्म यह ध्यान में रखता है कि इसमें से कितने संकेत प्रत्येक क्षेत्र और उत्तरार्द्ध की आयु में संचित हैं। वाई-फाई नेटवर्क या सेल टॉवर से संकेतों के प्रत्येक घने क्लस्टर को हम "क्लाउड" कहते हैं। क्लाउड में जितने अधिक सिग्नल और वे जितने फ्रेश होंगे, वह उतना ही भरोसेमंद होता है। जवाब होगा, तदनुसार, सबसे बड़ा और सबसे ताज़ा। और हम उस क्लाउड पर विचार करते हैं, जिसमें एक महीने से अधिक के लिए कोई संकेत नहीं है, अप्रचलित होने के लिए - भले ही किसी अन्य क्षेत्र में इस नेटवर्क के लिए कोई और अधिक क्लाउड न हो।
मेघ त्रिज्या
चूंकि स्थिति लगभग निर्धारित होती है, इसलिए बिंदु को दिखाना असंभव है - आपको एक सर्कल खींचने की आवश्यकता है (क्योंकि हस्तक्षेप की अनुपस्थिति में रेडियो सिग्नल सभी दिशाओं में समान रूप से वितरित किया जाता है)। यद्यपि, यदि आप संकेतों की वास्तविक तस्वीर को देखते हैं, तो अक्सर यह एक दीर्घवृत्त है। सब के बाद, मोटर चालक सबसे अधिक मोबाइल कार्ड का उपयोग करते हैं। उनके जीपीएस ट्रैक सड़कों पर बने हुए हैं, और व्यावहारिक रूप से कोई संकेत यार्ड से और विशेष रूप से इमारतों से नहीं आते हैं।

उत्तर बेहद सटीक होने के लिए, वृत्त की त्रिज्या न्यूनतम होनी चाहिए। यदि आप किसी विशेष नेटवर्क के सभी संकेत बिंदुओं के चारों ओर चक्कर लगाते हैं, तो त्रिज्या बहुत बड़ी हो जाएगी। मैट ने इसे कम करने में मदद की। सांख्यिकी। सिग्नल घनत्व सामान्य वितरण के अधीन है, अर्थात्
तीन सिग्मा नियम लागू होते हैं। 99.7% अंक इस तरह के दायरे में आते हैं।


हमने आगे जाने का फैसला किया और प्रयोगात्मक रूप से एक सिग्मा गुणांक का चयन किया जिसने त्रिज्या को यथासंभव कम कर दिया, लेकिन स्वीकार्य सटीकता को बनाए रखा। यह सफल रहा, क्योंकि ज्यादातर मामलों में उपयोगकर्ता कई नेटवर्क देखता है। यही है, गुणांक के गुणांक में कमी से "खोजे गए" क्षेत्र अन्य बादलों द्वारा सबसे अधिक संभावना है।
बादल के संकेत
दुर्भाग्य से, उपयोगकर्ताओं से सभी जीपीएस सिग्नल बादलों में संकलित नहीं होते हैं। यह पता चला है कि, यदि "इलिप्स" के अलावा, किसी एकल नेटवर्क के सभी सिग्नल नक्शे पर अंकित किए गए थे, तो उस पर अंक और रेखाएँ दिखाई देंगी। ये क्रमशः एकल सिग्नल हैं, जो एक ही नेटवर्क के सिग्नलों के संचय से बहुत दूर हैं, और बहुत लंबे जीपीएस ट्रैक (यानी जीपीएस सिग्नल की चेन)।

"लोनर्स" दिखाई देते हैं, उदाहरण के लिए, जब कोई व्यक्ति मेट्रो पर चलता है। फोन एक स्टेशन पर सेल के साथ संपर्क खो देता है, और जब यह दूसरे पर जाता है, तो यह अभी भी मानता है कि यह उस सेल द्वारा सेवा की जा रही है। लोकेटर ऐसे सिग्नल्स को फिल्टर करता है। इसके अलावा, हम बादलों के लिए न्यूनतम सीमा निर्धारित करते हैं ताकि बहुत कम सिग्नल क्लस्टर पर भरोसा न किया जा सके।
उदाहरण के लिए, लंबे जीपीएस ट्रैक दिखाई देते हैं, जब कोई व्यक्ति शहर से कार से यात्रा करता है। फोन रूट की शुरुआत से टॉवर पहचानकर्ता को "ड्रग्स" करता है और रिपोर्ट करता है कि यह इसे सभी तरह से देखता है। यह ज्ञात है कि बेस स्टेशनों की एक सीमित सीमा होती है, इसलिए लोकेटर ऐसे जीपीएस ट्रैकों को भी फ़िल्टर करता है। ऐसे ट्रैक जिनकी लंबाई टॉवर की सीमा के भीतर है। एक नियम के रूप में, वे उन क्षेत्रों में ध्यान देने योग्य हैं जहां बहुत कम डेटा है। वहां वे छोटे बादलों की एक श्रृंखला बन जाते हैं।
सिंगल सिग्नल, छोटे बादल और लंबे ट्रैक जिन्हें हम "शोर" मानते हैं। जब उपयोगकर्ता एक एकल नेटवर्क देखता है जिसके लिए हम केवल ऐसे संकेतों को जानते हैं, तो उसे एक प्रतिक्रिया मिलती है कि स्थान निर्धारित नहीं किया जा सकता है। हम इसे एक परिणाम देने की तुलना में अधिक सही मानते हैं जो हमें पता है कि गलत है।
जब थोड़ा डेटा जमा हुआ था, तो सभी संकेतों को एक क्लाउड में संयोजित करने के साथ एक और कठिनाई थी। ऐसा हुआ कि एक शहर से दूसरे टावर से सिग्नल भी आए। जीएसएम नेटवर्क के पहचानकर्ताओं में एक स्थान क्षेत्र कोड की उपस्थिति - LAC (स्थान क्षेत्र कोड) ने हमारी मदद की। चूंकि समान कोड वाले टॉवर मानक के पास होने चाहिए, जो कि "शहर से बाहर" (यानी एक अलग एलएसी के साथ बादलों के बीच) बादल थे, लोकेटर ने कम वजन देना शुरू कर दिया।

दृढ़ संकल्प की सटीकता में सुधार ...
... जीएसएम नेटवर्क पर
एक बार, केवल एक बेस स्टेशन के बारे में जानकारी अनुप्रयोगों के लिए उपलब्ध थी, हालांकि फोन सबसे अधिक बार कई देखता है। एंड्रॉइड प्लेटफॉर्म के आगमन के बाद, एप्लिकेशन
उन सभी को देखने में सक्षम थे (3 जी मानक से कनेक्ट करने के लिए छोड़कर, जो आपको केवल एक सेल टॉवर को पहचानने की अनुमति देता है)। स्थान अधिक सटीक रूप से निर्धारित होना शुरू हुआ - एक बादल से नहीं, बल्कि कई के संयोजन से। यह पता चला कि कई बादलों के लिए, आप एक के लिए एक ही दृष्टिकोण का उपयोग कर सकते हैं। त्रिज्या की गणना बादलों के सेट में शामिल संकेतों के मानक विचलन द्वारा की जाती है, और केंद्र की गणना उनके निर्देशांक के औसत से की जाती है।
... वाई-फाई नेटवर्क पर
जब कोई स्मार्टफोन कई वाई-फाई नेटवर्क की सीमा के भीतर होता है, तो यह न केवल उनकी सूची, बल्कि प्रत्येक की सिग्नल शक्ति की रिपोर्ट कर सकता है। हमने इस शक्ति के बारे में ज्ञान का उपयोग उस सर्कल के केंद्र को स्पष्ट करने के लिए किया जिसमें उपयोगकर्ता स्थित है। हमने मनाया बादलों के केंद्रों को काल्पनिक स्प्रिंग्स को निलंबित करना शुरू कर दिया - तंग, सिग्नल जितना मजबूत। और उनके मुक्त अंत - कनेक्ट करने के लिए। जिस बिंदु पर ये स्प्रिंग्स संतुलित हैं, वह परिष्कृत केंद्र है।

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

इस तकनीक का उपयोग करते हुए, हमें निम्नलिखित नंबर मिले:
- प्रति दिन 83% अनुरोधों के लिए, स्थान सही ढंग से निर्धारित किया जाता है - डिवाइस के जीपीएस निर्देशांक अक्षांश नामक क्षेत्र में हैं
- 14% सिग्नल - एक त्रुटि के साथ:
- 7% - 100 मीटर से कम त्रुटि
- 5.6% - 100 मीटर से कई किलोमीटर तक
- 1.4% - लोकेटर शहर द्वारा गलत है
- शेष 3% अनुरोधों को एक प्रतिक्रिया मिली "स्थान नहीं मिला"


क्या बेहतर गुणवत्ता हासिल करना संभव है? हां। विधि का लाभ यह है कि एल्गोरिदम की एक निश्चित परिपक्वता के साथ, स्थान को अधिक सटीक रूप से निर्धारित करने के लिए अधिक डेटा एकत्र करने के लिए पर्याप्त है। और यह काफी आसान है, क्योंकि वाई-फाई नेटवर्क की संख्या और हमारे अनुप्रयोगों के उपयोगकर्ताओं की संख्या बढ़ रही है।
लेकिन तकनीकी सीमाएँ हैं:
- यदि फोन केवल एक जीएसएम टॉवर की रिपोर्ट करता है, तो शहर में न्यूनतम त्रिज्या कई सौ मीटर और शहर के बाहर कई किलोमीटर होगी
- यदि फोन कई टॉवर देखता है - केंद्र को अधिक सटीक रूप से निर्धारित किया जा सकता है, लेकिन यह संभावना नहीं है कि त्रिज्या को कम करना संभव होगा
- यदि वाई-फाई नेटवर्क दिखाई देता है - न्यूनतम त्रिज्या 10 मीटर होगी
कम्प्यूटिंग का स्कोप
उपयोगकर्ता को जल्दी से जवाब देने के लिए, आपको पूरे उत्तर को पहले से तैयार करने की आवश्यकता है, या कम से कम पर्याप्त भाग। हर रात, हमारे वितरित कंप्यूटिंग सिस्टम पर आधारित एक क्लस्टर
YAMR एकत्रीकरण संकेतों को कल तक प्राप्त करता है, जो एक उत्तर के लिए "क्लाउड" प्राप्त करता है। अनुरोध के समय, अक्षांश केवल उन्हें सही ढंग से संयोजित कर सकता है। तो "कच्चे संकेतों" के टेराबाइट्स को तैयार किए गए उत्तरों के 1.5-2 जीबी तक संकुचित किया गया था, जो आसानी से मेमोरी में संग्रहीत होते हैं। और प्रतिक्रिया की तैयारी लगभग हमेशा 1 एमएस में फिट होती है, और क्लस्टर में प्रत्येक सर्वर 10 हजार आरपीएस के साथ होता है।
और इसलिए कि दैनिक गणना की अवधि जीपीएस संकेतों के बढ़ते इतिहास के साथ रैखिक रूप से विकसित नहीं होती है, हमने बादलों की "संवेदनशीलता" हासिल की है। अब प्रत्येक क्लाउड के लिए केवल कुछ संकेतक संग्रहीत करना पर्याप्त है, और आपको हर दिन पूरे पुराने इतिहास को फिर से संसाधित करने की आवश्यकता नहीं है।
अधिक पूर्ण उत्तर तैयार करना अप्रभावी है। यदि आप नेटवर्क के प्रत्येक संयोजन को एक अलग क्लाउड में क्लस्टर करते हैं, तो आपको एक दहनशील विस्फोट मिलता है। तैयार किए गए उत्तरों की मात्रा परिमाण के कई आदेशों से बढ़ती है, और नेटवर्क के आंशिक संयोग के साथ, उत्तर तैयार करने के लिए और भी अधिक गणनाओं की आवश्यकता होती है।
एनालॉग
यैंडेक्स में न केवल जीपीएस के बिना स्थान सेवाएं हैं, जैसा कि हमने पहले ही कहा है। डेवलपर्स एक वाणिज्यिक प्रदाता (जैसे रूस में
अल्टरगेओ और दुनिया में
स्काईहुक वायरलेस ) से संपर्क कर सकते हैं, या मोबाइल प्लेटफ़ॉर्म या ब्राउज़र के एपीआई का उपयोग कर सकते हैं।
सामान्य तौर पर, इस तरह के आधार के निर्माण के तीन तरीके हैं:
- नेटवर्क द्वारा रुचि के शहरों की यात्रा करने के लिए, स्कैनिंग नेटवर्क, और फिर समय-समय पर डेटाबेस को अपडेट करने के लिए फिर से घूमें
- एक सामूहिक मोबाइल एप्लिकेशन बनाएं (उदाहरण के लिए, Yandex.Maps)
- मोबाइल प्लेटफ़ॉर्म बनाएं (उदा। iOS या Android)
लेकिन केवल भू-निर्भर एप्लिकेशन के डेवलपर को विभिन्न विकल्पों के बीच चयन करना पड़ता है, और उपयोगकर्ता इस विकल्प के साथ "रहता है"। तुलना के लिए एकीकृत पद्धति की अनुपस्थिति में, ब्याज के क्षेत्रों में निर्धारण की सटीकता ("सहिष्णुता" और त्रुटियों के प्रतिशत) की सटीकता पर ध्यान दिया जाना चाहिए।
सच है, डेवलपर हमेशा नहीं चुन सकता है। IOS और WindowsMobile पर, एक एप्लिकेशन केवल ऑपरेटिंग सिस्टम में निर्मित जियो-डिटेक्शन सुविधाओं का उपयोग कर सकता है। एप्लिकेशन में वर्तमान बेस स्टेशन और / या मौजूदा नेटवर्क को छोड़कर वाईफाई नेटवर्क की सूची नहीं है।
वेब सेवाओं में एक और स्थिति। सभी आधुनिक ब्राउज़रों में एक अंतर्निहित
जियोलोकेशन एपीआई है । और ब्राउज़र को बदलते हुए, उपयोगकर्ता भू-लोकेटर को बदलता है। फ़ायरफ़ॉक्स और गूगल क्रोम Google कार्यान्वयन का उपयोग करते हैं, सफारी ऐप्पल का उपयोग करते हैं, आईई माइक्रोसॉफ्ट का उपयोग करते हैं। हमारा अक्षांश
यैंडेक्स ब्राउज़र में काम करता
है ।