Nestes artigos, vamos escrever scripts Python para pesquisar um país a partir de um determinado estado ou nome de cidade e vinculá-lo ao aplicativo GUI. Estaremos usando o módulo GeoPy. Os módulos GeoPy tornam mais fácil localizar as coordenadas de endereços, cidades, países, pontos de referência e CEP.

Antes de começar, precisamos instalar o módulo GeoPy, então vamos executar este comando em seu terminal.

pip install geopy

Abordagem:

  • Módulo de importação
  • Use a API Nominatim para acessar o conjunto de coordenadas correspondente
  • geocode() para obter a localização de um determinado lugar

A GUI ficaria assim abaixo:



Nota: Nominatim usa dados do OpenStreetMap para encontrar locais na Terra por nome e endereço (geocodificação).

Abaixo está a implementação:

from geopy.geocoders import Nominatim
 
 
geolocator = Nominatim(user_agent = "geoapiExercises")
location = geolocator.geocode("Delhi")
print("Country Name: ", location)

Resultado: 

Nome do país: Delhi, Kotwali Tehsil, Central Delhi, Delhi, 110006, Índia 
 

Aplicativo para pesquisa de país de determinada cidade / estado com Tkinter: Este script implementa a implementação acima em uma GUI.

 

from geopy.geocoders import Nominatim
from tkinter import *
from tkinter import messagebox 
 
def getinfo():
    geolocator = Nominatim(user_agent = "geoapiExercises")
    place = e.get()
    place_res.set(place)
    location = geolocator.geocode(place)
    res.set(location)
 
master = Tk()
master.configure(bg = 'light grey')
 
place_res = StringVar();
res = StringVar();
 
Label(master, text = "Enter place :" ,
      bg = "light grey").grid(row = 0, sticky = W)
Label(master, text = "Place :" ,
      bg = "light grey").grid(row = 1, sticky = W)
Label(master, text = "Country Address :" ,
      bg = "light grey").grid(row = 2, sticky = W)
 
Label(master, text = "", textvariable = place_res,
      bg = "light grey").grid(row = 1, column = 1, sticky = W)
Label(master, text = "", textvariable = res,
      bg = "light grey").grid(row = 2, column = 1, sticky = W)
 
e = Entry(master)
e.grid(row = 0, column = 1)
 
b = Button(master, text = "Show", command = getinfo )
b.grid(row = 0, column = 2, columnspan = 2,
       rowspan = 2, padx = 5, pady = 5)
 
mainloop()

 
Resultado: