OpenStreetMap

naoliv's Diary

Recent diary entries

Taking the opportunity to scratch some things from the endless to-do list, I asked MapTiler if they could host some layers for us, the Brazilian OpenStreetMap community.

I explained our needs and our limited resources (people, time, infrastructure, financial, etc.) and they accepted!

They were very solicitous, attentive and open in helping us (and thus, OpenStreetMap), and they deserve our thanks!

Nowadays we have the IBGE map of urban areas, which usually meets our needs in order to get the name of some street.

But we also know that in some places there is no data, lack or illegibility of names, etc.

For example, here in Londrina we can see that there is no name in several streets in the urban areas layer:

But we have this information available in the new layer:

In Juazeiro do Norte we can see a “hole” in the current layer, without any information (not even the shape of the streets), but which can be complemented by the new layer:

In Praia Grande we can see sections with a low legibility of the names:

And that can also be improved with the use of the new layer:

It is interesting to note that, in general, the data also align very well with the satellite images:

Using the layer

The layer is already available in JOSM (under the name of IBGE Street Names) and you can simply enable it.

In iD, for now, it is necessary to use a custom background layer, with the following address:

https://maps.tilehosting.com/c/1c4f953c-e2be-42f4-ac76-ae6fed6f7534/styles/faces/{z}/{x}/{y}.png?key=YmPoUxbTlEHlrASzv56Z

And for anyone using JOSM, depending on the version of Java that you’re using, you’ll need to use -Dhttps.protocols=TLSv1,TLSv1.1,TLSv1.2.
It’s a Java problem that causes sporadic errors while loading some tiles.

Finding streets without a name

An interesting thing to do is to use the no name layer made by Simon Poole (who also deserves a thanks for this service).

In JOSM the layer is named QA No Name; you can simply enable it and see the places that do not have a name (in red):

For example, in Lençóis Paulista it’s possible see that several streets are unnamed:

And we have this information in the new layer:

Some known issues

The data of this new layer is not always correct or complete.
For example, in Marília we have all the geometry of the streets, but there is no name:

In some places the layer may only be used for geometry checking.

In other places there is a displacement problem and you can simply readjust the alignment of the layer inside the editor.

For Salvador and Distrito Federal, Wille has already provided layers with corrections for some of these problems.

Probably some other kinds of problem in other places will also be found over time.

Contributing

This part is slightly smaller than the post in Portuguese (omitting some details perhaps more directed to Brazilians), but as you map the regions you are interested in, and using the layer, you just have to look for anything strange that you notice.

Again, it is good to remember that the IBGE data have displacement errors, lack of information or incorrect information.

Any kind of suggestion, error or something suspicious, please create a ticket in github, so that it can be verified later.

Conclusion

None of the layers (IBGE’s urban areas and street names) have all the data and they should be treated as complementary (the street name that does not exist in one maybe can be found in the other).

This should help to further improve the quality of our data.

The layer is synthetically described on the OSM wiki.

The service does not have unlimited resources and it is expected that there will be no abuse of it.

Sorry for the long text, for the delay in making this data accessible, sorry if I forgot something or if something needs to be improved/clarified (let me know) and thanks again to the nice guys at MapTiler.

Aproveitando para riscar algumas coisas da lista infinita de tarefas, perguntei ao pessoal da MapTiler se poderiam hospedar algumas camadas para nós, da comunidade brasileira do OpenStreetMap.

Expliquei as nossas necessidades e a nossa limitação de recursos (pessoal, tempo, estrutura, financeiro, etc) e aceitaram!

Eles foram bastante solícitos, atenciosos e abertos em ajudar-nos (e, logo, o OpenStreetMap no geral), e merecem um muito obrigado nosso!

Atualmente temos a camada de setores urbanos do IBGE, que comumente atende às nossas necessidades de se obter o nome de alguma rua.

Mas também sabemos que em alguns locais há ausência de dados, falta ou ilegibilidade de nomes, etc.

Por exemplo, aqui em Londrina podemos ver que não há nome em várias ruas na camada de setores urbanos:

Mas temos essa informação disponível na nova camada:

Em Juazeiro do Norte podemos ver um “buraco” na camada atual, sem qualquer tipo de informação (nem mesmo o traçado das ruas), mas que pode ser complementada pela nova camada:

Em Praia Grande há trechos com pouca legibilidade dos nomes:

E que também podem ser melhorados com o uso da nova camada:

É interessante notar que, em geral, os dados também se alinham de forma muito boa com as imagens de satélite:

Usando a camada

A camada já está disponível no JOSM (com o nome de IBGE Nomes de Ruas), bastando apenas habilitá-la.

No iD, por enquanto, é necessário utilizar uma camada de fundo customizada, com o seguinte endereço:

https://maps.tilehosting.com/c/1c4f953c-e2be-42f4-ac76-ae6fed6f7534/styles/faces/{z}/{x}/{y}.png?key=YmPoUxbTlEHlrASzv56Z

Para quem for usar o JOSM, dependendo da versão do Java que estiver utilizando, será preciso usar -Dhttps.protocols=TLSv1,TLSv1.1,TLSv1.2.
É um problema do Java que causa erro esporádico ao carregar alguns tiles.

Encontrando locais sem nome

Uma coisa interessante de se fazer é utilizar uma camada de ruas sem nome feita pelo Simon Poole (que também merece um obrigado por esse serviço).

No JOSM a camada está nomeada como QA No Name, bastando apenas habilitá-la e ver os locais que não possuem nome (em vermelho):

Por exemplo, é possível ver que em Lençóis Paulista vários trechos estão sem nome:

E que temos essa informação na nova camada:

Alguns problemas conhecidos

Os dados dessa camada também não estão sempre corretos ou completos.
Por exemplo, em Marília temos toda a geometria das ruas, mas não há qualquer nome:

Em alguns locais, talvez, a camada servirá apenas para verificação de geometria.

O original de Marília, nesse caso, está disponível aqui (e fico grato se alguém puder confirmar que os nomes realmente não existem e que não estou fazendo algo muito errado)

Em alguns locais há problema de deslocamento, bastando apenas reajustar o alinhamento da camada dentro do próprio editor.

Para Salvador e Distrito Federal, o Wille já disponibilizou camadas com correções para alguns desses problemas.

Provavelmente alguns tipos de problemas em outros locais também serão encontrados com o tempo.

Colaborando

À medida em que forem mapeando as regiões que vocês têm interesse, e usando a camada, basta ir reparando em algum problema ou coisa estranha que notarem.

Novamente, é bom lembrar que os dados do IBGE possuem erros de deslocamento, ausência de informação ou informações incorretas.

É possível corrigir alguns tipos de problema, como alguma palavra escrita de maneira incorreta.

Existe uma lista das palavras mais comuns, que é útil para ser utilizada ao se propor a correção de algum problema.

Por exemplo, corrigir Joao para que vire João é útil, já que é uma palavra utilizada várias vezes. Corrigir uma palavra que é utilizada uma única vez, no entanto, já não compensa o trabalho.

A lista de palavras que são/foram corrigidas pode ser vista a partir daqui

Também existe uma lista de cidades sem nome (que será atualiza à medida em que for relatado e verificado algum caso de ausência de nomes)

De toda forma, qualquer tipo de sugestão, erro ou algo suspeito, por favor, criem um ticket no github, para que possa ser verificado posteriormente.

Concluindo

Nenhuma das camadas (a de setores urbanos do IBGE e a de nome de ruas) possui todos os dados e devem ser tratadas como complementares (o nome de rua que não existe em uma talvez possa ser encontrado na outra).

Isso deve ajudar a melhorar ainda mais a qualidade dos nossos dados.

A camada está descrita de forma sintética na wiki do OSM.

O serviço não possui recursos ilimitados e é esperado que não exista abuso do mesmo.

Desculpe pelo texto longo, pela demora em tornar esses dados acessíveis, se esqueci de algo, se precisa melhorar/esclarecer alguma coisa (me avisem) e obrigado novamente ao pessoal da MapTiler.

Para quem desejar utilizar as Cartas Topográficas Matriciais do Banco de Dados Geográfico do Exército Brasileiro no JOSM basta:

Clicar no menu CamadasPreferências das Camadas

  1. Clicar no botão 🔄 para atualizar a lista de camadas disponíveis
  2. Procurar e selecionar a camada Cartas Topográficas do Exército Brasileiro na lista de provedores de imagens
  3. Ativar a camada
  4. Aceitar

A nova camada estará disponível no mesmo menu Camadas:

As informações disponíveis nessa camada são muito parecidas com o Mapa de Setores Rurais do IBGE.

IBGE:
BDGEx:

É possível observar que a camada do Exército apresenta curvas de níveis enquanto que a do IBGE apresenta algumas fazendas/localidades a mais, além de limites administrativos e limites definindo áreas urbanizadas.

Independente da similaridade (ou da pequena diferença), é muito útil para lugares onde a camada de setores rurais está indisponível ou apresentando algum outro tipo de problema:

‒ Ow, me perdi numas rotatórias doidas na hora de voltar
‒ Onde isso?
‒ Indo pra Ribeirão; é um trecho novo que construíram
‒ Me mostra no mapa onde fica
(…)
‒ Vamos um dia lá mapear isso

Depois de dirigir 90+ km e ficar parecendo idiota dando várias voltas no lugar, ganhamos um track com o traçado do retorno novo:

Ficando com essa coisa bonita no fim:

Desconfiando que só o OSM teria esse retorno novo, fui olhar os outros mapas.

Google não tem:

Bing não tem:

Mapnik não tem:

TomTom não tem:

Mas o Here já tinha…

Que por sinal é bem parecido com o estilo do Mapquest (que é OSM):

E até o Waze tinha…

Waze vou desconsiderar. Apesar de estar funcional, não está certinho.

Eu ia deixar isso tocando em loop infinito pra ficar tirando sarro dos outros mapas:
https://youtu.be/zMFqTzH_dn0

Ia até fazer um filme com os melhores momentos e áudios do survey:
https://youtu.be/lJgdddNmXG0

Mas o Here cortou o meu barato…

Location: Quinta dos Buritis, Água Vermelha, São Carlos, Região Imediata de São Carlos, Região Geográfica Intermediária de Araraquara, São Paulo, Região Sudeste, Brasil

I will pay one cake, beverage or even send a T-shirt if somebody teach/give me code to identify changesets where street names were inserted.

ie, there was a lot of already traced highways and then somebody modified them, inserting names.

What I would like to do:

  1. identify every changeset where street names were inserted in a specific area (Brazil, for example); sorting by the number of affected ways in each changeset would be nice
  2. filter by a specific username
  3. filter where street names were inserted and some specific value is not present in changeset’s source, source:name or imagery_used

I can host a postgis database with the data if needed (I guess that some SQL black magic will solve this)

Cake, beverage, T-shirt and US$ 100 via paypall if somebody gives me all these 3 features.

Quando usar túnel e ponte/viaduto juntos

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

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).

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).

Idea: trading service for maps

Posted by naoliv on 15 December 2015 in 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 ;-)

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.

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.

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?

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!

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/