Neste texto a API de geocodificação do Google é acessada por meio de uma interface HTTP usando um script Python.
A geocodificação é o processo de converter endereços (como nome da rua e número) em coordenadas geográficas (latitude e longitude) que permitem a inserção de marcadores de local em um mapa ou o posicionamento do mapa. A geocodificação inversa é o processo de conversão de coordenadas geográficas em um endereço legível. O serviço de geocodificação inversa da Google Maps Geocoding API também permite que você encontre o endereço de um determinado ID de local.
Para usar a Google Maps Geocoding API, você deve antes ativar a API no Google API Console e obter as credenciais de autenticação adequadas. Você precisa informar uma chave de API em cada solicitação. Então, a primeira coisa a ser feita é abrir a página Primeiros passos e seguir as instruções dadas nesta página.
O script Python a seguir solicita uma resposta para o endereço ‘Igreja de Nossa Senhora da Candelária – Praça Pio X’, mostra os resultados e extrai as coordenadas destes resultados. A chave da API é lida no arquivo GoogleMapsKey.txt.
# Google Maps Platform - Web Services - Geocoding API
# https://developers.google.com/maps/documentation/geocoding/start
#
# Este script em Python mostra como geolocalizar o endereço
# Igreja de Nossa Senhora da Candelária - Praça Pio X - Centro,
# Rio de Janeiro - RJ, acessando a API do Google Maps Geocoding
# através da interface HTTP
#
# -*- coding: utf-8 -*-
import http.client, urllib.parse
import json
# Read the Google Maps Key from 'GoogleMapsKey.txt' file
GoogleMapsKey = open('GoogleMapsKey.txt', 'r').read().rstrip("\n")
host = 'maps.googleapis.com'
path = '/maps/api/geocode/json'
address = 'Igreja de Nossa Senhora da Candelária - Praça Pio X'
params = '?address=' + urllib.parse.quote (address) + \
'&key=' + GoogleMapsKey
def get_response():
conn = http.client.HTTPSConnection(host)
conn.request("GET", path + params)
response = conn.getresponse()
return response.read()
results = json.loads(get_response())
print(json.dumps(results, indent=4))
loc = "Location: " + \
json.dumps(results['results'][0]['geometry']['location'])
print(loc)
Abaixo está mostrada a saída produzida por este script
$ python google_maps_candelaria.py
{
"results": [
{
"address_components": [
{
"long_name": "s/n",
"short_name": "s/n",
"types": [
"street_number"
]
},
{
"long_name": "Pra\u00e7a Pio X",
"short_name": "Pra\u00e7a Pio X",
"types": [
"route"
]
},
{
"long_name": "Centro",
"short_name": "Centro",
"types": [
"political",
"sublocality",
"sublocality_level_1"
]
},
{
"long_name": "Rio de Janeiro",
"short_name": "Rio de Janeiro",
"types": [
"administrative_area_level_2",
"political"
]
},
{
"long_name": "Rio de Janeiro",
"short_name": "RJ",
"types": [
"administrative_area_level_1",
"political"
]
},
{
"long_name": "Brazil",
"short_name": "BR",
"types": [
"country",
"political"
]
},
{
"long_name": "20040-020",
"short_name": "20040-020",
"types": [
"postal_code"
]
}
],
"formatted_address": "Pra\u00e7a Pio X, s/n - Centro, Rio de Janeiro - RJ, 20040-020, Brazil",
"geometry": {
"location": {
"lat": -22.9008826,
"lng": -43.1778419
},
"location_type": "ROOFTOP",
"viewport": {
"northeast": {
"lat": -22.8995336197085,
"lng": -43.1764929197085
},
"southwest": {
"lat": -22.9022315802915,
"lng": -43.1791908802915
}
}
},
"place_id": "ChIJIe1CNFl_mQARG8VNRU8zMXY",
"types": [
"church",
"establishment",
"place_of_worship",
"point_of_interest"
]
}
],
"status": "OK"
}
Location: {"lat": -22.9008826, "lng": -43.1778419}
$
Fontes
- Google Maps Platform – Web Services – Geocoding API
- Client Libraries for Google Maps Web Services
- Python client library for Google Maps API Web Services
A imagem destacada mostra a execução deste script na IDE Spyder.
Map
Para ver a resposta da API no mapa, foi criado o script google_maps_candelaria.py em que gera o arquivo no formato GPX (GPS eXchange Format) google_maps_candelaria.gpx.