50 líneas
1.7 KiB
Python
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))
|