OpenStreetMap

naoliv's diary

Recent diary entries

OpenStreetMap T-shirts

Posted by naoliv on 27 October 2016 in English (English)

I have two new T-shirts! :-D

When new values start appearing in OSM…

Posted by naoliv on 13 September 2016 in English (English)

https://github.com/openstreetmap/iD/issues/3418

and developers just don't care if they are wrong or not…

Quando usar túnel e ponte/viaduto juntos

Posted by naoliv on 10 August 2016 in Brazilian Portuguese (Português do Brasil)

Resposta rápida é "quase nunca".

Sempre vejo as pessoas mapeando uma ponte/viaduto em uma rodovia e colocando o trecho que passa debaixo desse viaduto como "túnel", de forma errada.

Exemplos (pontes com uma borda azul e túneis com uma borda alaranjada):

Nesses casos não é para utilizar um túnel passando debaixo da ponte/viaduto.
Ou se utiliza um túnel ou uma ponte, mas não os dois (e nesses exemplo o correto é, se não na maioria das vezes, sempre utilizar uma ponte)

Como já tenho um banco SpatiaLite com SP + MG eu pensei numa forma de detectar isso:

    SELECT
        'w' || a.osm_id || ' w' || b.osm_id AS 'ways',
        Intersection(a.GEOMETRY, b.GEOMETRY) AS 'geometria'
    FROM
        lines AS a,
        lines AS b
    WHERE
        a.ROWID IN (SELECT ROWID FROM SpatialIndex WHERE f_table_name = 'lines' AND search_frame = b.Geometry) AND
        a.highway IS NOT NULL AND
        b.highway IS NOT NULL AND
        a.other_tags LIKE '%"bridge"=>%' AND
        b.other_tags LIKE '%"tunnel"=>%' AND
        Crosses(a.GEOMETRY, b.GEOMETRY)

E dá certo! (alguns dos exemplos são as imagens do começo).

Ele retorna uma coluna contendo o id dos dois caminhos que se interceptam (uma ponte e um túnel) e uma geometria da interseção (caso queira adicionar um nó de fixme para verificar)

Mais uma Gambiarra que funciona™ para a minha lista de coisas para verificar.

Então ao ver um caminho passando debaixo de uma ponte, não é para transformá-lo em túnel. Essas passagens debaixo de uma ponte não são túneis (em geral).

Como arrumar bairros (suburb) erroneamente classificados como hamlet

Posted by naoliv on 6 June 2016 in Brazilian Portuguese (Português do Brasil)

Estava pensando em algumas ideias utilizando o QGIS e trabalhando com os place do estado de SP, quando olho os place=hamlet e reparo que existem algumas aglomerações estranhas:

Por exemplo, em Assis: Assis

Bauru: Bauru

Osasco: Osasco

Sertãozinho: Sertãozinho

Me veio na cabeça que esses locais, muito provavelmente, deveriam ser bairros e não hamlets.

Olhar 745 hamlets, um por um, é algo trabalhoso de se fazer; mas pensei em algo que acabou dando certo (e detalho abaixo).

Minha lógica para tentar achar os locais errados foi: criar uma área ao redor de cada ponto, unindo as áreas que que se interceptam e contar o número de place dentro de cada área.
Se for maior que 1, então verifico manualmente para ver se é bairro ou não.

Primeiro obtendo os dados, através do plugin QuickOSM no QGIS (ou exportando como um geojson no próprio overpass, por exemplo; a consulta vai ser a mesma):

[out:json];
{{geocodeArea:são paulo, brasil}}->.searchArea;
(
  node["place"="hamlet"](area.searchArea);
);
out body;
>;
out skel qt;

Os dados estão em EPSG:4326 mas converti para EPSG:3395 (mesma projeção padrão do JOSM, apenas para calcular algumas áreas logo após).

Com os locais já projetados criei um buffer de 1000m, dissolvendo os resultados, através de Vetor → Ferramentas de Geoprocessamento → Buffer

A área do buffer, apesar de possuir várias partes, acaba sendo um objeto só (que não serve para o cálculo de objetos dentro de cada área que preciso fazer).
Então separo as áreas distintas através de Vetor → Geometrias → Multiparte para partes simples

No fim temos vários polígonos dessa forma:

Como o raio utilizado no buffer foi de 1000m, dentro de um mesmo polígono teremos objetos distantes a no máximo 2000m entre si (que acho um valor razoável como distância entre bairros).

A contagem de objetos dentro de cada um desses polígonos pode ser feita através de Vetor → Analisar → Pontos no polígono, utilizando o método soma

Ele gera uma nova camada com um atributo contendo a contagem.

Filtrando as áreas com valor > 1 temos 22 regiões potenciais.

Para selecionar os locais dentro dessas áreas (que é o que interessa) dá para efetuar uma consulta espacial através de Vetor → Consulta Espacial → Consulta Espacial

Queremos selecionar as feições da camada de place sempre que a feição interceptar a camada filtrada.

O resultado são 246 objetos selecionados, que exporto para CSV:

X,Y,full_id,osm_id,population,name,place
-50.094927,-22.111716,n368262779,368262779,,Colônia Nova,hamlet
-50.0935428,-22.122513699999,n368262783,368262783,,Colônia da Usina Paredão,hamlet
-48.605132,-22.225059,n368262852,368262852,,Pouso Alegre de Baixo,hamlet
-48.118025,-20.950358,n368262978,368262978,,Usina Barbacena,hamlet
(…)

Como a única informação importante para este caso é o id do objeto, eu o separo com magia negra:

fgrep hamlet saida.csv | awk -F , '{print $3}' | sort | sed ':a;N;$!ba;s/\n/ /g'

Que me retorna os objetos numa forma fácil de abrir no JOSM:

n1443265134 n1443267306 n1443267309 n1560596774 (…) n4028586019 n4163372418 n4165851984

Já no JOSM, para baixar apenas esses objetos utilizamos Arquivo → Baixar objeto, com o tipo de objeto sendo ou misturado e colamos a linha inteira no campo ID do objeto

Não dá para simplesmente substituir hamlet por suburb em todos os objetos porque alguns são realmente hamlet, por exemplo. É praticamente trabalho manual de verificar tudo.

No fim tinha nó duplicado, praça representada de forma errada e outras coisas.
Dos 246 nós com place=hamlet, 232 (94.3%) estavam realmente errados (e fiquei muito satisfeito com o resultado do processo).

source=Google in Brazil ☹

Posted by naoliv on 21 December 2015 in English (English)

Idea: trading service for maps

Posted by naoliv on 15 December 2015 in English (English)

I was thinking: we could have some site where we could exchange mapping services, offering to do something or asking to have something mapped.

For example, a mapper could offer:

  • I will map your city for a beer
  • I will name some streets for a postcard
  • I will map every tree in a park for a T-shirt
  • I will survey some street names for nothing, because I just like it

A user could also offer:

  • I will pay a cake for mapping every building in my neighborhood
  • I will give a big thanks in OSM diary if somebody map my small town
  • I will send some cookies if you map the lake where I fish

I don't know if "I will walk your dog and map whatever I see at the street. I will only use your dog as an excuse to map." fits in mapper or user, but the service should allow cases like this too.

But I lack the skills, time and everything else for this.

As a real example, I will pay 10 dollars to have this thing running as fast as possible (code here).

I will also map a small town for such trading service ;-)

Street names in Brazil are doomed

Posted by naoliv on 22 November 2015 in English (English)

There are a lot of street names In Brazil copied from Google, Bing, Waze, Maplink, TrackSource, you name it.
Sometimes (really sometimes) it's possible to spot some, but I think that there are a lot of copied data.

And I guess OSM will always stay tainted. It's just not possible to review all of them...

This discourages me.

Doing some highway/routing QA with Mapbox's Distance API

Posted by naoliv on 2 October 2015 in English (English)

After reading about Mapbox's Distance API I thought "Hmmm... this could be used to QA highways...".

Nothing suspicious was found after taking a (really) quick glance at the distance matrix from the 100 most populous cities in São Paulo state.

But when using the 3 most populous cities from each state in Brazil we saw that Parintins was isolated from the world (and it seems that it was isolated since always).
boneco forcibly^W kindly fixed it in #34348258.

We still need to test some ideas (and milky needs to code them), but we think that they should bring improvements in detecting broken routes (as we could see with Parintins) and misclassified highways.

Mapeando com o osmtracker

Posted by naoliv on 9 September 2015 in Brazilian Portuguese (Português do Brasil)

Caso ainda não conheça o osmtracker, você deveria.

É ótimo para rapidamente marcar pontos, anotações, voz e tirar foto ao fazer survey.

O mais legal, e que criei coragem para riscar da minha lista infinita de coisas a fazer, é que dá para personalizar os botões de acordo com a necessidade do usuário.
Por exemplo, eu uso o aplicativo principalmente para marcar pontos na rodovia:

Rodovia

E nos parques, praças ou trilhas:

Parque

Consigo marcar de forma bem prática os pontos de interesse dos locais, além de também ter todo o traçado percorrido.

People who blindly "fix" things in OSM

Posted by naoliv on 18 August 2015 in English (English)

Sometimes I have the impression that people blindly "fix" some problems in OSM. For example, I saw this:

Motorway links with wrong direction

One user traced the links without any oneway tag and another user just inserted oneway=yes to them. His changeset even says "Fixing motorway_link without oneway"...

If we ignore some not properly traced parts and a missing circular road on top, how could somebody fix them and not see that there are 3 motorway links with the wrong direction?

Diferença entre (tentar) arrumar algo fora do OSM

Posted by naoliv on 30 July 2015 in Brazilian Portuguese (Português do Brasil)

Um amigo me dizendo que alteraram o sentido da rua que ele mora no Waze:

Ah, o waze, ia te falar. Mexeram lá, não pode mais virar na minha rua. Aí reclamei... um usuário editor respondeu. Cadastrei no site que edita mas não tenho privilégio ainda. Eu respondi pro cara meu argumento e ele ignorou. Vou ver se entro lá depois no chat pra discutir com alguém que tenha poder

E depois:

Pior que por causa disso o waze tá gerando umas rotas zoadas. E até menos de 1 mês atrás tava OK

Ao contrário do exemplo acima, no OSM qualquer um pode editar qualquer lugar, sem burocracia e com o diferencial de dar importância às pessoas que têm conhecimento do local!

It's too damn high

Posted by naoliv on 24 July 2015 in English (English)

Imports

Oficina de OpenStreetMap em Campinas - SP

Posted by naoliv on 22 June 2015 in Brazilian Portuguese (Português do Brasil)

Dia 27 de junho, sábado, teremos uma oficina de OpenStreetMap em Campinas - SP, das 14:00 às 17:00, totalmente gratuito.

Pessoas que queiram aprender, conversar, tirar dúvida, trocar ideias ou discutir qualquer outro assunto relacionado ao OSM estão convidadas.

Inscrições e maiores informações em
http://revoada.net.br/oficina-maptimecps-introducao-ao-open-street-maps/

Colorindo rodovias

Posted by naoliv on 15 June 2015 in Brazilian Portuguese (Português do Brasil)

Mais uma da série "Formas diferentes de visualizar o mapa"

Não sei se todos conhecem, mas existe um tipo de relação específica para rotas de rodovias/estradas.

Todas as relações, de modo geral, servem para agrupar objetos com uma mesma característica ou para compartilhar elementos (evitando assim objetos desnecessários ou duplicados no mapa).

No caso das relações de rota, é algo muito útil para associar as várias partes de uma mesma rodovia, para representar diferentes trechos compartilhados¹, rotas turísticas (a Estrada Real é um bom exemplo que poderia ser mapeado no OSM), verificar continuidade, entre outras coisas.


¹ O que seria um "trecho compartilhado"?

Peguemos um trecho qualquer da SP-330, a Rodovia Anhanguera:
http://www.openstreetmap.org/way/241173757

Este mesmo trecho faz parte de "duas" rodovias (ou de outra forma, possui duas denominações):

Este pedaço poderia fazer parte de tantas outras rodovias ou rotas (turísticas, de ônibus, etc) quanto for necessário, sempre utilizando relações para isso.


Mas bem, quem trabalha com relações de rota já deve ter tido dificuldade de visualizá-las no JOSM. Ou a minha ignorância é grande e não consegui achar como fazer isso no JOSM ou ele realmente não tem uma opção de destacar todos os trechos que fazem parte de uma relação (e manter o destaque, mesmo selecionando e editando outros objetos).

Só que isso é muito fácil com, é claro, mágica!

Para os exemplos vamos trabalhar com essa pequena área: Área de exemplo

Quem abre o local no JOSM não enxerga em um primeiro momento o que compõe a SP-330 ou outra rodovia qualquer: Visualização padrão

Tudo é representado da mesma forma.

No JOSM até é possível selecionar a relação, dando para ver os objetos que a compõem: Relação selecionada

Mas se selecionar ou for trabalhar com outro objeto, o destaque some.

No entanto podemos sempre destacar todos os caminhos que fazem parte da relação da SP-330, independente dela estar selecionada ou não: Destaque relação

Na cor roxa temos todos os caminhos que possuem highway e que são elementos de uma relação de rota com ref=SP-330:

relation[type=route][ref=SP-330] > way[highway] {
        color: purple;
}

Mas que uso prático alguém poderia ter com isso, além visualizar a rodovia?
É possível enxergar rapidamente alguns trechos que deveriam fazer parte da relação.
Por exemplo, faz de conta que esqueceram de adicionar um dos lados da rodovia na relação. Teríamos uma das mãos sem destaque em roxo: Faltando na relação

Essa faixa da direita precisaria ser adicionada à relação.

Ou então para achar trechos errados, que não deveriam fazer parte da relação: Trechos errados

O trecho em roxo à esquerda claramente não deveria estar incluído nessa relação, já que é outra rodovia (a Washington Luís, SP-310).

Outra coisa que podemos fazer, ainda trabalhando nas rodovias, é destacar os trechos que possuem pedágio.

Trechos que pagam pedágio são representados por toll=yes no OSM, e devem ser utilizados apenas nas partes onde só é possível trafegar com o pagamento de pedágio.
Ou seja, o trecho anterior ao pedágio onde não existe alternativa a não ser seguir em frente e pagar a tarifa, e o trecho após o pedágio, onde só é possível trafegar tendo passado necessariamente pelo pedágio (são os trechos onde não tem como escapar do pedágio, portanto). Não é para se utilizar em toda a extensão da rodovia para indicar que ela possui concessão ou pedágio em alguns trechos.

É muito importante entender isso para representar de forma correta os pedágios na rodovia. Isso influencia diretamente o cálculo de roteadores que possuem a opção "evitar pedágios".

Ainda utilizando o mesmo local, podemos ver os trechos que estão marcados com toll=yes, em verde limão:

Pedágios

way[highway][toll=yes] {
        color: lime;
}

Se for analisar este trecho é possível ver que não está correto o uso de toll=yes (praticamente a rodovia inteira está com a tag, mesmo onde é possível dirigir sem pagar pedágio).

O correto nesse caso deve ser: Pedágios corretos

Dá para ver que quem for entrar na Rodovia Washington Luís, vindo do norte, não vai pagar pedágio. Quem for ficar rodando que nem bobo no trevo também não vai pagar pedágio. Mas obrigatoriamente quem veio do sul e está chegando neste trevo, teve que pagar pedágio, assim como quem está indo na direção sul também pagará.

Misturar vários parâmetros e cores também é possível.
Por exemplo, caminhos que fazem parte da SP-330 e que possuem a tag de pedágio:

relation[type=route][ref=SP-330] > way[highway][toll=yes] {
        color: purple;
        casing-color: yellow;
        casing-width: 2;
}

Para diferenciar dos outros exemplos, este utiliza um caminho roxo com bordas em amarelo: Pedágio e SP

Já temos aqui então outro uso prático para as cores: ver classificações ou marcações erradas. Todo mundo já pode começar a arrumar as relações quebradas e todos os pedágios das rodovias ;-)

Quem for mexer nessa parte de verificação e controle de qualidade das rodovias também pode, em algum momento, querer saber os trechos que algum usuário modificou por último (talvez para verificar locais que foram incorretamente reclassificados, adicionado pedágios, etc).

Não dá para fazer diretamente com MapCSS, mas dá para acessar a função de busca do JOSM através do MapCSS, com JOSM_search().
A busca de objetos de um usuário no JOSM é feita com user:NomeDoUsuário. Por exemplo, para ver o que eu modifiquei por último, basta buscar no JOSM por user:naoliv.
Essa busca só funciona nos objetos abertos no JOSM e apenas retorna a última pessoa que modificou os dados.

Unindo então a busca do JOSM por objetos modificados com algum parâmetro de seleção do MapCSS, podemos ver todas as rodovias que alguém modificou em alguma área.

Utilizando Ribeirão Preto como exemplo: Ribeirão Preto

/* destaca tudo o que fui o último a modificar */
way[highway][eval(JOSM_search("user:naoliv"))] {
        color: fuchsia;
        z-index: 1;
}

/* escurece todo o resto */
*[eval(JOSM_search("-user:naoliv"))] {
        color: #313131;
        fill-color: #313131;
        symbol-size: 1;
        icon-opacity: 0;
        symbol-stroke-color: #313131;
        text: "";
}

Os destaques em rosa (em homenagem ao nosso amigo leitoso) são as ruas onde a última modificação é minha.

Entendendo isso dá para aplicar mais estilos para várias outras situações ou necessidades.
Pode-se dar destaque em ruas que não possuem superfície, número de faixas, velocidade máxima, nome, etc.
É o que muitos dos estilos do JOSM fazem.

Location: Rodovia Anhanguera, Cordeirópolis, Microrregião de Limeira, Mesorregião de Piracicaba, São Paulo, Região Sudeste, 13484270, Brasil

Colorindo mapas

Posted by naoliv on 28 May 2015 in Brazilian Portuguese (Português do Brasil)

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.

Cidades do Brasil

Posted by naoliv on 26 May 2015 in Brazilian Portuguese (Português do Brasil)

Da série "Formas diferentes de visualizar o mapa"

O Brasil é muito grande e tem muitos locais habitados (eu sei disso e você também sabe): Locais habitados

Tudo isso é o que existe de place=city, place=town, place=village e place=hamlet.
Só que ter algo pontual, sem cor, sem informação nem qualquer outro atributo é muito chato de se ver.

Mas com o JOSM e um pouco de magia negra dá para, de forma muito simples, visualizar de outras formas (e fazer análises, se quiser).

Por exemplo, os mesmos dados coloridos com intensidade baseada na classificação do local (cidades maiores de 100 mil habitantes são verdes, entre 10 e 100 mil amarelas, menor de 10 mil alaranjadas, hamlets marrons e tem uns roxos que não lembro se talvez escaparam alguns place=isolated_dwelling):

Colorido

Melhor!
Mas e se representar o tamanho do local de acordo com a classificação também?
city > town > village > hamlet

Por tamanho

Já dá para ver de forma um pouco mais clara onde estão localizadas as maiores cidades e as menores comunidades (fica bem claro, por exemplo, que na região Norte tem bastante comunidade pequena e que elas estão muito próximas aos rios).

Ou de acordo com a codificação do JOSM (city = roxo, town = vermelho, village = laranja, hamlet = amarelo):

JOSM

Dá também para ver o óbvio (cidades grandes, em sua maioria, encontram-se no litoral): Litoral

Ou que as cidades (com mais de 10 mil habitantes) do oeste de SP encontram-se próximas às rodovias e ferrovias (muitas se desenvolveram por causa da ferrovia): Oeste de SP

Dá para brincar de muitos modos com a representação dos dados (não só com cidades, mas praticamente com qualquer coisa).

Também dá para visualizar objetos representados de forma incorreta. Por exemplo, muitos bairros estão representados como place=hamlet ao invés de place=suburb

Custom/specific/specialized/regional/whateveryouneed validation rules for JOSM

Posted by naoliv on 28 April 2015 in English (English)

After ~16 months from this we now have 3⁽¹⁾ specific/specialized/regional validation rules available for JOSM.

Czechs broke our hegemony of Portuguese speaking countries >:-(
But this is very good! It means better tests and possible⁽²⁾ better data in OSM.

Rules can be created for specific countries, areas (both as "knowledge area" or "geographical area"), tags, objects or whatever you want or need.

They could (and should!) be more and I am sure that every OSM community would benefit a lot with custom validation rules for their countries or specific needs.

⁽¹⁾ yes, I know how to count (sometimes, at least); both Portuguese rules should be merged into one in the future
⁽²⁾ possible because validation and testing isn't magical; it depends on who is analyzing and fixing the problems to have a good result

Analisando dias atípicos e changesets suspeitos

Posted by naoliv on 25 April 2015 in Brazilian Portuguese (Português do Brasil)

Para quem não conhece, temos um site com bastante tipo de estatísticas e visualizações de dados em http://resultmaps.neis-one.org/
Uma delas é a parte que mostra as estatísticas diárias de um determinado país, como a do Brasil

Dando uma breve olhada nos gráficos a gente acaba reparado em alguns picos bem atípicos para o padrão de edição em nosso país: Atípico

O pico maior de adição de nós ocorreu em 27 de fevereiro de 2014 (mais de 1 ano atrás), com 89404 nós adicionados (seguido de várias remoções).
Os dois próximos picos em verde ocorrem em 19 de janeiro desse ano, com 50133 nós adicionados, e em 9 de março, com 50862 nós.

Mas como encontrar o que foi alterado nesse dia sem precisar baixar o mundo inteiro ou ter uma base histórica do Brasil inteiro?
Através da API do OSM (devo uma cerveja pro pnorman pela sugestão)

Para obter os changesets de uma área precisamos do bbox e do período que desejamos.
O bbox conseguimos de forma bem fácil através do JOSM:

  • baixar a relação do Brasil
  • selecioná-la
  • Ctrl+i
  • pegar o bbox calculado: -73.9830625,-33.8689056,0.0,5.2842873

A data também temos (dia 27 de fevereiro de 2014), só precisando alterá-la para um formato reconhecido pela API.

Com um simples GET "http://api.openstreetmap.org/api/0.6/changesets/?bbox=-73.9830625,-33.8689056,0.0,5.2842873&time=20140226T000000,20140227T000000&closed=true" temos então todos os changesets no Brasil de 00:00 do dia 26 de fevereiro de 2014 até 00:00 do dia 27 de fevereiro de 2014. Ou melhor, deveríamos ter...

A API retorna apenas 100 resultados (portanto se o período tiver mais de 100 edições, não retornará todas).

Quebrando as requisições em períodos menores, de 1 hora (ou, em alguns casos, de meia hora), temos então todos os changesets de um dia inteiro.

Com cada id de changeset fica fácil obter os dados deles e analisar o que aconteceu: quem editou no Brasil, que horas, qual editor utilizou, quantos objetos adicionou, removeu, modificou, etc.

O bom disso é que abre muitas possibilidades: podemos analisar qualquer dia anterior onde há picos no gráfico (seja por adição ou remoção de objetos) ou então, futuramente, analisar os dados diariamente na busca, também, de edições suspeitas.

Não é nada complicado e dá para ser todo automatizado o processo.

Por essa pequena análise pudemos ver que um usuário alemão é muito ativo no Brasil (ou era naquela época, pelo menos), que houve uma modificação automatizada de nomes de ruas e também, infelizmente, uma importação...

A importação precisará ser analisada, junto com os outros changesets do usuário.
Outros dias atípicos também serão verificados na medida do possível.

Aceito correções de ortografia, Português e pedidos para explicar algo melhor, desde que saiba explicar :-)

Enxergando o mapa de outras formas

Posted by naoliv on 20 April 2015 in Brazilian Portuguese (Português do Brasil)

Dá para praticamente enxergar a área do estado e as principais rodovias utilizando apenas as pontes mapeadas em SP (bridge=*)

Pontes do estado de SP

Welcome message for new users in Brazil

Posted by naoliv on 9 December 2014 in English (English)

Since July 15 we are sending a welcome message to new users in Brazil.

My ugly-but-functional mirrored-naoliv bot parses the osmbot-test output (the ones that say "foo just started editing…") and automatically¹ sends a message.

The welcome message basically, as the name says, gives a welcome, points the user to the beginners guide, to our wiki portal, explains that things shouldn't be copied from other places and asks the user to always ask the more experienced mappers in case of doubts (something that seems wrong doesn't mean that it is).

The message also invites the user to join our mailing list, the forum and/or the IRC channel, if he wants (or directly answer the message if he has any doubts and feels more comfortable doing so).

It took 435 messages to have one person joining our #osm-br channel.
With a better stats, 12 users replied the welcome message (messages sent to viloan arrive to me)

I still need to answer most of them… :-/
This remembers me that I also need to think and discuss with other colleagues if these messages could be redirected to talk-br (so more people could answer the doubt and the answer won't be delayed if I am busy)

¹ Some people may argue that it's wrong to automatically spam the new users with a message, but it's a one-time-only friendly message (with useful information and defined together among some mappers). We just don't have enough people here to manually process and send the messages.

Older Entries | Newer Entries