Criar recursos de validação de local usando a Plataforma Google Maps

Objetivo

Muitas vezes, você precisa validar a localização de um lugar. Existem alguns serviços diferentes na Plataforma Google Maps que podem ajudar nesse caso de uso. Este documento ajuda você a escolher entre os dois principais serviços de validação de local: a API Address Validation e a API Geocoding.

A API Address Validation é uma oferta da Plataforma Google Maps que ajuda os clientes a validar se um endereço está correto ou não.

Geocodificação com a API Geocoding é o processo de conversão de endereços em coordenadas geográficas, que você pode usar para colocar marcadores em um mapa ou uma posição no mapa.

Confira aqui uma visão geral das diferenças entre a Address Validation e a Geocoding API.

Quando escolher a API Address Validation ou a API Geocoding

Address-Validation-vs-Geocoding

Observações sobre o fluxograma acima:

  • O caso de uso de interação do usuário se refere a quando um usuário está presente para interagir com os resultados.
  • O Places Autocomplete é uma API JavaScript, ideal para integração com interfaces do usuário.
  • Talvez você esteja ciente dos problemas de qualidade de dados nos seus endereços atuais. Mesmo que você queira apenas geocódigos, aconselhamos executar esses locais com a API Address Validation para corrigir os conjuntos de dados.

Há muitas situações em que você pode optar, com base na árvore de decisão acima, usar um produto em vez de outro. Mas outras situações podem envolver o uso dos dois produtos para atingir suas metas.

É possível usar a API Address Validation em vez da API Geocoding quando:

  • Há uma grande chance de dados questionáveis ou em que um endereço incorreto terá um impacto negativo no downstream. Isso ocorre porque a API Address Validation fornece mais feedback sobre por que uma entrada não recebeu um resultado de alta precisão.
  • você precisa corrigir entradas do usuário (por exemplo, erros de digitação ou campos ausentes), o que aumenta a probabilidade de um resultado preciso na saída.
  • Sua região de destino retorna mais metadados da API Address Validation em comparação com a API Geocoding, como a classificação do tipo de edifício como residencial ou comercial.

É possível usar Geocoding em vez da API Address Validation quando:

  • Seu objetivo principal é recuperar a localização de um endereço, e a precisão de endereços individuais pode não ser fundamental.
    • Por exemplo, para gerar um mapa de calor usando um conjunto grande de dados.
  • Você precisa de uma solução global, e a API Address Validation não está disponível em todas as regiões de destino.

Confira a seguir alguns exemplos que demonstram os recursos da API Address Validation em comparação com a API Geocoding.

Exemplo de endereço inválido

1 Fake St, Mountain View, CA 94043, EUA

A API Address Validation divide essa entrada em componentes de endereço individuais (rua, cidade, estado etc.). Ele também pode fornecer feedback granular sobre o motivo de o endereço não ser válido para um nível PREMISE.

A rua falsa não existe em Mountain View, na Califórnia, e a API Address Validation reflete isso nos detalhes no nível do componente retornado:

{
  "componentName": {
    "text": "Fake St",
    "languageCode": "en"
   },
   "componentType": "route",
   "confirmationLevel":"UNCONFIRMED_BUT_PLAUSIBLE"
 }

A propriedade importante a ser inspecionada nesse caso é confirmationLevel. Ao retornar UNCONFIRMED_BUT_PLAUSIBLE em relação à Fake St, a API determinou que seria possível que uma rua tivesse esse nome como nome, mas não é possível fazer a correspondência com os dados de endereço de suporte.

Usando o resultado da API como feedback, pode-se deduzir que há falhas no componente de rua dessa entrada (Fake St).

Usando o mesmo endereço com a API Geocoding, é possível fazer uma correspondência em "Califórnia", como você pode conferir na captura de tela da ferramenta de geocodificação que pode ser testada aqui:

alt_text

No entanto, o resultado é um geocódigo de todo o estado, com feedback mínimo sobre quais componentes na entrada poderiam estar com defeito.

Exemplo de erro ortográfico

76 Buckingamm Palace Road, Londn, SW1W 9TQ, GB

O endereço acima contém alguns erros de ortografia, um no nome da rua e outro na região administrativa.

Tanto a Address Validation e a Geocoding API são capazes de corrigir esses erros e alcançar o resultado da 76 Buckingham Palace Road, Londres, SW1W 9TQ. No entanto, a API Address Validation pode fornecer mais informações sobre o processo.

Confira um dos componentes do endereço com erros ortográficos na entrada:

{
  "componentName": {
    "text": "Buckingham Palace Road",
    "languageCode": "en"
        },
        "componentType": "route",
        "confirmationLevel": "CONFIRMED",
        "spellCorrected": true
     }
}

A API Address Validation retorna uma sinalização para indicar que o campo foi corrigido. A lógica de negócios pode ser implementada nessa flag para verificar novamente a correção com o provedor de dados, como um cliente em uma finalização de compra de e-commerce.

Dados ausentes e exemplo de erro ortográfico

Bollschestraße 86, 12587, Alemanha

O endereço acima tem um erro de ortografia no nome da rua e não inclui a cidade (localidade) de Berlim.

A API Address Validation pode corrigir os dois erros e retorna um geocódigo de nível PREMISE e um endereço que é verificado no nível PREMISE:

Bölschestraße 86, 12587 Berlin, DE

A API Geocoding não consegue superar os erros de entrada nesse caso e retorna um resultado ZERO_RESULTS.

Exemplo de metadados de endereço adicionais

111 8th Avenue Ste 123, Nova York, NY 10011-5201, EUA

O endereço está correto, exceto pelo número da unidade (Ste 123), que não existe no edifício.

A API Address Validation valida o endereço para PREMISE (111 8th Avenue) e fornece alguns metadados sobre a propriedade, inclusive que ela é um endereço comercial

local:

"business": true

Além disso, o valor dpvConfirmation retornado como parte de uspsData na resposta é S:

"dpvConfirmation": "S"

Um valor dpvConfirmation de S indica que o endereço é validado no nível do PREMISE, mas o número de unidade fornecido na entrada não está associado a esse endereço.

A API Geocoding não pode fornecer essa informação.

Noções básicas sobre a resposta da API Geocoding

Visão geral

Se você usar a API Geocoding, o resultado do geocódigo conterá várias pistas na resposta que podem ser usadas para entender os detalhes do endereço fornecido.

A API Geocoding funciona resolvendo componentes de endereço em uma hierarquia.

Por **exemplo, 123 Example Street, Chicago, 60007, USA é resolvido na seguinte ordem:

/ Example Street/ Chicago/ 60007/ USA serão avaliados nessa ordem. A primeira correspondência neste caso é Chicago e, mais especificamente, o CEP 60007. Portanto, ele retorna o seguinte Place_id para esse CEP:

ChIJwRKzf8ixD4gRHiXqucwr_HQ

A API Geocode contém as seguintes informações na resposta:

        "partial_match": true,
           "place_id": "ChIJwRKzf8ixD4gRHiXqucwr_HQ",
           "types": [
               "postal_code"
           ]

A API Geocoding pode confirmar a que tipo de lugar esse endereço pertence. Uma lista do endereço types retornado pela API Geocoding pode ser encontrada aqui.

Se nenhum dos componentes da entrada for resolvido, a API vai retornar:

{
   "results": [],
   "status": "ZERO_RESULTS"
}

Fazer uma solicitação apenas com o endereço e sem o número retorna um resultado no formulário:

"types": [
  "route"
]

Isso significa que a API Geocoding não conseguiu encontrar ou fazer a correspondência com um número de rua.

Observação:para saber se um endereço existe, verifique se algum dos parâmetros (como types e partial_match, results, status)) está definido na resposta da API Geocoding. Isso aumentará gradualmente o nível de confiança de que um endereço pode existir, mas não o tornará 100% preciso. É por isso que precisamos da API Address Validation.

Você pode usar as técnicas acima para aumentar a confiança na precisão do endereço apenas de uma resposta da API Geocoding. No entanto, ao contrário de um resultado da API Address Validation, a API Geocoding não vai retornar feedback exato para determinar a precisão do resultado.

Tipo de local

Para entender corretamente esta seção, é preciso entender os diferentes tipos de local que podem ser retornados em uma resposta da API Geocoding:

  • ROOFTOP indica que o resultado retornado é um geocódigo preciso, para o qual temos informações de local que incluem o endereço.
  • RANGE_INTERPOLATED indica que o resultado retornado reflete uma aproximação (normalmente em uma estrada) interpolada entre dois pontos precisos (como interseções). Resultados interpolados geralmente são retornados quando códigos geográficos de rooftop não estão disponíveis para um endereço.
  • GEOMETRIC_CENTER: indica que o resultado retornado é o centro geométrico de um resultado, como uma polilinha (por exemplo, uma rua) ou um polígono (região).
  • APPROXIMATE indica que o resultado retornado não é nenhum dos acima.

Se uma API Geocoding retornar um location_type de ROOFTOP ou RANGE_INTERPOLATED, isso não significa necessariamente que o endereço existe. Da mesma forma, se uma API Geocoding retornar com a sinalização partial_match definida como true, talvez esse ainda seja o resultado certo para você.

Esse tipo de correspondência falsa é um problema muito difícil de resolver com a API Geocoding. No mínimo, considere implementar alguma validação básica de pós-processamento no país e na localidade da solicitação / resposta. Melhor ainda, compare os endereços reais para encontrar erros de ortografia e/ou endereços incompletos.

Observação: se você decidir usar a API Geocoding, recomendamos realizar verificações de qualidade de dados entre a solicitação inicial e a resposta da API Geocoding regularmente.

Correspondência parcial e falsa

Se um endereço for uma correspondência parcial, o que significa que a API Geocoding não conseguiu identificar exatamente o endereço, a resposta vai conter:

"partial_match": true,
"types": [
           "locality",
           "political"
         ]

Ainda mais importante do que os tipos de local acima é considerar quando partial_match = true está na resposta. partial_match indica que a API Geocoding não retornou uma correspondência exata para a solicitação original, mas conseguiu corresponder parte do endereço solicitado.

Convém examinar a solicitação original em busca de um endereço incompleto. Correspondências parciais ocorrem com mais frequência para endereços que não existem na localidade especificada na solicitação. Elas também podem ser retornadas quando uma solicitação corresponde a dois ou mais locais na mesma localidade.

Por exemplo, "21 Henr St, Bristol, UK" retorna uma correspondência parcial para Henry Street e Henrietta Street. Se uma solicitação incluir um componente de endereço com erro ortográfico, a API Geocoding poderá sugerir um endereço alternativo. As sugestões acionadas dessa maneira não serão marcadas como correspondência parcial.

Endereços sintéticos

A Geocoding API pode retornar locais para endereços "sintéticos" que não existem como locais exatos no banco de dados do Google.

Nesses cenários, o objeto de resposta geralmente contém um ID de lugar longo e a seguinte propriedade: geometry.location_type=APPROXIMATE.

Se você encontrar esses indicadores na resposta, marque o endereço de entrada como inválido e tente validá-lo novamente de outra forma.

Observação: este é outro exemplo em que, com a API Address Validation, você recebe feedback direto se não existir um endereço.

Noções básicas sobre a resposta da API Address Validation

Já existe uma ótima documentação sobre como entender as respostas da API Address Validation, então não vamos entrar em mais detalhes aqui.

Práticas recomendadas

Especificação da região geográfica

Ao fazer chamadas para as APIs Address Validation ou Geocoding, é uma prática recomendada tentar limitar a região geográfica em que esse endereço vai ser pesquisado. As duas APIs implementam isso de duas maneiras diferentes:

  • API Geocoding - polarização de região

    Se você sabe que os geocódigos estarão dentro de um determinado país, obterá resultados muito melhores usando a Direcionamento de região. Por exemplo, se você estiver geocodificando no Canadá, recomendamos adicionar &region=ca às suas solicitações para direcionar os usuários para o Canadá. A polarização de região prioriza resultados específicos dessa região. Ainda é possível receber resultados fora da região.

  • API Address Validation: código de região

    De maneira semelhante, a API Address Validation produz resultados mais precisos se um código ISO2 é transmitido na solicitação usando o campo regionCode.

Armazenar IDs de lugar

Para armazenar informações da Plataforma Google Maps sobre o local para solicitações futuras, você pode armazenar o ID de lugar indefinidamente no seu banco de dados como um atributo do local. Você só precisa fazer uma solicitação do Find Place uma vez por placeID. Também é possível pesquisar o ID de lugar sempre que um usuário solicitar detalhes da transação.

Para ter as informações mais atualizadas, atualize os IDs de lugar a cada 12 meses usando uma solicitação do Place Details com o parâmetro place_id.

Observação: leia também o guia de práticas recomendadas para geocodificação.

Conclusão

Este documento descreve as principais diferenças entre as APIs Address Validation e Geocoding. Em resumo, considere usar a API Address Validation quando:

  • Um endereço de correspondência preciso é necessário, especialmente para fins de entrega.
  • Os dados de entrada são conhecidos por serem de má qualidade. A API Address Validation é mais permissiva em relação a erros de entrada, destaca componentes de endereço não verificáveis e faz correções nos dados de entrada.
  • Precisamos de mais informações sobre um endereço, como "Residencial" ou "Comercial" (disponível em algumas regiões).

Próximas etapas

Faça o download do artigo Melhorar a finalização de compra, a entrega e as operações com endereços confiáveis e confira o webinar Como melhorar a finalização de compra, a entrega e as operações com a Address Validation .

Leitura adicional sugerida:

Colaboradores

O Google mantém este artigo. Ela foi escrita pelos colaboradores a seguir.

Autores principais:

Válvula Henrik | Engenheiro de soluções

Thomas Anglaret | Engenheiro de soluções

Sarthak Ganguly | Engenheiro de soluções