विषयसूची:

OpenStreetMap का उपयोग करके कस्टम शैलीबद्ध मानचित्र कैसे बनाएं: 7 चरण (चित्रों के साथ)
OpenStreetMap का उपयोग करके कस्टम शैलीबद्ध मानचित्र कैसे बनाएं: 7 चरण (चित्रों के साथ)

वीडियो: OpenStreetMap का उपयोग करके कस्टम शैलीबद्ध मानचित्र कैसे बनाएं: 7 चरण (चित्रों के साथ)

वीडियो: OpenStreetMap का उपयोग करके कस्टम शैलीबद्ध मानचित्र कैसे बनाएं: 7 चरण (चित्रों के साथ)
वीडियो: Inkscape Map Art Tutorial: How to Make Custom Stylized Maps with Free OpenStreetMap Data 2024, जुलाई
Anonim
OpenStreetMap का उपयोग करके कस्टम शैलीबद्ध मानचित्र कैसे बनाएं
OpenStreetMap का उपयोग करके कस्टम शैलीबद्ध मानचित्र कैसे बनाएं

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

निम्नलिखित वीडियो इस बात पर प्रकाश डालता है कि मैं व्यक्तिगत रूप से कैसे शैलीबद्ध मानचित्र बनाता हूं, लेकिन अंतरंग विवरण के लिए पढ़ना जारी रखता हूं। मैं यह देखने के लिए बहुत उत्साहित हूं कि समुदाय क्या बनाता है!

इस परियोजना के पीछे मेरी प्रेरणा क्या है?

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

इस निर्देश को लिखने में मेरी प्रेरणा इस तथ्य के कारण है कि मुझे खरोंच से अपने स्वयं के शैलीबद्ध मानचित्र बनाने के तरीके के बारे में बहुत कम जानकारी मिली। मैंने जो सीखा है उसे समुदाय के साथ साझा करने की आशा करता हूं।

संसाधन/लिंक:

  • OpenStreetMap
  • OpenStreetMap कानूनी
  • जीथब रिपोजिटरी

आपूर्ति

  • एक पायथन वितरण (मैंने एनाकोंडा और पायथन 3.6 का इस्तेमाल किया)
  • PyQt5 (GUI निर्भरता के लिए)

चरण 1: प्रक्रिया को परिभाषित करना I: OSM फ़ाइल डाउनलोड करना

प्रक्रिया I को परिभाषित करना: OSM फ़ाइल डाउनलोड करना
प्रक्रिया I को परिभाषित करना: OSM फ़ाइल डाउनलोड करना

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

सौभाग्य से, OpenStreetMap (OSM) की मेरी खोज पर मेरी निराशा अल्पकालिक थी। OSM एक सहयोगी परियोजना है जिसमें दुनिया भर के लोग डेटा का योगदान करते हैं। OSM स्पष्ट रूप से ओपन सोर्स सॉफ्टवेयर के नाम पर अपने डेटा के ओपन-एंडेड उपयोग की अनुमति देता है। जैसे, OSM वेबपेज पर जाकर मैप स्टाइलिंग यात्रा शुरू होती है।

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

नोट # 1: यदि आपके चयनित क्षेत्र में बहुत अधिक डेटा है, तो आपको एक त्रुटि मिलेगी कि आपने बहुत अधिक नोड्स का चयन किया है। यदि आपके साथ ऐसा होता है, तो अपनी बड़ी फ़ाइल डाउनलोड करने के लिए "ओवरपास एपीआई" बटन पर क्लिक करें।

नोट #2: यदि आपकी डाउनलोड की गई OSM फ़ाइल 30MB से बड़ी है, तो मेरे द्वारा लिखा गया पायथन प्रोग्राम काफ़ी धीमा होगा। यदि आप एक बड़े क्षेत्र का उपयोग करने के लिए दृढ़ हैं, तो उस अतिरिक्त डेटा को फेंकने के लिए एक स्क्रिप्ट लिखने पर विचार करें जिसे आप आकर्षित करने की योजना नहीं बना रहे हैं।

चरण 2: प्रक्रिया को परिभाषित करना II: डेटा को समझना

प्रक्रिया II को परिभाषित करना: डेटा को समझना
प्रक्रिया II को परिभाषित करना: डेटा को समझना
प्रक्रिया II को परिभाषित करना: डेटा को समझना
प्रक्रिया II को परिभाषित करना: डेटा को समझना
प्रक्रिया II को परिभाषित करना: डेटा को समझना
प्रक्रिया II को परिभाषित करना: डेटा को समझना
प्रक्रिया II को परिभाषित करना: डेटा को समझना
प्रक्रिया II को परिभाषित करना: डेटा को समझना

"मेरे पास डेटा है…अब क्या?"

अपनी डाउनलोड की गई OSM फाइल को अपने पसंदीदा टेक्स्ट एडिटिंग सॉफ्टवेयर में खोलकर शुरुआत करें। आप सबसे पहले देखेंगे कि यह एक XML फ़ाइल है, जो बहुत अच्छी है! एक्सएमएल पार्स करने के लिए काफी आसान है। आपकी फ़ाइल की शुरुआत इस चरण की पहली तस्वीर के लगभग समान दिखनी चाहिए - कुछ बुनियादी मेटाडेटा और भौगोलिक सीमाएं सूचीबद्ध की जाएंगी।

जैसे ही आप फ़ाइल को स्क्रॉल करते हैं, आप देखेंगे कि तीन डेटा तत्वों का उपयोग किया गया है:

  1. नोड्स
  2. तरीके
  3. रिश्ते

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

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

अंत में, संबंध तरीकों का संग्रह हैं। एक संबंध छेद या कई क्षेत्रों के साथ एक जटिल आकार का प्रतिनिधित्व कर सकता है। संबंधों की एक विशिष्ट पहचानकर्ता भी होगी और उन्हें इसी तरह से टैग किया जाएगा।

आप OSM विकि से इन डेटा तत्वों के बारे में अधिक पढ़ सकते हैं:

  • नोड्स
  • तरीके
  • रिश्ते

चरण 3: प्रक्रिया को परिभाषित करना III: डेटा को पचाना

प्रक्रिया III को परिभाषित करना: डेटा को पचाना
प्रक्रिया III को परिभाषित करना: डेटा को पचाना

अब आपको OSM फ़ाइल बनाने वाले डेटा तत्वों की कम से कम सतही समझ होनी चाहिए। इस समय, हम आपकी पसंद की भाषा का उपयोग करके OSM डेटा को पढ़ने में रुचि रखते हैं। हालांकि यह चरण पायथन-केंद्रित है, यदि आप पायथन का उपयोग नहीं करना चाहते हैं, तो भी आपको इस भाग को पढ़ना चाहिए क्योंकि इसमें कुछ टिप्स और ट्रिक्स हैं।

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

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

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

नोट: मेरे कोड में, स्क्रीन निर्देशांक (0, 0) स्क्रीन के ऊपरी बाएँ कोने में है।

चरण 4: पायथन मानचित्र स्टाइलाइज़र कार्यान्वयन

पायथन मानचित्र स्टाइलाइज़र कार्यान्वयन
पायथन मानचित्र स्टाइलाइज़र कार्यान्वयन
पायथन मानचित्र स्टाइलाइज़र कार्यान्वयन
पायथन मानचित्र स्टाइलाइज़र कार्यान्वयन
पायथन मानचित्र स्टाइलाइज़र कार्यान्वयन
पायथन मानचित्र स्टाइलाइज़र कार्यान्वयन

इस बिंदु तक, मैंने OSM डेटा फ़ाइल पर चर्चा की है - यह क्या है, इसे कैसे पढ़ा जाए, और इसके साथ क्या किया जाए। अब मैं उस सॉफ़्टवेयर पर चर्चा करूँगा जिसे मैंने शैलीगत मानचित्र विज़ुअलाइज़ेशन (परिचय में प्रदान किया गया GitHub रेपो) से निपटने के लिए लिखा था।

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

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

चरण 5: कार्यान्वयन दोष + समाधान

कार्यान्वयन दोष + समाधान
कार्यान्वयन दोष + समाधान
कार्यान्वयन दोष + समाधान
कार्यान्वयन दोष + समाधान

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

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

एक उदाहरण स्क्रिप्ट ऊपर की छवि में है। दूसरी छवि एक नमूना है कि सहायक कार्य कैसा दिखेगा, और चूंकि वे मूल रूप से सभी समान हैं, बस अलग-अलग स्थिरांक के साथ, मैंने केवल एक उदाहरण की एक तस्वीर शामिल की है।

चरण 6: सुधार के क्षेत्र

सुधार की आवश्यकतावाले क्षेत्र
सुधार की आवश्यकतावाले क्षेत्र

अपने सॉफ़्टवेयर कार्यान्वयन पर विचार करने के बाद, मैंने ऐसे कई क्षेत्रों की पहचान की है जो बिजली उपयोगकर्ताओं के लिए सहायक सुधार होंगे।

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

चरण 7: समापन विचार

समापन विचार
समापन विचार
समापन विचार
समापन विचार
समापन विचार
समापन विचार

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

OpenStreetMap योगदानकर्ताओं के लिए विशेष धन्यवाद! उनके महत्वपूर्ण प्रयासों के बिना इस तरह की परियोजनाएं संभव नहीं होंगी।

कृपया मुझे बताएं कि क्या आपके पास टिप्पणियों में कोई प्रश्न है!

मानचित्र चुनौती
मानचित्र चुनौती
मानचित्र चुनौती
मानचित्र चुनौती

मैप्स चैलेंज में उपविजेता

सिफारिश की: