QGIS 3.10: Geocodificação de 250 Mil Endereços por mês com o Plugin HQGIS

Versão 3.10 será a nova LTR

Tem inicio a sequência de testes da versão 3.10 do Sistema de Informações Geográficas QGIS, a futura nova versão de Lançamento a Longo Prazo (Long Term Release ou LTR). Conforme observamos no Calendário de Lançamentos do QGIS, no dia 21/02/2020 teremos a substituição da versão 3.4 pela versão 3.10 do sistema. Vale a pena começar os testes desta nova versão e descobrir as novidades que estarão à sua disposição no ano seguinte.

Conheça a API HERE para Geocodificação

Com base na dúvida de um rapaz que faz parte da Lista QGIS Brasil nos Grupos do Google, eu tomei conhecimento acerca do processo de geocodificação de endereços por meio da API da HERE. O algoritmo funciona da seguinte forma: Você prepara a sua lista de endereços e executa a geocodiicação dentro do próprio QGIS por meio das credenciais obtidas a partir de uma conta FREEMIUM adquirida no portal HERE. Esta técnica permite geocodificar mensalmente milhares endereços sem custo algum. Talvez esta seja uma das alternativas mais interessantes para aplicar o processo de geocodificação a partir de uma lista de endereços de tamanho moderado.

Tutorial 1: Obtendo as Credenciais HERE

A primeira etapa consiste em realizar um cadastro para obter a chave do serviço HERE. Visite o site dos desenvolvedores e faça o seu cadastro:

https://developer.here.com/

Forneça os dados e prossiga com o processo de cadastro da sua conta da mesma forma conforme é exigido por outros portais.

Prossiga com o processo de cadastro informando o seu número telefônico e aguarde a criação do seu projeto HERE:

Certifique-se de validar a sua conta de e-mail. Este é um procedimento padrão em mais de 95% dos cadastros na Web:

Seu projeto será criado. Para obter as credenciais para geocodificação de endereços dentro do QGIS 3.10, clique no grupo REST & XYZ HUB API/CLI:

Pressione o botão Generate App ID and App Code e aguarde a criação das suas credenciais de acesso. Se tudo correu bem até aqui, você receberá códigos semelhantes a esta imagem:

E aqui terminamos a primeira etapa. Anote seus códigos num local seguro porque vamos utilizá-los nas etapas seguintes.

Tutorial 2: Instalação da ferramenta e leitura dos dados

Na segunda etapa, siga estes passos:

Abra o QGIS 3 (o plugin não funciona na versão 2.18) e clique no menu Complementos – Gerenciar e Instalar Complementos (1).

Na categoria Tudo (2), digite hqgis na caixa de pesquisa (3) e marque o plugin para instalação (4). Em seguida, pressione o botão Instalar Complemento (5).

O complemento será instalado com sucesso. Para iniciar o processo, você vai precisar de uma lista de endereços concatenados. Eu tenho esta lista de dezoito autoescolas do município de São Paulo. Creio que vale a pena você realizar o teste com ela até para entender como deve ser o padrão de formatação de endereços capaz de garantir um processo de geocodificação bem sucedido.

O QGIS não opera com a leitura de um arquivo XLSX do Microsoft Excel. Faça uma cópia da lista como CSV Separado Por Vírgulas.

Agora, vamos importar esta lista. Eu sempre oriento a prática de utilizar bases cartográficas de referência em todos os projetos. Não será diferente aqui. Para ter certeza sobre a posição dos endereços que serão geocodificados, primeiro, adicione um limite geográfico de Estados ou Municípios do Brasil. Aproveitando a oportunidade, vamos trazer de volta a nostálgica Barra de Gerenciamento das Camadas das versões anteriores do QGIS. O limite dos estados e o painel clássico podem ser observados na ilustração abaixo:

Para trazer o painel clássico de volta, clique com o botão direito do mouse sobre qualquer área cinza da barra de menus e marque o item Gerenciar Camadas.

Os bons tempos voltaram! Para importar a lista no formato CSV, clique no “V” de Adicionar Camada Vetorial:

Na janela seguinte, localize o seu arquivo CSV com os endereços. Evite essas barbaridades de usuário iniciante no que diz respeito à pastas e arquivos com espaços e acentuação. Evite também os caminhos longos. Essas práticas evitam problemas. Para ler o CSV, clique na reticências (1) primeiro e, na sequência, pressione o botão Adicionar (2). Feche a janela.

Tutorial 3: Geocodificação no QGIS com o Plugin HQGIS

Já temos a lista importada para o programa e vamos iniciar o processo de geocodificação. É importante notar que a nossa técnica leva em consideração a coluna da tabela que contém os endereços concatenados. Sendo assim, siga a mesma lógica para que o processo possa lograr êxito. Se você é novo aqui e não sabe consultar sua tabela, verifique as imagens abaixo:

Para ter acesso à ferramenta, clique no menu Web – Hqgis – Access the HERE API. Também é possível clicar sobre o ícone do plugin HQGIS:

Vá para a última guia e faça o cadastro das credenciais que você recebeu na primeira etapa deste artigo. Save suas credenciais e prossiga para a etapa seguinte.

Retorne para a primeira guia e aponte para a camada que possui os endereços que serão geocodificados. É importante apontar para o campo da tabela que possui essa informação. Finalmente, pressione o botão Geocode Multiple Adress para dar inicio ao processo.

No canto superior da janela, você pode acompanhar o processo pela barra de progresso praticamente imperceptível. Recomendo não fazer nada até que o plugin finalize o seu trabalho.

No final, todos os endereços serão geocodificados! As autoescolas serão posicionadas em São Paulo, o que confere a precisão da API HERE. Um lembrete: estes pontos são temporários, ou seja, você deve utilizar os recursos do QGIS para salvar essa camada como arquivo Shapefile ou Geopackage:

Que tal realizar o controle de qualidade? Será mesmo que essa geocodificação é tão boa quanto os processos de geocodificação pelo Google Maps e da geocodificação pelo Google Planilhas? Você deve analisar o resultado minuciosamente e tirar as suas próprias conclusões. Na minha opinião, essa capacidade de geocodificar 250 mil endereços mensalmente a partir de um conta Freemium vale o investimento do seu tempo!

Registre a sua opinião nos comentários!

Informações

Instrutor GIS é o site de consultoria do Geógrafo Jorge Santos.

Jorge Santos é Instrutor de Geotecnologias, Produtor de Conteúdo Geo, Técnico em Geoprocessamento, Analista em Geoprocessamento e Designer Gráfico com mais de dez anos de experiência.

Contatos

  • WhatsApp: (61) 99616-5665
  • Skype: jorgepsantos2002
  • E-mail: jorgepsantos@instrutorgis.com.br

13 comentários em “QGIS 3.10: Geocodificação de 250 Mil Endereços por mês com o Plugin HQGIS”

  1. TATIANA PARÁ MONTEIRO DE FREITAS

    Jorge, muito legal o tutorial..já estou usando nos meus trabalho. me salvastes…eu testei aquele “ferramentas militares” já vistes? Faz um tutorial comparando os tipos de plugins de gecodificação.
    parabéns e obrigada por ser tão parceiro nessa mundo da geotecnologia.

    1. Jorge Santos

      Fico feliz por saber que a ferramenta está funcionando, Tatiana! Ferramentas Militares, eh? Nunca ouvi falar! Seu pensamento está sincronizado com as ideias de um amigo, que pediu um tutorial de geocodificação comparativo, inclusive com ferramentas pagas. Acho que vocês combinaram, hein? Sugestão anotada!

      Um forte abraço!
      Jorge Santos
      Instrutor de Geotecnologias
      https://www.instrutorgis.com.br
      jorgepsantos@instrutorgis.com.br
      WhatsApp: (61) 99616-5665
      Skype: jorgepsantos2002
      LinkedIn: https://www.linkedin.com/in/jorgepsantos
      Twitter: http://twitter.com/jpsantos2002

  2. Olá Jorge,

    Na nova versão do QGIS 3.10.4 (salvo engano), não é mais dessa forma.
    Agora só pede apenas um codigo API. Terias um tutorial mais atualizado? Grato!

  3. Salvou meu amigo !
    Realmente na versão 3.10 só pede o API key.
    Mas funcionou direitinho. Aliás, foi o único método de Geocodificação que funcionou com meus endereços !
    Muitíssimo obrigado !!

  4. Agora percebi aqui que as demais colunas da tabela não são importadas para para o shapefile criado. Ou seja, você localiza o endereço mas não consegue associá-lo aos demais atributos.
    Você teria alguma sugestão para resolver isso Jorge ?

  5. Paula Victoria

    Jorge, muito obriga pelo tutorial, esta nos ajudando muito, porem tenho algumas duvidas e gostaria de uma ajuda para esclarecer. Os resultados após a geocodificação significam o que ?
    – relevance
    – qu_country
    – qu_city
    – qu_street
    – qu_number
    – matchtype

    Outra pergunta é qual o GRAU de Confiabilidade da ferramenta? Testei 10 endereços e apenas 5 foram localizados
    E como o endereço tem que estar descrito? Primeiro o nome da rua, numero, bairro, cep, cidade????
    Aguardo retorno Obrigada

    1. Jorge Santos

      Olá Paula, tudo bem? Este plugin faz uso da API HERE. Assim sendo, se você verificar este link no site do desenvolvedor, haverão respostas para esses campos que a ferramenta pondera durante a geocodificação.

      Sobre o grau de confiabilidade ou mesmo precisão do processo de Geocodificação, é preciso avaliar o seu dado. Eu sempre utilizo o mesmo modelo de planilha formatada em todos os tutoriais, inclusive eu fiz uma videoaula sobre a Geocodificação com o Google Planilhas, que não faz 250 mil endereços de uma única vez mas é a que possui maior grau de acerto, pois é a mesma Geocodificação do Google Maps. Vale a pena explorar e fazer os seus testes.

      Atenciosamente,
      Jorge Santos
      Instrutor de Geotecnologias
      https://www.instrutorgis.com.br
      jorgepsantos@instrutorgis.com.br
      WhatsApp: (61) 99616-5665
      Skype: jorgepsantos2002
      LinkedIn: https://www.linkedin.com/in/jorgepsantos
      Twitter: http://twitter.com/jpsantos2002

  6. Ada Schwartz

    Olá! Poderia me ajudar??

    Segui o tuturial passo a passo com a versão 3.22 do QGIS e não funcionou. A visualização do acompanhamento na parte superior diz “Looping through 18 records…” e não avança. Também aparece uma mensagem dizendo: “Erro Python : Um erro ocorreu enquanto executava o código Python: Consulte o registro de mensagens (Erro Python) para mais detalhes.”. Consultando a guia de Erro Phyton, diz o seguinte:

    2022-06-15T10:39:19 WARNING Traceback (most recent call last):
    File “C:\PROGRA~1\QGIS32~1.6\apps\Python39\lib\site-packages\urllib3\connection.py”, line 159, in _new_conn
    conn = connection.create_connection(
    File “C:\PROGRA~1\QGIS32~1.6\apps\Python39\lib\site-packages\urllib3\util\connection.py”, line 84, in create_connection
    raise err
    File “C:\PROGRA~1\QGIS32~1.6\apps\Python39\lib\site-packages\urllib3\util\connection.py”, line 74, in create_connection
    sock.connect(sa)
    TimeoutError: [WinError 10060] Uma tentativa de conexão falhou porque o componente conectado não respondeu
    corretamente após um período de tempo ou a conexão estabelecida falhou
    porque o host conectado não respondeu

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
    File “C:\PROGRA~1\QGIS32~1.6\apps\Python39\lib\site-packages\urllib3\connectionpool.py”, line 670, in urlopen
    httplib_response = self._make_request(
    File “C:\PROGRA~1\QGIS32~1.6\apps\Python39\lib\site-packages\urllib3\connectionpool.py”, line 381, in _make_request
    self._validate_conn(conn)
    File “C:\PROGRA~1\QGIS32~1.6\apps\Python39\lib\site-packages\urllib3\connectionpool.py”, line 978, in _validate_conn
    conn.connect()
    File “C:\PROGRA~1\QGIS32~1.6\apps\Python39\lib\site-packages\urllib3\connection.py”, line 309, in connect
    conn = self._new_conn()
    File “C:\PROGRA~1\QGIS32~1.6\apps\Python39\lib\site-packages\urllib3\connection.py”, line 171, in _new_conn
    raise NewConnectionError(
    urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [WinError 10060] Uma tentativa de conexão falhou porque o componente conectado não respondeu
    corretamente após um período de tempo ou a conexão estabelecida falhou
    porque o host conectado não respondeu

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
    File “C:\PROGRA~1\QGIS32~1.6\apps\Python39\lib\site-packages\requests\adapters.py”, line 439, in send
    resp = conn.urlopen(
    File “C:\PROGRA~1\QGIS32~1.6\apps\Python39\lib\site-packages\urllib3\connectionpool.py”, line 726, in urlopen
    retries = retries.increment(
    File “C:\PROGRA~1\QGIS32~1.6\apps\Python39\lib\site-packages\urllib3\util\retry.py”, line 446, in increment
    raise MaxRetryError(_pool, url, error or ResponseError(cause))
    urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host=’geocoder.ls.hereapi.com’, port=443): Max retries exceeded with url: /search/6.2/geocode.json?apiKey=org535091354&searchtext=Av.%20Pedro%20Bueno,%20555,%20Parque%20Jabaquara,%20S%C3%A3o%20Paulo,%20SP,%2004342-010%20-%20Brasil? (Caused by NewConnectionError(‘: Failed to establish a new connection: [WinError 10060] Uma tentativa de conexão falhou porque o componente conectado não respondeu\r\ncorretamente após um período de tempo ou a conexão estabelecida falhou\r\nporque o host conectado não respondeu’))

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
    File “C:\Users/schwartz/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\Hqgis\hqgis.py”, line 563, in batchGeocodeField
    r = requests.get(url)
    File “C:\PROGRA~1\QGIS32~1.6\apps\Python39\lib\site-packages\requests\api.py”, line 76, in get
    return request(‘get’, url, params=params, **kwargs)
    File “C:\PROGRA~1\QGIS32~1.6\apps\Python39\lib\site-packages\requests\api.py”, line 61, in request
    return session.request(method=method, url=url, **kwargs)
    File “C:\PROGRA~1\QGIS32~1.6\apps\Python39\lib\site-packages\requests\sessions.py”, line 530, in request
    resp = self.send(prep, **send_kwargs)
    File “C:\PROGRA~1\QGIS32~1.6\apps\Python39\lib\site-packages\requests\sessions.py”, line 643, in send
    r = adapter.send(request, **kwargs)
    File “C:\PROGRA~1\QGIS32~1.6\apps\Python39\lib\site-packages\requests\adapters.py”, line 516, in send
    raise ConnectionError(e, request=request)
    requests.exceptions.ConnectionError: HTTPSConnectionPool(host=’geocoder.ls.hereapi.com’, port=443): Max retries exceeded with url: /search/6.2/geocode.json?apiKey=org535091354&searchtext=Av.%20Pedro%20Bueno,%20555,%20Parque%20Jabaquara,%20S%C3%A3o%20Paulo,%20SP,%2004342-010%20-%20Brasil? (Caused by NewConnectionError(‘: Failed to establish a new connection: [WinError 10060] Uma tentativa de conexão falhou porque o componente conectado não respondeu\r\ncorretamente após um período de tempo ou a conexão estabelecida falhou\r\nporque o host conectado não respondeu’))

    2022-06-15T10:50:40 WARNING Traceback (most recent call last):
    File “C:\PROGRA~1\QGIS32~1.6\apps\Python39\lib\site-packages\urllib3\connection.py”, line 159, in _new_conn
    conn = connection.create_connection(
    File “C:\PROGRA~1\QGIS32~1.6\apps\Python39\lib\site-packages\urllib3\util\connection.py”, line 84, in create_connection
    raise err
    File “C:\PROGRA~1\QGIS32~1.6\apps\Python39\lib\site-packages\urllib3\util\connection.py”, line 74, in create_connection
    sock.connect(sa)
    TimeoutError: [WinError 10060] Uma tentativa de conexão falhou porque o componente conectado não respondeu
    corretamente após um período de tempo ou a conexão estabelecida falhou
    porque o host conectado não respondeu

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
    File “C:\PROGRA~1\QGIS32~1.6\apps\Python39\lib\site-packages\urllib3\connectionpool.py”, line 670, in urlopen
    httplib_response = self._make_request(
    File “C:\PROGRA~1\QGIS32~1.6\apps\Python39\lib\site-packages\urllib3\connectionpool.py”, line 381, in _make_request
    self._validate_conn(conn)
    File “C:\PROGRA~1\QGIS32~1.6\apps\Python39\lib\site-packages\urllib3\connectionpool.py”, line 978, in _validate_conn
    conn.connect()
    File “C:\PROGRA~1\QGIS32~1.6\apps\Python39\lib\site-packages\urllib3\connection.py”, line 309, in connect
    conn = self._new_conn()
    File “C:\PROGRA~1\QGIS32~1.6\apps\Python39\lib\site-packages\urllib3\connection.py”, line 171, in _new_conn
    raise NewConnectionError(
    urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [WinError 10060] Uma tentativa de conexão falhou porque o componente conectado não respondeu
    corretamente após um período de tempo ou a conexão estabelecida falhou
    porque o host conectado não respondeu

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
    File “C:\PROGRA~1\QGIS32~1.6\apps\Python39\lib\site-packages\requests\adapters.py”, line 439, in send
    resp = conn.urlopen(
    File “C:\PROGRA~1\QGIS32~1.6\apps\Python39\lib\site-packages\urllib3\connectionpool.py”, line 726, in urlopen
    retries = retries.increment(
    File “C:\PROGRA~1\QGIS32~1.6\apps\Python39\lib\site-packages\urllib3\util\retry.py”, line 446, in increment
    raise MaxRetryError(_pool, url, error or ResponseError(cause))
    urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host=’geocoder.ls.hereapi.com’, port=443): Max retries exceeded with url: /search/6.2/geocode.json?apiKey=org535091354&searchtext=Av.%20Pedro%20Bueno,%20555,%20Parque%20Jabaquara,%20S%C3%A3o%20Paulo,%20SP,%2004342-010%20-%20Brasil? (Caused by NewConnectionError(‘: Failed to establish a new connection: [WinError 10060] Uma tentativa de conexão falhou porque o componente conectado não respondeu\r\ncorretamente após um período de tempo ou a conexão estabelecida falhou\r\nporque o host conectado não respondeu’))

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
    File “C:\Users/schwartz/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\Hqgis\hqgis.py”, line 563, in batchGeocodeField
    r = requests.get(url)
    File “C:\PROGRA~1\QGIS32~1.6\apps\Python39\lib\site-packages\requests\api.py”, line 76, in get
    return request(‘get’, url, params=params, **kwargs)
    File “C:\PROGRA~1\QGIS32~1.6\apps\Python39\lib\site-packages\requests\api.py”, line 61, in request
    return session.request(method=method, url=url, **kwargs)
    File “C:\PROGRA~1\QGIS32~1.6\apps\Python39\lib\site-packages\requests\sessions.py”, line 530, in request
    resp = self.send(prep, **send_kwargs)
    File “C:\PROGRA~1\QGIS32~1.6\apps\Python39\lib\site-packages\requests\sessions.py”, line 643, in send
    r = adapter.send(request, **kwargs)
    File “C:\PROGRA~1\QGIS32~1.6\apps\Python39\lib\site-packages\requests\adapters.py”, line 516, in send
    raise ConnectionError(e, request=request)
    requests.exceptions.ConnectionError: HTTPSConnectionPool(host=’geocoder.ls.hereapi.com’, port=443): Max retries exceeded with url: /search/6.2/geocode.json?apiKey=org535091354&searchtext=Av.%20Pedro%20Bueno,%20555,%20Parque%20Jabaquara,%20S%C3%A3o%20Paulo,%20SP,%2004342-010%20-%20Brasil? (Caused by NewConnectionError(‘: Failed to establish a new connection: [WinError 10060] Uma tentativa de conexão falhou porque o componente conectado não respondeu\r\ncorretamente após um período de tempo ou a conexão estabelecida falhou\r\nporque o host conectado não respondeu’))

Deixe um comentário