OpenStreetMap

Quem já compilou mapas com o mkgmap já deve ter percebido um problema comum: ao pesquisar por nome de vias (Ruas) a pesquisa somente encontra resultado quando você digita o nome completo da via. Imagine que a via se chame “Travessa Antônio Maurizi”, caso você pesquise por “Maurizi” ou “Antônio Maurizi” nada é encontrado. O problema disso é que você é obrigado a saber o Tipo do logradouro (Rua, Travessa, Avenida, etc) para pode fazer a busca. Se você não souber vai ter que ficar na tentativa e erro.

Para resolver isso algumas pessoas criavam regras no “Style File” jogando o primeiro nome da via para a última posição. Assim, “Travessa Antônio Maurizi” ficaria “Antônio Maurizi Travessa”. Isso permite que a pesquisa por “Antônio Maurizi” retorne o nome da via, nesse caso eu não preciso digitar o nome completo e nem saber o tipo de logradouro. Porém a pesquisa por “Maurizi” continua a não trazer resultados.

Abaixo exemplo de alguns comandos no “Style File” que permitem fazer esse tipo de pesquisa:

highway=* & name ~ ‘(?i)travessa\s+.*’ { add streettype:movedend=’${name|subst:(?i)travessa\s+~>}, Travessa’}

highway=* & name ~ ‘(?i)rua\s+.*’ { add streettype:movedend=’${name|subst:(?i)rua\s+~>}, Rua’}

highway=* & name ~ ‘(?i)avenida\s+.*’ { add streettype:movedend=’${name|subst:(?i)avenida\s+~>}, Avenida’}

A desvantagem dessa solução é que a pesquisa pela terceira palavra do nome continua não trazendo resultados. Além disso, o IMG gerado pelo mkgmap fica maior, não muito maior, mas maior do que um mapa que não é compilado com essa solução.

Para resolver o problema em definitivo as versões recentes do mkgmap (lançadas pós 2015) trazem uma opção chamada “–x-split-name-index”. Essa opção não é habilitada por padrão assim para usá-la é necessário fazer a chamada dela explicitamente. Sua linha de comando ficaria parecida com esta:

java -jar mkgmap.jar –x-split-name-index –housenumbers –route –index –gmapsupp brazil.osm.pbf

Essa opção nova no mkgmap ainda está em testes. Caso encontre erros avise o time de desenvolvimento do mkgmap. Na lista do mkgmap esse problema foi referenciado como problema do “multi-word street search”.

Referências: Wiki OSM | Documentação mkgmap | Lista de e-mail do mkgmap | Kit cocar de compilação

Discussion

Comment from Robinson Almeida on 19 April 2015 at 18:23

Caro Oeslei,

Excelente, estou produzindo um mapa da região onde moro e esta situação na busca de endereços me incomodava bastante. Ví seu comentário no site do Cocar, falando sobre este assunto e já fui logo testar, funcionou perfeitamente. Outro detalhe, que acho ainda precisa de acerto, é solicitação do número antes do nome do logradouro. No último mapa do Cocar esta situação foi sanada, mas no Tracksource ainda não. No mais agradeço a informação. Aproveitando, gostaria de saber se posso usar este canal para tirar dúvidas de compilação com o mkgmap com vc?

Comment from oesleiribas on 20 April 2015 at 13:18

Pode tirar dúvidas sim, posso te ajudar no que for de meu conhecimento.

Abraços Oéslei.

Comment from Robinson Almeida on 12 May 2015 at 22:29

Olá !

Bom, realizei um trabalho de campo, em GPX, da minha cidade. Usei o JOSM, para editar as informações do GPX e converter em um .osm. Após alguns dias de testes, tentativa e erro, pois não sou grande conhecedor de programação, consegui realizar o roteamento de minha cidade, cerca 2.500 mts quadrados. Acabou que fiquei empolgado com a ideia e decidi inserir outros seis municípios vizinhos. Foi aí que a coisa desandou, o roteamento ficou maluco. Consigo chegar até algumas ruas de alguns municípios e as vezes dentro do mesmo município, para ir para outro logradouro, tenho que reconfigurar meu GPS, ora para rota mais rápida, ora para rota mais curta. Para alguns outros municípios o GPS informa que”não foi possível criar a rota”. Achando que fosse com relação aos limites dos municípios inseri no mesmo arquivo, de ruas, os limites destes municípios, retirados das fontes do IBGE. Relacionei, no JOSM as ruas aos imites, e nada. Tentei usando o splitter, no mapa, mesmo assim não. Agradeceria se pudesse me dar uma luz.

Comment from oesleiribas on 13 May 2015 at 00:24

Bom antes de procurar erros no mkgmap o ideal é ver se o erro não está no mapa. Se o mapa estiver no OSM você pode simular rotas usando o OSRM (http://map.project-osrm.org/). Se os dados estiverem apenas no seu computador você pode simular as rotas usando um plugin de rota no JOSM (http://wiki.openstreetmap.org/wiki/JOSM/Plugins/Routing).

Acredito que deva ter algum problema no seu mapa: (a) ruas com mão única que não permitem roteamento; (b) vias sem as tags corretas; (c) vias desconectadas; (d) vias com restrições de tráfego; (e) outras coisas…

Outra coisa importante, quando você for fazer rotas no GPS deixe ativo APENAS um img, é possível deixar mais de um img ativo, porém isso pode apresentar problemas de roteamento. Assim se você tem por exemplo 5 cidades, gere um único img com as 5 cidades, não gere um img para cada cidade.

Comment from Robinson Almeida on 13 May 2015 at 12:54

Caro Oeslei,

Com relação, as vias com mão única, os testes que realizo, com GPS ligado aos satélites, que por ventura passem por alguma via de mão única, já realizei a verificação de todas e estão corretas. Quanto aos nós de roteamento, eu não conhecia este plugin informado vou verificar com ele, entretanto, já havia realizado a conferencia destes nós usando o GPS Map Edit, em uma arquivo .mp. Neste software o roteamento está normal, só depois da compilação é que os problemas aparecem. Não estou usando nenhum arquivo de estilos na compilação. Obrigado.

Log in to leave a comment