I have upgraded the original maptoposter project to transform any city into stunning, high-quality map posters using OpenStreetMap data. My version introduces significant improvements, most notably being the first to implement a dedicated Web UI for this engine, alongside advanced performance optimizations and enhanced customization options.
The core engine is located in the naksaengine directory.
I am the first to introduce a completely redesigned, premium Web Interface for this engine, located in the webui directory. I built it to feature:
- Dark Mode Aesthetic: I designed a borderless, glassmorphic look using deep blacks and sharp edges.
- Interactive Preview: Use my infinite panning and zooming system to inspect generated posters.
- Custom Dimensions: I added support for both standard social media presets and custom inputs (in pixels or inches) with automatic DPI conversion.
- Real-time Feedback: You can track the progress of my generation pipeline in real-time.
- System: I built this with Flask to integrate seamlessly with the core Python engine.
I have performed a major performance and feature overhaul of the original codebase. Here is exactly what I changed:
-
Performance Optimization:
- I implemented
ThreadPoolExecutorfor parallel data fetching, which significantly reduces download times for complex maps. - I refactored
naksamain.pyto use relative paths correctly, so you can execute it from any project subdirectory. - I optimized the graph simplification logic with configurable tolerance.
- I implemented
-
Core Engine Upgrades:
- I added support for variable font weights (defaulting to Inter) to match the modern UI I designed.
- I fixed race conditions in file saving that previously caused 404 errors on the frontend.
- I enhanced error handling for matplotlib backends in headless environments.
-
User Experience:
- I created a standalone
app.pyserver to wrap the CLI tools. - I added "Detail Density" presets (Minimal to Maximum) to help you abstract away complex layer settings.
- I integrated custom size logic that calculates physical print dimensions based on DPI.
- I created a standalone
Experience 9 unique aesthetic themes that transform the same geographical location into dramatically different visual experiences:
- Salleri Collection: Sophisticated palettes with maximum visibility and artistic composition
- Cyberpunk Neon Dreams: Futuristic Tokyo-inspired neon aesthetics with electric blues and magentas
- Vintage Travel Poster: Classic 1950s tourism art with warm sepia tones and bold colors
- Arctic Explorer: Cool-toned palette with ice blues and snow whites for polar expedition aesthetics
- Desert Mirage: Warm desert tones with golden sands and sunset oranges
- Midnight Jazz Club: Rich, deep tones with burgundy, gold, and charcoal for 1920s speakeasy vibes
- Tropical Paradise: Vibrant tropical palette with coral pinks and turquoise waters
Navigate to the naksaengine directory to use the command line tool directly:
# Basic usage
python naksamain.py --city "Kathmandu" --country "Nepal" --detail high
# Custom theme and size
python naksamain.py --city "Tokyo" --country "Japan" --theme cyberpunk_neon --width 24 --height 36 --quality 300Navigate to the webui directory to launch the graphical interface:
cd webui
python app.pyThen open http://localhost:5000 in your browser.
-
Clone the repository:
git clone https://github.com/aku1dev/naksakaar.git cd naksakaar -
Create a virtual environment:
python -m venv .venv source .venv/bin/activate # On Windows: .venv\Scripts\activate
-
Install dependencies:
pip install -r naksaengine/requirements.txt
Curated by: aku1ra.dev
Original Author: Ankur (originalankur/maptoposter)
Base Repository: https://github.com/originalankur/maptoposter/tree/main
License: MIT
This enhanced version builds upon the original map poster generator with significant improvements including advanced detail controls, performance optimizations, and enhanced customization options.