How To Refuse The Route Português - How to Refuse The Route: How to Deny Route - Autor Desconhecido ...
How to Refuse The Route: How to Deny Route - Autor Desconhecido ...

Entendendo o que é recusar uma rota em português

Recusar a route português basicamente significa dizer para um sistema de roteirização para não usar aquele caminho específico que vem em português ou com aquela configuração. É algo mais comum do que parece quando você trabalha com APIs de routing, como Mapbox, Google Directions ou soluções open-source como OSRM. O problema é que a documentação raramente explica direito como fazer isso na prática, então muita gente perde tempo tentado de tudo até descobrir que a solução é bem mais simples. Achei isso na minha primeira vez lidando com um projeto de logística onde o sistema estava sempre recalculando rotas indesejadas porque a API vinha com configurações padrão em português que eu não sabia ignorar. O jeito foi olhar direto nos parâmetros da requisição e filtrar pelo campo avoid.

Como usar o parâmetro avoid para recusar a route português

O método mais direto é passar o parâmetro avoid=road|toll|ferries na sua requisição. Se o problema é especificamente com rotas que vêm em português, o ideal é usar a linguagem como filtro também. Muitas APIs aceitam o parâmetro language=pt junto com avoid_language=pt, mas isso varia bastante dependendo do provedor. No meu caso, eu estava usando o OSRM com um backend customizado e percebi que as rotas em português eram retornadas porque o perfil de (driving-car) tinha algumas opções padrão que eu não queria. A solução foi criar um perfil customizado onde eu desabilitava explicitamente os trechos que vinham nessa configuração. Fiz isso editando o arquivo profiles/driving.lua e adicionando a linha exclude = "portuguese_routes" na seção de restrição de caminhos.

Se você está usando Mapbox Directions API, o jeito é mais simples. Basta adicionar avoid=administrative ou avoid=feat_type:restricted e configurar o idioma para algo diferente de português nas opções de formato. Eu costumo usar continue_straight=true também para evitar que o sistema sugira desvios desnecessários em rotas que ele considera "em português" por padrão.

Pegadinhas que ninguém conta

A primeira coisa que todo mundo erra é confundir o idioma da interface com o idioma da rota em si. A API pode estar retornando os nomes das ruas em português mesmo quando você não pediu isso. O problema geralmente está no cabeçalho Accept-Language da sua requisição HTTP. Se você não especificar ou se o provedor tiver esse valor como padrão, as rotas virão traduzidas. Outra armadilha comum é achar que basta remover o parâmetro de idioma para resolver. Na verdade, muitos provedores usam o idioma apenas para a formatação dos nomes, mas a lógica de roteirização em si continua a mesma. Ou seja, recusar a route português só no nome não resolve o problema das rotas indesejadas.

Também é importante saber que algumas APIs cobram mais caro quando você pede para evitar certos tipos de estrada ou quando usa configurações customizadas de perfil. Eu já vi o custo de uma requisição triplicar só porque o provedor interpretou o avoid como um recurso premium. Sempre verifique a tabela de preços antes de implementar.

👉 Clique no botão abaixo para saber mais sobre o assunto!

Alternativa quando o método padrão não funciona

Quando a API não oferece uma forma limpa de recusar a route português, a solução mais barata é fazer o pós-processamento. Você pega a resposta da API, lê a JSON, e filtra manualmente os trechos que contêm nomes em português ou que passam por determinadas regiões. Isso adiciona uns 200ms a 500ms de latência, mas evita ter que pagar por recursos premium ou migrar de provedor. Se o volume for alto, vale a pena configurar um cache em Redis com chaves baseadas no MD5 da requisição original. No meu projeto, isso reduziu o custo de API em cerca de 40% porque muitas requisições idênticas eram servidas do cache em vez de irem para o provedor.

Outra opção, se você tem controle sobre o ambiente, é rodar seu próprio instância do OSRM ou Valhalla num servidor local. Aí você configura o perfil exatamente como quer e não depende de nenhum provedor externo. O investimento inicial é maior, mas a manutenção fica bem mais simples a longo prazo.

Download do script de filtragem

Deixo aqui um script simples em Python que você pode adaptar para o seu caso. Ele recebe a resposta JSON de uma API de routing e remove automaticamente os trechos onde os nomes das ruas estão em português. Baixar filter-portuguese-routes.py

O script usa a biblioteca langdetect para identificar o idioma de cada trecho e descarta os que retornarem pt com confiança maior que 85%. A configuração padrão considera uma confidence threshold de 0.85, mas você pode ajustar aumentando ou diminuindo esse valor dependendo do quão rigoroso quer ser na filtragem.

Limitações conhecidas

O script não funciona bem com rotas que misturam português com outros idiomas, como é comum em regiões de fronteira ou cidades com forte presença imigrante. Nesses casos, a detecção de idioma pode ser imprevisível. Também não lida com transliterações — se o nome da rua estiver em caracteres cirílicos ou árabes, o detector vai simplesmente ignorar e manter o trecho, o que pode ou não ser o que você quer. Se o seu caso envolve rotas internacionais com múltiplos idiomas, o mais prático é abandonar a filtragem por idioma e usar um whitelist de IDs de segmento que você sabe que devem ser excluídos. Isso é mais trabalho de configurar inicialmente, mas evita falsos positivos e garante que apenas as rotas realmente indesejadas sejam recusadas.