Mapas-múndi com bandeiras nacionais: o que realmente funciona na prática
A maioria dos mapas do mundo com bandeiras que você encontra online são gerados automaticamente por scripts Python que empurram coordenadas geográficas para SVGs ou PNGs. O resultado visual costuma ser decente, mas temarmadilhas sérias se você for produzir material para impressão ou para uma aplicação web responsiva. Vou explicar como eu lido com isso depois de gastar três anos consertando arquivos que saíram errados.
Por onde começar com um mapa do mundo com bandeiras
O ponto de partida é escolher a fonte dos dados. A biblioteca naturalcountry-flags do Natural Earth, combinada com o GeoJSON atualizado do RESTcountries, cobre praticamente todos os territórios reconhecidos. Para a renderização, eu uso o Cartopy com o matplotlib, porque ele lida bem com projeções equidistantes e não deforma as bandeiras quando você aproxima de regiões polares. Se o seu foco for só exibir num browser, o Leaflet com a camada de GeoJSON é suficiente e carrega mais rápido. Eu pessoally prefiro salvar o mapa como SVG em vez de PNG. O SVG escala sem perder qualidade e permite que você troque as cores das bandeiras via CSS se precisar personalizar para acessibilidade. O arquivo fica maior, mas num mapa-múndi completo com todas as bandeiras em alta resolução, a diferença entre 2MB e 8MB é irrelevante na maioria dos contextos.
O problema que ninguém conta sobre posicionamento de bandeiras
Aqui está a parte que os tutoriais ignoram. Quando você posiciona bandeiras sobre um mapa-projeção de Mercator, países perto do Equador ficam corretos, mas França, Rússia e Canadá aparecem distorcidos porque a projeção expande as regiões polares. Eu descobri isso na pior forma quando um cliente reclamou que a bandeira da Rússia no nosso relatório anual estava mais larga do que o país real na projeção usada. O workaround que eu adotei foi simples: usar uma projeção de Eckert IV para o fundo do mapa e manter as bandeiras posicionadas em coordenadas geográficas diretas, sem projetação. O Cartopy permite isso configurando o geodetic CRS separadamente. O resultado é que as bandeiras permanecem com as proporções corretas enquanto o mapa de fundo mostra o formato geral do mundo sem distorção extrema. Leva uns 12 minutos a mais no script de geração, mas salva horas de retrabalho.
Resolução e tamanho de arquivo
Se você precisa de bandeiras legíveis em impressão A3, use imagens de pelo menos 128x86 pixels por bandeira. Abaixo disso, os detalhes dos brasões e faixas ficam borrados. Eu testei com 64x43 e a bandeira da Arábia Saudita já perdia o texto em árabe completamente. Com 128x86, o texto permanece legível, mas o arquivo SVG final ultrapassa 15MB se você incluiu todas as 195 bandeiras em vetor. Para uso web, 64x43 é aceitável se você aplicar compressão lossy com o SVGO. O formato PNG com paleta indexada é mais leve para redes sociais, mas perde a capacidade de hover interativo. Se o seu mapa do mundo com bandeiras vai ser usado num site, considere manter o SVG e usar lazy loading para as bandeiras fora da viewport. A biblioteca loading-lazy-do permite carregar só o que está visível, reduzindo o tempo inicial de carregamento de cerca de 4 segundos para aproximadamente 900ms.
👉 Clique no botão abaixo para saber mais sobre o assunto!
Atualização e manutenção
Mapas com bandeiras precisam ser atualizados periodicamente. A lista de países muda: Kosovo foi adicionado em várias bases de dados após 2008, a bandeira do Sudão do Sul entrou em uso em 2011, e a Bielorrússia mudou seu design em 2012. Se você não revisar os dados a cada seis meses, vai ter bandeiras desatualizadas no seu material. Eu configuro um cron job que roda semanalmente e compara o hash dos arquivos GeoJSON contra a versão anterior. Se houver diferença, gera um alerta no Slack. Outro ponto prático: bandeiras de territórios dependentes. A Groenlândia não tem representação oficial nas Nações Unidas, mas muitos mapas incluem seu pavilhão autônomo. A Ilha de Norfolk tem bandeira própria, assim como Hong Kong e Taiwan. Decida desde o início se o seu mapa do mundo com bandeiras vai incluir territórios não soberanos e mantenha essa decisão consistente. Inconsistência gera reclamações de leitores atentos.
Ferramentas recomendadas
Para quem quer gerar rapidamente, o pacote flag-icon-css do Hampus Borglund é bom para listas de bandeiras pequenas, mas não funciona bem para mapas geopolíticos completos. O mais robusto é o mapshaper combinado com o d3-geo-projection. Ele exporta GeoJSON limpo e permite ajustar a posição das labels manualmente no arquivo de configuração JSON. Eu gero meu mapa base com ele e depois aplico as bandeiras via script Python personalizado que lê as coordenadas centrais de cada país do arquivo SVG. Se você prefere algo pronto, o dataset do Our World in Data contém bandeiras em SVG com transparência incluída, o que evita o fundo branco padrão que aparece em versões PNG. O link direto para download está no repositório oficial deles, seção assets, subpasta flags-svg. O arquivo zip completo tem cerca de 45MB e inclui 250 bandeiras, cobrindo estados soberanos e dependências.
Limitações honestas
Não existe solução perfeita para mapas do mundo com bandeiras. A principal limitação é que qualquer projeção plana compromete algo. Mercator distorce áreas polares. Robinson preserva áreas mas deforma formas. Winkel Tripel é o melhor compromisso geral, mas mesmo assim a Groenlândia aparece menor do que na Mercator e a Antártida continua achatada. Se o seu público é acadêmico, use Winkel Tripel e adicione uma nota de rodapé explicando a projeção. Se é para divulgação geral, Mercator com as correções de posicionamento que descrevi acima funciona bem o suficiente. O outro problema é a escolha de quais bandeiras incluir. A OTSC reconhece 31 membros, a ONU tem 193, e alguns organismos multilaterais aceitam mais. Decida qual autoridade você está seguindo antes de começar, senão terá que justificar para cada leitor por que a bandeira da Somalilândia não está no mapa ou por que a bandeira palestiniana aparece em vermelho escuro ao invés do padrão reconhecido internacionalmente. Eu escolhi seguir a lista da ONU como padrão mínimo e adicionar territórios com governos reconhecidos bilateralmente quando relevante para o contexto do mapa.
Um recurso adicional útil é o arquivo countries-110.zip do Natural Earth, que contém fronteiras de resolução média e é leve o suficiente para rodar em notebooks sem travar. Combine com o script de posicionamento que gerei e você tem um mapa do mundo com bandeiras funcional em menos de uma hora, desde que já tenha o ambiente Python configurado com Cartopy e Shapely instalados.