GeoCodificar/GeocoderOSM.py

50 líneas
1.7 KiB
Python

# -*- coding: utf-8 -*-
# Descripció:
# Agafa el llistat de municipis d'un arxiu en format CSV i en retorna les coordenades geogràfiques
# que consten a OpenStreetMap (OSM)
#
# El sistema de coordenades obtingut és WGS84 (EPSG: 4326)
#
# Requisits:
# Lliberies geocoder, time i csv
# -------------------------------------------------------------------------------------------------
# Importem llibreries
import geocoder
import csv
import time
# Definim l'hora d'inici i els paràmetres de treball: fitxers CSV d'entrada i de sortida, i l'idioma de la Viquipèdia (codi ISO)
start_time = int(time.time())
NomFitxer = "" #escriure el nom del fitxer sense l'extensió
FitxerEntrada = NomFitxer+".csv"
FitxerSortida = NomFitxer+"_georef.csv"
# Obrim el fitxer CSV on guardarem els resultats
with open(FitxerEntrada) as csv_entrada:
with open(FitxerSortida, 'wb') as csv_sortida:
fieldnames = ['Nom', 'Lon_x', 'Lat_y']
writer = csv.DictWriter(csv_sortida, fieldnames=fieldnames,delimiter=";")
writer.writeheader()
csv_reader = csv.reader(csv_entrada, delimiter=';')
i = 0
for row in csv_reader:
municipi = row[1] + ', ' +NomFitxer
if i==0:
# a la primera línia del CSV d'entrada hi ha l'encapçalament. No fer res
i +=1
else:
i +=1
cerca = geocoder.arcgis(municipi)
lng = cerca.x
lat = cerca.y
# Copiar l'informació al nou arxiu CSV
writer.writerow({'Nom':row[1],'Long_x': lng, 'Lat_y':lat})
# Definim l'hora de sortida
end_time = int(time.time())
print ("\nFi. L'script ha tardat {} segons a executar-se".format(end_time - start_time))