Ir para o conteúdo
ou

Software livre Brasil

 Voltar a Blog
Tela cheia Sugerir um artigo

Mkgmap: Pesquisa por nome de vias

13 de Abril de 2015, 21:16 , por OpenStreetMap diary entries in Brazilian Portuguese - 0sem comentários ainda | Ninguém está seguindo este artigo ainda.
Visualizado 17 vezes

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


Fonte: http://www.openstreetmap.org/user/oesleiribas/diary/34749

0sem comentários ainda

Enviar um comentário

Os campos são obrigatórios.

Se você é um usuário registrado, pode se identificar e ser reconhecido automaticamente.