In [1]:
import pandas as pd
In [2]:
!pip install pygeocoder
In [3]:
from pygeocoder import Geocoder
apik='' #file-bol illeszd be
In [25]:
results = Geocoder(apik).geocode("FSEGA Cluj")
print(results[0].coordinates)
A válaszban az összes Google Maps cím-tulajdonság benne van. https://developers.google.com/maps/documentation/geocoding/start?csw=1#Types
In [40]:
results[0].country
Out[40]:
In [32]:
results[0].city
Out[32]:
In [34]:
results[0].county
Out[34]:
In [35]:
results[0].postal_code
Out[35]:
In [41]:
results[0].formatted_address
Out[41]:
Fordított geokódolás
In [44]:
results = Geocoder(apik).reverse_geocode(46.544151, 24.560025)
print(results[0])
In [45]:
results[0].city
Out[45]:
Alkalmazás
In [46]:
df=pd.read_excel('df5.xlsx')
In [51]:
results = Geocoder(apik).geocode('Hungary')
print(results[0].coordinates)
Geokódólás és hibakezelés
In [ ]:
koordinatak=[]
for orszag in list(df['Destinatie_tara2']):
try:
koord=Geocoder(apik).geocode(orszag)[0].coordinates
koordinatak.append(koord)
print(orszag,'geokódolva')
except:
print(orszag,'hiba')
if orszag=='Cseh':
koord=Geocoder(apik).geocode('Czech Republic')[0].coordinates
koordinatak.append(koord)
print(orszag,'geokódolva másodszorra')
In [65]:
df['koord']=koordinatak
Két új oszlopot készítünk a koordinátákból, mert külön kell választani a hosszúságot és a szélességet. Itt három String
függvényt alkalmazunk az str
előtaggal. Ugyanakkor először str
típusba konvertáljuk azt a Dataframe oszlpot, amelyre szükségünk van, a végén pedig a szélességeket és hosszúságokat vissza számmá, azaz float
típusba.
In [80]:
df['lat']=df['koord'].astype(str).str.split(',').str[0].str.replace('(','').astype(float)
df['lon']=df['koord'].astype(str).str.split(',').str[1].str.replace(')','').astype(float)
Kimentjük a viz-t Flourishba
In [82]:
df.to_excel('koordinatak.xlsx')