OpenStreetMap

Colorindo mapas

Posted by naoliv on 28 May 2015 in Brazilian Portuguese (Português do Brasil). Last updated on 10 June 2015.

Da série “Formas diferentes de visualizar o mapa”

Quem já abriu os limites de um país (ou região, estado, etc) no JOSM já percebeu que a exibição não é nada colorida (afinal, o JOSM é um programa de edição de dados e não de imagem): Padrão JOSM

Mas isso significa que não podemos ter algo colorido?
E se eu quiser o meu país nas cores dele?

Novamente utilizando mágica para aplicar estilos no JOSM, podemos ter o Brasil colorido de verde ou amarelo: Verde e amarelo

/* colore aleatoriamente os estados com verde ou amarelo */
relation[admin_level=4] {
        fill-color: eval(random()) > 0.5 ? yellow : green;
        fill-opacity: 0.5;
}

E se quiser os estados todos coloridos, cada um com uma cor? Colorido

/* estados com cores aleatórias */
relation[admin_level=4] {
        fill-color: eval(rgb(random(), random(), random()));
        fill-opacity: 0.5;
} Já está dando quase para montar um livro de geografia do Brasil utilizando apenas o OSM e JOSM.

E se a pessoa quiser apenas variações de azul e verde? Verde e azul

/* deixa a cor vermelha sempre em 0, variando verde e azul */
relation[admin_level=4] {
        fill-color: eval(rgb(0, random(), random()));
        fill-opacity: 0.5;
} 

Utilizar random() não garante que a área seja sempre representada pela mesma cor.
E se a pessoa, então, quiser representar os países (e as suas áreas, regiões, enclaves, etc) sempre com a mesma cor?

Países

relation[admin_level=2] {
        fill-color: hsb_color(CRC32_checksum(tag("name"))/4294967296.0, 0.9, 0.7);
        fill-opacity: 0.5;
}

Cada área receberá uma cor baseada no seu nome, mantendo-a para enclaves, ilhas, etc.

Até aqui já dá para vender mapas, representar bairros de uma cidade com cores diferentes ou possivelmente exibir locais com alguma característica, restrição ou necessidade especial (um bom exemplo seria gerar mapas com cores de fácil diferenciação para pessoas com deficiência visual).

De forma mais proveitosa, dá para colorir áreas já trabalhadas, de acordo com algum critério, e áreas que faltam ser trabalhadas.
Por exemplo, o Blademir disse que vai deixar o Brasil inteiro verde: Distritos Isso representa todos os distritos (admin_level=9) já mapeados no Brasil.

/* todos os estados em vermelho */
relation[admin_level=4] {
        z-index: 0; 
        fill-color: red;
        fill-opacity: 0.3;
}

/* distritos em verde, com prioridade de renderização maior (no topo) */
relation[admin_level=9] {
        z-index: 1;
        fill-color: green;
        fill-opacity: 0.6;
}

/* esconde os caminhos */
way  {
        fill-color: black;
        width: 0
}

/* esconde todos os nós */
node {
        icon-opacity: 0;
        symbol-size: 1;
        symbol-stroke-color: orange;
        text: "";
}

Eu achava que tínhamos 2 estados completos, mas nenhum salvou.
O Skippern deu mancada no Espírito Santo e deixou buracos: Espírito Santo O resto mais bem mapeado do país também não está lá grande coisa: MS + SP

Também deu para ver que alguém (não vou falar quem fui ☺) acabou duplicando algumas relações: Duplicado

Reparem como uma das áreas apresenta um verde mais saturado (pela sobreposição de duas relações)

Colorir, portanto, também dá para ser útil nas edições.

Discussion

Comment from santamariense on 28 May 2015 at 21:02

Muito legal. Quero aprender a utilizar os dados do OSM como você faz. Vou tentar aprender.

Comment from Skippern on 29 May 2015 at 22:20

Como falhei no IRC quam e responsavel acertar os buracos no ES, ne?

@JP E fácil aprender isso, talvez os exemplos aqui um pouco avançados mas o MapCSS não e muito complicado aprender

Comment from Linhares on 31 May 2015 at 12:24

mestre

Log in to leave a comment