| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
Generate beautiful, minimalist map posters for any city in the world. CartoGo is a high-performance Go implementation of the original City Map Poster Generator, designed for speed, reliability, and 1-to-1 aesthetic parity.
This project is a high-performance Go port of the City Map Poster Generator (Python) by Ankur Gupta.
The Go implementation aims to preserve the artistic vision and functionality of the original while providing the speed and safety of the Go language. All themes and artistic design choices are credited to the original author.
CartoGo leverages OpenStreetMap data to create high-resolution (300 DPI) artistic posters. It fetches geographic features like roads, water bodies, and parks, then renders them using a custom engine built on the gg library to match the sophisticated look of the original Matplotlib-based project.
git clone <repository-url>
cd CartoGo
go mod tidy
go build -o CartoGo.exe./CartoGo.exe -city "Paris" -country "France"./CartoGo.exe -city "Tokyo" -country "Japan" -display-city "東京" -display-country "日本" -theme japanese_ink| Flag | Short | Description |
|---|---|---|
| -city | -c | City name for geocoding. |
| -country | -C | Country name for geocoding. |
| Flag | Description | Default |
|---|---|---|
| -theme | Theme name (matches JSON file in themes/). | terracotta |
| -distance | Map radius in meters from center. | 18000 |
| -latitude | Manual latitude override. | 0 |
| -longitude | Manual longitude override. | 0 |
| -display-city | Custom city name to display on poster. | |
| -display-country | Custom country name to display on poster. | |
| -country-label | Alias for -display-country. | |
| -width | Physical width in inches. | 12 |
| -height | Physical height in inches. | 16 |
| -all-themes | Generate a poster for every theme in themes/. | false |
| -list-themes | List available themes with descriptions. | false |
Use these values for -width and -height to target specific outputs:
| Target | Inches (-width / -height) | Resolution (px) |
|---|---|---|
| Instagram Post | 3.6 x 3.6 | 1080 x 1080 |
| Mobile Wallpaper | 3.6 x 6.4 | 1080 x 1920 |
| A4 Print | 8.3 x 11.7 | 2490 x 3510 |
| A3 Print | 11.7 x 16.5 | 3510 x 4950 |
| Large Poster | 18.0 x 24.0 | 5400 x 7200 |
| Radius (-distance) | Best for... |
|---|---|
| 4,000 - 6,000m | Small/dense centers (Venice, Amsterdam, Old Town Prague) |
| 8,000 - 12,000m | Medium cities or focused downtowns (Barcelona, SF, Paris) |
| 15,000 - 20,000m | Large metropolises and ring roads (Tokyo, London, NYC) |
The generator comes with 17 built-in themes in the themes/ directory, each carefully designed for a specific aesthetic:
| Theme | Name | Aesthetic |
|---|---|---|
| autumn | Autumn | Burnt oranges, deep reds, golden yellows - seasonal warmth |
| blueprint | Blueprint | Classic architectural blueprint - technical drawing aesthetic |
| contrast_zones | Contrast Zones | Strong contrast showing urban density - darker in center, lighter at edges |
| copper_patina | Copper Patina | Oxidized copper aesthetic - teal-green patina with copper accents |
| emerald | Emerald City | Lush dark green aesthetic with mint accents |
| forest | Forest | Deep greens and sage tones - organic botanical aesthetic |
| gradient_roads | Gradient Roads | Smooth gradient from dark center to light edges with subtle features |
| japanese_ink | Japanese Ink | Traditional ink wash inspired - minimalist with subtle red accent |
| midnight_blue | Midnight Blue | Deep navy background with gold/copper roads - luxury atlas aesthetic |
| monochrome_blue | Monochrome Blue | Single blue color family with varying saturation - clean and cohesive |
| neon_cyberpunk | Neon Cyberpunk | Dark background with electric pink/cyan - bold night city vibes |
| noir | Noir | Pure black background with white/gray roads - modern gallery aesthetic |
| ocean | Ocean | Various blues and teals - perfect for coastal cities |
| pastel_dream | Pastel Dream | Soft muted pastels with dusty blues and mauves - dreamy artistic aesthetic |
| sunset | Sunset | Warm oranges and pinks on soft peach - dreamy golden hour aesthetic |
| terracotta | Terracotta | Mediterranean warmth - burnt orange and clay tones on cream |
| warm_beige | Warm Beige | Earthy warm neutrals with sepia tones - vintage map aesthetic |
Create a .json file in themes/:
{
"name": "My Custom Theme",
"description": "Subtle description",
"bg": "#FFFFFF",
"text": "#000000",
"gradient_color": "#FFFFFF",
"water": "#D5D5D5",
"parks": "#EFEFEF",
"road_motorway": "#000000",
"road_primary": "#222222",
"road_secondary": "#444444",
"road_tertiary": "#666666",
"road_residential": "#888888",
"road_default": "#666666"
}Adjust getRoadPriority and getRoadStyle in rendering.go to change how different OSM highway tags are weighted and colored.
To add new features (e.g., railways, buildings):
This project is licensed under the MIT License. See the LICENSE file for the full text.
| Back | FazBrowse Home | New Git URL |