Fusionar GeoJSON
Fusionar fronteres
En la imatge es veu com hem aconseguit fusionar les comarques del Montsià i el Baix Ebre en una sola comarca. La idea és fer amb aquesta tècnica les diferents vegueries/regions de Catalunya.
La idea general és: donades dues regions/comarques/municipis amb una frontera comuna (coordenades geojson), trobar les coordenades del contorn, eliminant la frontera comuna.
Es troben diferents causístiques, en funció de quins són els punts d'origen de les coordenades, i quin és el sentit amb què es mouen les coordenades. Per exemple:
- els dos punts d'origen estan fora de la frontera
- un dels punts d'origen estan dins de la frontera
- etc.
A més, per trobar els punts de la frontera les coordenades poden coincidir exactament; o bé poden coincidir aproximadament (concepte de distància menor que un radi).
La idea general és recórrer els punts amb dos bucle anidats, i detectar quan entrem i quan sortim de la frontera. I construir la llista de punts del contorn exterior.
D'aquesta manera hem aconseguit definir el contorn de les vegueries de Catalunya, que és una ordenació no oficial:
Hem fet l'ordenació de l'informe Roca (2001), però hi ha d'altres propostes.
A python/previ1 tinc les primeres proves que s'han fet.
A mida que anàvem fusionàvem comarques hem trobat fins a 8 casos possibles (a...g) (carpeta python/previ2), tot i que el codi ha quedat molt guarro. Amb aquest codi he aconseguit definir les vegueries.
Ara que tenim les vegueries/regions, i com a primer exemple, podem fer el mapa coroplètic per pintar la densitat de població de les regions, com es veu a la imatge.
Carpeta python/previ3: he sigut sistemàtic i he definit dues àrees de control quadrades amb una frontera comuna. He trobat 4 casos possibles: A, B, C, D, que crec que contemplen totes les possibilitats que s'havien estudiat de forma no sistemàtica a previ2.
script python/fusionar_geojson_master.py: he ajuntat els 4 casos possibles en un son script, que genera el fitxer solucio.txt.
Amb aquest script final he aconseguit de forma fàcil i ràpida fusionar els municipis de l'Alt Berguedà en un sol contorn.
Codi Python
Com a resultat de l'estudi sistemàtic de les diferents topologies que ens podem trobar (veure foto), tenim 4 casos possibles (el cas D i el E ha resultat ser el mateix).
Obtenim 4 algorismes: fusionar_geojson_A.py, ..., fusionar_geojson_D.py, que els hem ajuntat en un de sol: fusionar_geojson_master.py. Aquest script genera el fitxer solucio.txt que proposa la solució (entre les 4 possibilitats).
S'ha testejat amb els municipis de l'Alt Berguedà i ha anat molt bé.
Recordar que el codi també contempla la possibilitat de què els punts de la frontera no coincideixin exactament (concepte de distància entre punts), com ens vam trobar en el cas de la comarca del Moianès i les seves comarques adjacents: Vallès Oriental, Occidental, Bages, Osona.
Municipis de l'Alt Berguedà
Hem fet la fusió dels següents municipis: Bagà, Berga, Borredà, Castell de l'Areny, Castellar de N'Hug, Castellar del Riu, Cercs, Fígols, Gisclareny, Gòsol, Guardiola de Berguedà, La Nou, La Pobla de Lillet, Saldes, Sant Jaume de Frontanyà, Sant Julià de Cerdanyola, Vallcebre, Vilada.
Descàrrega
Vegueries de Catalunya (segons informe Roca, 2001):
Límits Alt Berguedà:
Codi: Els scripts estan en la carpeta python/. Les dades en la carpeta data/. En la carpeta html/ tenim els fitxers per visualitzar les dades i comprovar que funcionen les fusions que estem fent (concretament fixar-se amb els scripts que acaben amb _control.html i _control.js).
creat per Joan Quintana Compte, març 2020