Script que geolocalitza tots els Skateparks d'Espanya al vol

Todos los skateparks de España // Skateparks Spain

En aquest article explique com aconseguir el llistat dels més de 8100 municipis d'Espanya i geolocalitzar-los en un mapa en cas de que tinguen un Skatepark.

Fa un temps vaig fer una geolocalització de tots els ajuntaments dels municipis de Castelló per al portal de Dades Obertes de la Diputació de Castelló.

Ho vaig fer amb la llibreria GeoPy, que és una llibreria de Python que fa servir l'API de Open Street Map. Però en aquest cas he fet l'script de geolocalitzar tots els Skateparks amb la llibreria de Google Maps perquè geolocalitza molt millor i té més informació.

El resultat final és el següent (Aquest script crearà un CSV final però amb un 5% d'errors, aleshores caldrà sempre una revisió última. Però al menys em serveix per a saber la situació dels skateparks. ):

El programa crearà dos fitxers, el llistat tots-els-skateparks.csv on hi haurà el llistat global de tots els Skateparks i les seues coordenades GPS, i també el fitxer municipis-sense-skateparks.txt on sé també tots aquells municipis on no hi ha cap. Cal dir que hi ha un error en aquest llistat, i és que alguns municipis tenen dos o més skateparks, aleshores no apareixen tots els skateparks, sinó que apareix el principal Skatepark que obtenim en Google Maps escrivint, per exemple, "Skatepark Barcelona", però a Barcelona hi ha més de 4.

Doncs bé, per a començar cal tenir Python 3, a OpenBSD instal·larem OpenBSD amb:

pkg_add -vi python-3.7 pip3.7

A continuació, instal·larem la llibrería de Google Maps amb pip:

doas pip3.7 install -U googlemaps

He descarregat el llistat de tots els pobles d'Espanya (8118) en format .xls des de la web de l'Institut Nacional d'Estadística https://www.ine.es/daco/daco42/codmun/codmun11/11codmunmapa.htm però he afgut de fer-me un script per a preparar aquest fitxer, afegir-li també el "Skatepark de" davant del nom del municipi, i el nom del municipi i "Spain" al final, ja que existeixen molts pobles semblants a Amèrica i Portugal.

INE Llistat de municipis

L'script que necessite prepararà el llistat de fitxers amb el següent format:
Skatepark de X, X, Spain
Skatepark de Y, Y, Spain
Skatepark de Z, Z, Spain
Skatepark de n, n, Spain
...

I el codi per a crear quest format és:

municipis = open('municipis-fitxer-brut.txt', 'r')
municipis_final = open('municipis-fitxer-net.txt', 'w')
#
for i in municipis:
municipis_final.write("Skatepark de " + i.rstrip('\n') + ", " + i.rstrip('\n') + ", Spain\n")
#
municipis.close()
municipis_final.close()

I per a geolocalitzar, guardarem el fitxer del llistat de pobles "municipis-fitxer-nets.txt" ai executarem el programa pySkateparks.py.

Per a que l'API de Google no em bloqueje l'execució de l'script amb més de 8100 pobles, he ficat un temps d'espera de 10 milisegons cada vegada que cerque les coordenadres GPS de cada skatepark amb time.sleep(0.10).

El codi de pySkateparks.py és el següent:

#Script que em diu la geolocalització GPS de tots els Skateparks
#dels municipis que trobe pel Google Maps
#
import time
import googlemaps
from datetime import datetime
#
gmaps = googlemaps.Client(key='AIzaSyBTo64mLmZ7-1qZZ3DXvGw7HWoFUDQ6BNs')
#
municipis_amb_skatepark = open('municipis-fitxer-net.txt', 'r')
municipis_sense_skatepark = open('municipis-sense-skatepark.txt', 'w')
skateparks = open('tots-els-skateparks.csv', 'w')
skateparks.write('skatepark;latitudlongitud\n')
#
for i in municipis_amb_skatepark:
#
geocode_result = gmaps.geocode(i)
try:
lat = geocode_result[0]["geometry"]["location"]["lat"]
lon = geocode_result[0]["geometry"]["location"]["lng"]
#
#Imprimim per consola
print (i, end="", flush=True)
print (str(lat) + "," + str(lon) + "\n")
#
#Desem la informació al fitxer CSV (skatepark; latitudlongitud)
skateparks.write(i.rstrip('\n') + ';' + str(lat) + ',' + str(lon) + "\n")
time.sleep(0.10)
#
except:
print ('NO HI HA SKATEPARK' + '\n')
municipis_sense_skatepark.write(i)
time.sleep(0.10)
#
municipis_amb_skatepark.close()
municipis_sense_skatepark.close()
skateparks.close()

Doncs bé això és tot, espere que trobes útil aquest article i que et motive a compartir els teus trucs, els teus coneixements i els teus experiments amb el Programari Lliure. Pensa-ho, va, que la Comunitat del Programari Lliure va creixent gràcies a la documentació, el disseny, la formació o la programació, sigues part de la Comunitat :-)

La cultura i la lliure circulació de les idees és l'arma més efectiva contra les dictadures del pensament i contra la ignorància.

Utilitats

NAVEGACIÓ SENSE RATOLÍ

- Tab següent enllaç.
- Shift+Tab anterior enllaç.
- Enter activa l'enllaç.
- Alt+esquerra anar arrere.

CONTRAST DE COLORS

Accessibilitat - Color Negre
Accessibilitat - Color Groc
Accessibilitat - Color Verd

Accessibilitat - Color Blau
Accessibilitat - Color Crema
Accessibilitat - Color Blanc

 

PORTADES ALTERNATIVES