Transformando Dados do OpenStreetMap em Pôsteres com prettymaps
Às vezes você encontra bibliotecas que são simplesmente um prazer de olhar. Elas não resolvem problemas complexos de enterprise nem aceleram builds dez vezes — em vez disso, elas pegam dados geográficos e transformam em gráficos que você quer imprimir e pendurar na parede em uma moldura.
Há cerca de três anos, mapas circulares vetoriais de cidades com cores pastéis suaves viralizaram no Reddit e no Hacker News. Acontece que essa estética foi criada por um pequeno script do desenvolvedor brasileiro Marcelo Prates. O projeto se chama prettymaps.

Por Trás das Cortinas
A biblioteca é construída sobre uma pilha simples de ferramentas. Ela busca recursos geográficos brutos do OpenStreetMap usando osmnx, processa geometria de polígonos com shapely, e renderiza a composição final através do familiar matplotlib. Para preparar contornos vetoriais para plotters, o autor também usou vsketch.
Em vez de exportar camadas manualmente, filtrar tags de ruas, rios e edifícios, configurar projeções e lidar com estilos de eixos do matplotlib, você simplesmente passa um endereço ou coordenadas e obtém um desenho pronto.
Um início rápido é literalmente assim:
import prettymaps
plot = prettymaps.plot('Stad van de Zon, Heerhugowaard, Netherlands')
Uma chamada de função baixa os dados da área desejada, divide em camadas e constrói o gráfico.
Como Personalizar Seu Mapa
A flexibilidade total da biblioteca é revelada nas opções de ajuste fino da função prettymaps.plot().

Aqui estão os parâmetros com os quais você mais trabalhará:
- layers define um dicionário de camadas do OpenStreetMap. Aqui você define as tags usadas para selecionar objetos: corpos d'água (
natural: water), edifícios (building: True), parques, ruas de diferentes categorias ou trilhos de trem. - style define regras de renderização para cada camada. Isso aceita parâmetros familiares do matplotlib: cor de preenchimento (
fc), cor do traço (ec), largura da linha (lw) e paletas de cores prontas (palette). - circle, radius e dilate controlam os limites da tela. Você pode cortar o mapa em um círculo perfeito de um determinado raio em metros ou deixar uma área retangular.
- preset carrega configurações de estilo prontas (por exemplo,
default,minimal,macaooutijuca) para que você não precise criar um esquema de cores do zero.
Um exemplo de configuração de um local específico:
plot = prettymaps.plot(
'Praça Ferreira do Amaral, Macau',
circle=True,
radius=1100,
layers={
"water": {"tags": {"natural": ["water", "bay"]}},
"building": {"tags": {"building": True}},
},
style={
"water": {"fc": "#a1e3ff", "ec": "#2F3737"},
"building": {"palette": ["#FFC857", "#E9724C", "#C5283D"]},
},
)
A função retorna um objeto dataclass Plot. Dentro você encontrará geodataframes para cada camada (geodataframes), bem como referências aos objetos matplotlib fig e ax. Isso é útil se você quiser adicionar suas próprias anotações, marcadores ou rótulos usando métodos padrão de plotagem do Python.
Como Executar Sem Escrever Código
Se você for preguiçoso demais para escrever código ou quiser navegar rapidamente pelas paletas para diferentes cidades, o repositório inclui uma interface web pronta, construída com streamlit.
Instalando o pacote:
pip install prettymaps
Iniciando a interface:
streamlit run app.py
Para experimentos interativos, o autor preparou um notebook para marimo (uma替代 moderna para Jupyter). Você pode abri-lo localmente com o comando marimo edit notebooks/tutorial.py ou executá-lo diretamente no Google Colab através do link na documentação.

Casos de Uso Práticos
A primeira aplicação que vem à mente é arte generativa e produtos. Mapas de cidades natais, bairros ou lugares memoráveis em um estilo minimalista funcionam muito bem para pôsteres, postcards e camisetas. Como a biblioteca suporta exportação de contornos vetoriais, você pode enviar os gráficos para plotters de caneta e gravadores.
O segundo cenário é design de relatórios e apresentações. Se você estiver fazendo um estudo urbano, analisando acessibilidade de transporte ou construindo um dashboard de imóveis, os tiles de mapa padrão geralmente parecem sobrecarregados. Aqui você pode manter apenas os contornos de quarteirões e corpos d'água, colorindo-os estritamente com as cores da sua marca.
Licença e Notas Importantes
O projeto tem algumas coisas que vale a pena saber antes de adotá-lo.
O código é distribuído sob a licença GNU AGPL v3.0. Isso traz obrigações: se você usar a biblioteca em um backend de um serviço de rede, você precisará disponibilizar o código desse serviço como open source.
Ao exportar imagens, você deve preservar a atribuição ao OpenStreetMap e ao próprio repositório — isso é um requisito direto da licença dos dados geográficos. O autor do repositório também принципиально se opõe ao uso do seu gerador para vender NFTs e destaca isso especificamente no README.
Vale a Pena Experimentar?
A biblioteca faz seu trabalho excellently. Se você já precisou criar um belo mapa de cidade sem trabalho manual no Illustrator ou QGIS, prettymaps economizará várias horas de trabalho.
Para começar, basta instalar o pacote via pip e executar alguns exemplos do Colab. O projeto funciona com Python 3.11+, busca dados de forma confiável via API OSM e produz resultados previsíveis.
Projetos relacionados