Geolocalitzant un Dataset de municipis en risc de despoblament categoritzats segons l'Agenda Valenciana Antidesploblament

Geolocalitzant un Dataset de municipis en risc de despoblament categoritzats segons l'Agenda Valenciana Antidesploblament

Ahir al matí un company de feina em va enviar un llistat de municipis i em va demanar si li podia geolocalitzar-los, es tracta d'un Dataset amb municipis en risc de despoblament que gestiona AVANT, l'Agència Valenciana Antidespoblament. El llistat m'el passa en un full de càlcul organitzat per diferents comarques del País Valencià, aleshores m'he ficat mans a l'obra executant un script molt bàsic que vaig fer fa un temps quan vaig voler geolocalitzar els skateparks com fa el mapa de la web del meu amic Berni de València, Sex and Skate and Rock´n´Roll, i nomès calia afegir aquestos municipis en la tupla principal del programeta. Senzill no, lo següent.

La solució és super fàcil amb el meu super mega script. L'executarem amb:

$python3 ./geolocalitza.py

I veurem que l'script ja va trobant la Latitud-Longitud dels municipis:

Com que he ficat una pausa de 10 segons a cada petició que fa, doncs he deixat el portàtil un ratet treballant i en una hora, més o menys, ja havia acabat de recopilar totes les geolocalitzacions de tots els municipis i ho deixa a un fitxer de text anomenat gps.txt

Finalment, obrirem el fitxer resultant gps.txt des de LibreOffice. El formatejarem bé per a que ens mostre en columnes separades la informació que volem:

Acabarem de fer una depuració de les dades i ràpidament ho tindrem:

Normalment un 5% de les dades poden fallar o trobar-te la geolocalització del municipi d'un altre país (com Itàlia o algún país hispanoamericà on hi ha municipis amb noms semblants o idèntics). Aleshores, caldrà fer una última neteja de les dades a última hora.

Després d'obtenir les dades, el resultat visualitzant les dades en un mapa és el següent:

Si vols saber com és l'script que he fet servir, et deixe ací a continuació el codi:

#
# test gps municipis en risc de despoblament
#
import time
from geopy.geocoders import Nominatim
import ssl
import certifi
import geopy.geocoders
import os
#
ctx = ssl.create_default_context(cafile=certifi.where())
geopy.geocoders.options.default_ssl_context = ctx
geolocator = Nominatim(user_agent="GPS_MUNICIPIS_RISC_DESPOBLAMENT")
#
eell = [
#
'Llucena/Lucena del Cid',
'Useres, les/Useras',
'Xodos/Chodos',
'Albocàsser',
'Ares del Maestrat',
'Atzeneta del Maestrat',
'Benafigos',
'Benassal',
'Catí',
'Culla',
'Serratella, la',
'Tírig',
'Torre d\'En Besora, la',
'Vilar de Canes',
'Vistabella del Maestrat',
'Arañuel',
'Argelita',
'Ayódar',
'Castillo de Villamalefa',
'Cirat',
'Cortes de Arenoso',
'Espadilla',
'Fanzara',
'Fuente la Reina',
'Fuentes de Ayódar',
'Ludiente',
'Montán',
'Montanejos',
'Puebla de Arenoso',
'Toga',
'Torralba del Pinar',
'Torrechiva',
'Vallat',
'Villahermosa del Rio',
'Villamalur',
'Villanueva de Viver',
'Zucaina',
'Algimia de Almonacid',
'Almedíjar',
'Azuébar',
'Barracas',
'Bejís',
'Benafer',
'Castellnovo',
'Caudiel',
'Chóvar',
'Gaibiel',
'Geldo',
'Higueras',
'Matet',
'Pavías',
'Pina de Montalgrao',
'Sacañet',
'Teresa',
'Torás',
'Toro, el',
'Vall de Almonacid',
'Canet lo Roig',
'Castell de Cabres',
'Cervera del Maestre',
'Pobla de Benifassà, la',
'Rossell',
'Salzadella, la',
'Xert',
'Coves de Vinromà, les',
'Sierra Engarcerán',
'Torre d’En Doménec, la',
'Vilanova d’Alcolea',
'Aín',
'Alcudia de Veo',
'Castellfort',
'Cinctorres',
'Forcall',
'Herbers',
'Mata de Morella, la',
'Morella',
'Olocau del Rey',
'Palanques',
'Portell de Morella',
'Todolella',
'Vallibona',
'Vilafranca/Villafranca del Cid',
'Villores',
'Zorita del Maestrazgo',
'Gátova',
'Segart',
'Bicorp',
'Millares',
'Quesa',
'Estubeny',
'Granja de la Costera, la',
'Torrella',
'Vallés',
'Llocnou de la Corona',
'Dos Aguas',
'Camporrobles',
'Caudete de las Fuentes',
'Chera',
'Sinarcas',
'Venta del Moro',
'Villagordo del Cabriel',
'Llaurí',
'Antella',
'Ademuz',
'Casas Altas',
'Casas Bajas',
'Castielfabib',
'Puebla de San Miguel',
'Torrebaja',
'Vallanca',
'Almiserà',
'Castellonet de la Conquesta',
'Alcublas',
'Alpuente',
'Andilla',
'Aras de los Olmos',
'Benagéber',
'Bugarra',
'Calles',
'Chelva',
'Chulilla',
'Domeño',
'Gestalgar',
'Higueruelas',
'Losa del Obispo',
'Pedralba',
'Sot de Chera',
'Titaguas',
'Tuéjar',
'Villar del Arzobispo',
'Yesa, la',
'Aielo de Rugat',
'Bellús',
'Beniatjar',
'Benissuera',
'Bufali',
'Carrícola',
'Otos',
'Pinet',
'Rugat',
'Sempere',
'Terrateig',
'Ayora',
'Cofrentes',
'Cortes de Pallás',
'Jalance',
'Jarafuel',
'Teresa de Cofrentes',
'Zarra',
'Benifallim',
'Penàguila',
'Alcosser (Alcocer de Planes)',
'Alcoletja',
'Almudaina',
'Balones',
'Benasau',
'Beniarrés',
'Benillup',
'Benimassot',
'Fageca',
'Famorca',
'Gorga',
'Millena',
'Orxa, l\' Lorcha',
'Planes',
'Quatretondeta',
'Tollos',
'Castell de Castells',
'Vall d\'Alcalà, la',
'Vall de Gallinera, la',
'Vall d\'Ebo, la',
'Beniardà',
'Benifato',
'Castell de Guadalest, el',
'Confrides',
'Sella',
'Tàrbena',
'Torre de les Maçanes, la / Torremanzanas',
]
#
f = open('resultats.csv', 'w')
f.write('POBLE ;latitudlongitud\n')
#
for i in eell:
print (i)
try:
location = geolocator.geocode(i)
#print(location.address)
print (location.latitude, location.longitude)
f.write(i + ';'+ str(location.latitude) + ','+ str(location.longitude) + str(location.address) + '\n')
except:
print ("Error en " + i)
time.sleep(10)
#
f.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