MapToPoster: Crear Posters Minimalistas de Ciudades en Python
MapToPoster: Crear Posters Minimalistas de Ciudades en Python
Si alguna vez has querido producir un mapa limpio y artístico de tu ciudad favorita, MapToPoster es la herramienta perfecta. Es un proyecto de Python puro de código abierto que combina los datos de OpenStreetMap (OSM) en un póster pulido utilizando Matplotlib. Ya seas un cartógrafo aficionado, un diseñador buscando un fondo único, o un científico de datos que necesita una ayuda visual, este repositorio te brinda todo listo desde el primer momento.
1. Lo que MapToPoster te Ofrece
| Funcionalidad | Descripción |
|---|---|
| Generación sin configuración | Un solo llamado desde la CLI produce un PNG del centro de la ciudad dentro del radio elegido. |
| 18 temas predefinidos | Desde el clásico noir hasta el futurista neon‑cyberpunk, cada tema ajusta automáticamente fondo, colores de carreteras y degradados. |
| Tema JSON personalizable | Crea tu propio tema editando el archivo themes/{nombre}.json—controla cada canal de color. |
| Distancia flexible | Escoge un radio entre 4 km (centro de la ciudad) y 20 km (ciudad completa) según la escala que necesites. |
| Portabilidad | El código depende solo de bibliotecas bien mantenidas: osmnx, networkx, y matplotlib. Lo único que necesitas es Python 3.9+. |
| Licencia MIT | Libre para usar, modificar y redistribuir. |
2. Inicio Rápido
-
Clonar el repositorio
git clone https://github.com/originalankur/maptoposter.git cd maptoposter -
Crear un entorno virtual (recomendado)
python -m venv .venv source .venv/bin/activate # Windows: .venv\\Scripts\\activate -
Instalar dependencias
pip install -r requirements.txt -
Generar un póster
python create_map_poster.py -c \"Barcelona\" -C \"Spain\" -t warm_beige -d 8000Resultado:
posters/barcelona_warm_beige_20260108_172924.pngse crea.
Puedes reemplazar los argumentos con cualquier par ciudad/pais y nombre de tema. Ejecute python create_map_poster.py --list-themes para ver todas las opciones disponibles.
3. Temas en Resumen
| Tema | Estilo | Caso de uso ideal |
|---|---|---|
feature_based |
Clásico negro y blanco con jerarquía de carreteras | Leyendas de mapas con mucho texto |
gradient_roads |
Carreteras con degradado suave | Visualización científica |
noir |
Fondo negro puro, carreteras blancas | Arte de póster para cine/sitio web |
midnight_blue |
Fondo azul marino, carreteras doradas | Ambiente nocturno de ciudad |
blueprint |
Plano arquitectónico | Proyectos de arquitectura |
neon_cyberpunk |
Oscuro con rosa/cian eléctrico | Fondos de juegos futuristas |
warm_beige |
Tono sepia | Ambiente vintage de ciudad |
pastel_dream |
Pasteles suaves | Invitaciones de boda ligeras |
japanese_ink |
Lavado de tinta minimalista | Obras culturales |
forest |
Verdes profundos | Temas enfocados en naturaleza |
ocean |
Azules y verdeazulado | Planos de ciudades costeras |
terracotta |
Calidez mediterránea | Posters de viajes cálidos |
sunset |
Naranjas cálidas | Arte urbano al atardecer |
autumn |
Rojos quemados | Temas de temporada otoñal |
copper_patina |
Cobre oxidado | Estética industrial o vintage |
monochrome_blue |
Familia azul única | Marca corporativa |
4. Extender MapToPoster
4.1 Añadir un Nuevo Tema
- Crea un archivo JSON en
themes/. Ejemplomy_fantasy.json:{ "name": "Fantasy", "description": "A whimsical map theme", "bg": "#111111", "text": "#AAFFAA", "gradient_color": "#22AA22", "water": "#004400", "parks": "#006600", "road_motorway": "#FF0044", "road_primary": "#FF8844", "road_secondary": "#FFCC44", "road_tertiary": "#FFF444", "road_residential": "#999999", "road_default": "#666666" } - Ejecuta el generador de posters con
-t fantasy.
4.2 Añadir una Nueva Capa de Mapa
Para insertar ferrocarriles antes de las carreteras:
# En create_map_poster.py después de la obtención de parks
try:
railways = ox.features_from_point(point, tags={"railway": "rail"}, dist=dist)
except Exception:
railways = None
if railways is not None and not railways.empty:
railways.plot(ax=ax, color=THEME["railway"], linewidth=0.5, zorder=2.5)
railway en tu JSON de tema.
5. Consideraciones de Rendimiento
- Límites de distancia: Radios grandes ralentizan la descarga de datos desde OSM. Mantén
-d≤ 20 km para ejecuciones rápidas. - Caché: OSMnx borra automáticamente datos de OSM localmente. Ejecutar de nuevo la misma ciudad será notablemente más rápido.
- Tipo de red:
drivees el predeterminado; cambia awalkobikepara datos más ligeros. - DPI: Predeterminado 300 dpi; baja a 150 dpi para previsualizaciones rápidas.
6. ¿Por Qué Usar MapToPoster?
- Sin sobrecarga: No se requieren registros ni claves API; todos los datos se traen directamente de OSM.
- Control creativo: Los temas son modulares; los diseñadores pueden ajustar colores, degradados y tipografía.
- Reproducible: El script es determinista—con las mismas entradas mostrará la misma imagen cada vez.
- Impulsado por la comunidad: Con casi 5 k estrellas y 394 forks, el proyecto cuenta con apoyo activo de la comunidad.
7. Comienza Hoy
- Forkea el repositorio o cópialo localmente.
- Explora los temas existentes y ejecuta algunos ejemplos.
- Crea tu propio poster y compártelo en redes sociales o incrústalo en un blog.
- Contribuye: abre un issue si encuentras un bug o sugiere un nuevo tema, o envía un pull request con mejoras.
MapToPoster convierte la red de calles de una ciudad en una narrativa visual. Ya sea que estés creando guías de viaje, arte de fondo o ilustraciones académicas, este proyecto te brinda una forma rápida, escalable y hermosa de producir posters de mapas, todo potenciado por tecnología de código abierto.
¡Felices mapeos!