यह गली कहाँ है, यह घर कहाँ है ... या उस क्षेत्र को कैसे निर्धारित किया जाए जिसमें उद्यम स्थित है

छवि



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



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



इस तरह के एक सरल कार्य को लागू करने के लिए, मुझे अपने दिमाग को बहुत अधिक रैक करना पड़ा। प्रारंभ में, कस्टम मानचित्रों के माध्यम से क्षेत्रों के संदर्भों को रेखांकित करने के लिए, और यैंडेक्स जियोकोडर के माध्यम से संगठनों के निर्देशांक प्राप्त करने के लिए Google-मानचित्र का उपयोग करने का विचार था। लेकिन यह विचार यूटोपियन निकला - हर कोई पूरे रूस के लिए क्षेत्रों के नक्शे नहीं बना सकता है।



एक उपयुक्त समाधान मेरे दिमाग में अचानक आया - KLADR के प्रशासनिक-क्षेत्रीय विभाजन के तैयार किए गए ठिकानों का उपयोग करने के लिए। इस डेटाबेस में रूस की बस्तियों, सड़कों और घरों की पूरी सूची है। इसके अलावा, KLADR डेटाबेस में प्रत्येक क्षेत्रीय इकाई OKATO कोड (प्रशासनिक-प्रादेशिक-प्रादेशिक डिवीजन ऑब्जेक्ट्स का ऑल-रूसी क्लासिफायरियर) शामिल है। यह ध्यान देने योग्य है कि OKATO आधार स्वयं KLADR का हिस्सा नहीं है और इसे अलग से डाउनलोड किया जाना चाहिए।



तो, जिस आधार से आप निर्धारित कर सकते हैं कि काउंटी या जिला उपलब्ध है। यह पता लगाना बाकी है कि उसके उपलब्ध पतों का मिलान कैसे किया जाए। KLADR में घरों पर डेटा को एक विशिष्ट तरीके से संग्रहीत किया जाता है: एक घर के बारे में जानकारी में कई अलग-अलग पदनाम हो सकते हैं, जैसे भवन, संरचना, समता, जिसे क्षेत्र का निर्धारण करते समय भी ध्यान में रखा जाना चाहिए। इसलिए हमें उपलब्ध पतों का विश्लेषण करने की आवश्यकता है। ऐसा करने के दो तरीके हैं:



पहला सबसे सरल और विश्वसनीय नहीं है: मौजूदा कंपनियों के पते को यैंडेक्स जियोकोडर को खिलाएं , जो पते को टुकड़ों में ले जाएगा। लेकिन इस विधि का एक बड़ा माइनस भी है - अगर किसी कारण से जियोकोडर डेटाबेस में ऐसा कोई पता नहीं है, तो यह इमारत को निर्दिष्ट स्थान के सबसे करीब लौटा देगा। या शायद कुछ भी नहीं ...

दूसरा रास्ता जेडी का रास्ता है। पता पार्सर को स्वयं लागू करें। चूंकि हमारी सेवा के लिए पता निर्धारित करने की सटीकता महत्वपूर्ण थी, इसलिए पार्सर को हमारे स्वयं के माध्यम से लागू करने का निर्णय लिया गया। सबसे सरल कार्यान्वयन उदाहरण यहाँ है । उदाहरण में, पता स्ट्रिंग को एक सरणी में पार्स किया गया है जिसकी कुंजी क्षेत्रीय इकाइयों के प्रकार हैं। उपरोक्त उदाहरण में, एक "लेकिन" है: पता पहले से ही "सही" प्रारूप में होना चाहिए। उदाहरण के लिए, पते के घर को सड़क के पीछे जाना चाहिए, न कि उसके सामने।



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



तो, स्क्रिप्ट लिखी जाती हैं, कोड मैप किए जाते हैं। परिणामस्वरूप, निम्न कार्यात्मक दिखाई दिया:



छवि



कार्यान्वित और zdanchik द्वारा वर्णित



All Articles