9 पॉइंट द्वारा GN⁺ 2026-01-19 | 3 टिप्पणियां | WhatsApp पर शेयर करें
  • दुनिया भर के शहरों के नक्शों को मिनिमल आर्ट पोस्टर के रूप में बनाने वाला Python-आधारित ओपन सोर्स टूल
  • OpenStreetMap(OSMnx) डेटा का उपयोग करके सड़कों, जलमार्गों, पार्कों जैसी भौगोलिक विशेषताओं को विज़ुअलाइज़ करता है, और matplotlib से रेंडर करता है
  • 17 तरह के थीम स्टाइल (जैसे: neon_cyberpunk, blueprint, japanese_ink) देता है, और JSON फ़ाइलों के जरिए कस्टम थीम जोड़ने की सुविधा भी है
  • कमांड लाइन से शहर का नाम, देश का नाम, radius और theme देकर अपने-आप पोस्टर बनाता और सेव करता है
  • डिज़ाइन और डेटा विज़ुअलाइज़ेशन के संयोजन के जरिए डेवलपर और डिज़ाइनर शहरों की संरचना को कलात्मक तरीके से एक्सप्लोर कर सकते हैं

परियोजना अवलोकन

  • MapToPoster एक Python स्क्रिप्ट है जो उपयोगकर्ता द्वारा चुने गए शहर के नक्शे के आधार पर मिनिमल डिज़ाइन पोस्टर बनाती है
    • बना हुआ पोस्टर अपने-आप posters/ डायरेक्टरी में सेव हो जाता है
    • MIT लाइसेंस के तहत जारी होने के कारण इसे स्वतंत्र रूप से संशोधित और वितरित किया जा सकता है
  • रिपॉज़िटरी पर लगभग 2.7k Star और 164 Fork हैं

मुख्य फीचर

  • कमांड-लाइन इंटरफ़ेस (CLI) के जरिए शहर का नाम (--city), देश का नाम (--country), theme (--theme), दूरी (--distance) देकर पोस्टर बनाया जा सकता है
  • --list-themes विकल्प से उपलब्ध सभी themes की सूची देखी जा सकती है
  • दूरी (distance) के मान के अनुसार शहर के आकार के हिसाब से उपयुक्त radius तय किया जा सकता है
    • 4,000–6,000m: छोटे शहर
    • 8,000–12,000m: मध्यम आकार के शहर
    • 15,000–20,000m: महानगर

थीम संरचना

  • themes/ डायरेक्टरी में 17 theme JSON फ़ाइलें शामिल हैं
    • उदाहरण: noir, blueprint, neon_cyberpunk, warm_beige, forest, terracotta आदि
  • हर theme में background color, road color, water, park आदि के color properties तय किए जाते हैं
  • उपयोगकर्ता JSON फ़ॉर्मैट में नई theme सीधे जोड़ सकते हैं
    • उदाहरण: "bg": "#FFFFFF", "road_primary": "#1A1A1A" आदि

उपयोग उदाहरण

  • अलग-अलग शहरों और themes के संयोजन से पोस्टर बनाए जा सकते हैं
    • python create_map_poster.py -c "Tokyo" -C "Japan" -t japanese_ink -d 15000
    • python create_map_poster.py -c "Barcelona" -C "Spain" -t warm_beige -d 8000
    • python create_map_poster.py -c "Dubai" -C "UAE" -t midnight_blue -d 15000
  • उदाहरण पोस्टरों में San Francisco, Venice, Marrakech, Singapore जैसे शहर शामिल हैं

आंतरिक संरचना और आर्किटेक्चर

  • मुख्य घटक हैं CLI Parser, Geocoding(Nominatim), Data Fetching(OSMnx), Rendering(matplotlib)
  • रेंडरिंग क्रम (z-order): background → water → park → road → gradient → text
  • प्रमुख फ़ंक्शन
    • get_coordinates(): शहर के नाम से latitude/longitude प्राप्त करना
    • create_poster(): पूरा rendering pipeline
    • get_edge_colors_by_type(): सड़क के प्रकार के अनुसार रंग तय करना
    • get_edge_widths_by_type(): सड़क की महत्ता के अनुसार चौड़ाई तय करना
    • load_theme(): JSON theme लोड करना

विस्तार और कस्टमाइज़ेशन

  • नई map layer (जैसे: railway) जोड़ने के लिए create_poster() के भीतर OSMnx डेटा लाकर रेंडर किया जा सकता है
  • नई theme property जोड़ने पर JSON और code (load_theme()) दोनों में उसकी परिभाषा देनी होगी
  • टेक्स्ट प्लेसमेंट नियम
    • शहर का नाम: y=0.14
    • देश का नाम: y=0.10
    • निर्देशांक: y=0.07
    • स्रोत उल्लेख: y=0.02

परफ़ॉर्मेंस ऑप्टिमाइज़ेशन टिप्स

  • dist मान 20km से अधिक होने पर डाउनलोड गति धीमी हो सकती है और memory उपयोग बढ़ सकता है
  • coordinate caching से Nominatim request limit से बचा जा सकता है
  • network_type='drive' सेट करने पर rendering speed बेहतर होती है
  • तेज़ preview के लिए dpi को 150 तक कम किया जा सकता है

टेक स्टैक और लाइसेंस

  • Python 100% में लिखा गया है
  • मुख्य लाइब्रेरी: OSMnx, matplotlib, argparse
  • MIT License के तहत वितरित, व्यावसायिक उपयोग और संशोधन संभव

सारांश

  • MapToPoster एक code-आधारित city-map art tool है, जो data visualization और design को जोड़ने वाला ओपन सोर्स प्रोजेक्ट है
  • डेवलपर, डिज़ाइनर और data visualization विशेषज्ञों के लिए शहरों की संरचना को कलात्मक रूप में समझने का उपयोगी टूल

3 टिप्पणियां

 
kunggom 2026-01-20

Hacker News की तरफ़ की टिप्पणियों में ज़िक्र किया गया city-roads भी पहले यहाँ पोस्ट हो चुका था.

 
xguru 2026-01-20

मैंने Seoul/Busan वाली दिशा में एक बार बनाकर देखा, और अच्छा लगा, इसलिए उसे Twitter GeekNews अकाउंट पर अटैच कर दिया है.
Seoul : https://x.com/GeekNewsHada/status/2013410000031395905
Busan : https://x.com/GeekNewsHada/status/2013412083749265695

 
GN⁺ 2026-01-19
Hacker News टिप्पणियाँ
  • मैंने इससे जुड़े कुछ प्रोजेक्ट कई बार इस्तेमाल किए हैं
    city-roads (GitHub) भी ऐसा ही है, और यह SVG output को सपोर्ट करता है तथा इसे ऑनलाइन भी तुरंत आज़माया जा सकता है
    इसके निर्माता Anvaka ने कई और शानदार data visualization projects भी बनाए हैं
  • यह सचमुच एक शानदार प्रोजेक्ट है
    बस street parameters को adjust करना थोड़ा मुश्किल है
    सुधार के लिए एक विचार यह है कि शहर के नाम की जगह coordinates input लिया जाए ताकि किसी खास बिंदु को केंद्र बनाकर सेट किया जा सके, और कई styles को एक साथ output किया जाए ताकि उन्हें देखकर चुना जा सके
    कुल मिलाकर यह बेहतरीन काम है
  • San Francisco की image शानदार है, लेकिन कुछ samples में projection को लेकर समस्या दिखती है
    यह UTM की बजाय किसी global spherical projection जैसा लगता है, इसलिए local rendering के लिए उपयुक्त नहीं है
    README में projection का उल्लेख न होना थोड़ा संदेह पैदा करता है
    • यह मज़ेदार और कलात्मक पोस्टर बनाने वाला एक art project है, इसलिए projection इतना महत्वपूर्ण नहीं है
      यह open source भी है, इसलिए अपने mapping experience का उपयोग करके pull request के ज़रिए सुधार का सुझाव देना अच्छा रहेगा
    • अंतिम image में vignetting effect है, जिससे लगता है कि किनारे स्वाभाविक रूप से फीके हो रहे हैं
      शायद इसने OSM tiles लेकर image post-processing की है
      नतीजा काफ़ी सुंदर है
  • मैंने कोड को थोड़ा देखा, और matplotlib की वजह से थोड़े से बदलाव के साथ SVG output संभव लगता है
    यह जानने की जिज्ञासा है कि PNG को default रखने की कोई खास वजह है क्या
    • अच्छा point है। plt.savefig(output_file, format='svg', facecolor=THEME['bg']) से यह हल हो सकता है
      इसे लागू करने के लिए --format parameter जोड़ने वाला हूँ
    • बड़े शहरों को PDF/SVG में export करने पर speed बहुत धीमी हो जाती है
      5 लाख की आबादी वाले शहर में भी बहुत ज़्यादा समय लगता है
  • ऐसी images को असली poster के रूप में print कराने के लिए कौन-सा तरीका अच्छा रहेगा, यह जानना चाहता हूँ
    • New Jersey की El-co Color 20x30-inch posters सस्ते में print कर देती है
      El-co Color Poster Special
    • पहले ऐसी maps को 3D print से relief map बनाकर frame में लगाने वाली एक service भी थी
    • मैं Vistaprint इस्तेमाल करता हूँ। मैंने बहुत तुलना नहीं की है, लेकिन इसकी कीमत और quality ठीक लगती है
    • अगर आप खुद करना चाहते हैं, तो Rasterbator.net से कई sheets जोड़कर DIY poster बनाया जा सकता है
      हालांकि इसमें काफ़ी मेहनत लगती है
    • अमेरिका में Staples की print quality काफ़ी अच्छी थी
  • यह repository वाकई शानदार है
    README को OSS best practices का उदाहरण माना जा सकता है, और इसका output हैरान कर देने वाला सुंदर है
  • prettymapp को भी साथ में देखना अच्छा रहेगा
  • जब एक ही नाम के कई शहर हों तो क्या होता है, यह जानने की जिज्ञासा है
    जैसे Salem(OR/MA), Portland(OR/ME), Springfield(IL/MO), Dallas(TX/GA)
    • अगर सिर्फ "Salem" डालते हैं, तो यह मनमाने ढंग से एक शहर चुन लेता है
      "Salem, Oregon" या "Salem, MA" जैसे input देने पर मनचाहा result मिलता है, और डाला गया text caption के रूप में इस्तेमाल होता है
    • अमेरिका में Paris, London, Athens जैसे दुनिया के शहरों के नाम पर रखे गए शहर भी बहुत हैं
    • यह बात मेरे दिमाग़ में ही नहीं आई थी। शायद country तक input लेने वाला feature जोड़ना पड़ेगा
  • क्या यह प्रोजेक्ट graph-based approach पर है, या फिर सामान्य image generation है, यह जानने की जिज्ञासा है
    Picxstudio पर भी मैंने ऐसा ही output देखा है, लेकिन वह AI image generation platform है
  • मैं Sydney की road map को jigsaw puzzle बनाकर खेलते-खेलते सड़क संरचना सीखना चाहता था
    ऐसा करने से शायद navigation apps पर निर्भरता कम हो जाए और मैं पुराने ज़माने के ड्राइवर जैसा बन सकूँ
    • Sydney में Where 2 के Google Maps में बदलने की वजह है
      वहाँ one-way roads बहुत ज़्यादा हैं, और harbor व tunnels की संरचना जटिल है, इसलिए Sydney की सड़कों को समझना जीवनभर का काम है