Săptămâna trecută am scris despre realizarea de hărți folosind rezultatele Alegerilor Prezidențiale care au avut loc în 10 și 24 Noiembrie în România. În acest post voi descrie cum putem procesa datele oferite pentru a le afișa pe o hartă.
De obicei , colectarea de date și pregătirea lor este un proces plictisitor și necesită mult timp, trebuie să cauți surse de date, să citești metadata, să descarci și să cureți datele, să rezolvi mici probleme și să filtrezi datele într-o formă finală care poate fi pusă pe o hartă. Am făcut acest tutorial ca să ajut oamenii să ajungă mai repede la partea distractivă a realizării de hărți, vizualizarea.
Dacă vrei să sari peste acest tutorial, poți găsi rezultatul la https://github.com/alexaac/presidentials2019Data/tree/master/round_2, un fișier de tip shapefile care conține datele electorale pentru runda a doua, la nivel de unități administrative. Fă-ți curaj și fă o hartă cu el! 😉
Dacă încă ești interesat(ă) de modul în care au fost datele spațiale potrivite cu datele electorale, rezistă și urmărește tutorialul.
Procedeul
Prima dată, creează un director unde vom ține datele descărcate și denumește-l prezenta_bec_data (sau alt nume care îți place).
Pentru a face o hartă folosind datele din alegeri, trebuie să asociem înregistrările cu elemente care au o dimensiune spațială. De aceea avem nevoie și de date electorale, și de date geografice. Vom downloada primul set de date de pe Biroul Electoral Central, și al doilea de pe Geoportalul ANCPI.
Obținerea datelor legate de alegeri
Mergi la Prezenta BEC. Pe pagina principală, vei vedea rezultate din al doilea tur de alegeri, agregate la nivel de județ. În meniu, sau în stânga paginii, putem vedea ‘Procese verbale’ și Rezultate finale, de unde putem descărca rezultatele finale.
Mergi la ‘ROMÂNIA’, și dă click pe pv_RO_PRSD_FINAL.csv pentru a descărca datele pentru toate secțiile de votare din România din timpul alegerilor, și salvează-le in directorul prezenta_bec_data.
Apoi, mergi la ‘STRĂINĂTATE’, dă click pe pv_SR_PRSD_FINAL.csv și pe pv_SR_PRSD-C_FINAL.csv pentru a le descărca. Apoi dă click pe v1_pv_prsd-cntry_cntry_a3sgnd_1574939704.pdf pentru a-l descărca, vom folosi acest fișier să verificăm totalul rezultatelor pe țară.
Legenda pentru numele candidaților și pentru numele de coloane se pot consulta tot pe aceeași pagină.
Obținerea datelor geografice
Se poate intra pe Portalul de date deschise al Guvernului României, căuta ‘unitati administrativ teritoriale’ folosind secțiunea de Search, și ajunge până la urmă pe http://data.gov.ro/dataset/unitati-administrativ-teritoriale.
Sau se poate accesa direct http://geoportal.ancpi.ro/geoportal/catalog/main/home.page, dând Click pe cel mai recent link de sub ‘NEWS | EVENTS’ și ajunge pe http://geoportal.ancpi.ro/portal/apps/webappviewer/index.html?id=faeba2d173374445b1f13512bd477bb2.
Va apărea o fereastră cu ‘Termeni și condiții’, având legătură cel mai mult cu faptul că trebuie menționată sursa datelor și trebuie făcută atribuirea corect.
Datele geografice au fost create de către ANCPI (Agenția Națională de Cadastru și Publicitate Imobiliară). Datele au fost publicate pe Geoportalul INSPIRE al României și Portalul de date deschise al Guvernului României sub Licența pentru o Guvernare Deschisă. (Mai multe informații).
După acceptarea termenilor și condițiilor, vei ajunge pe pagina principală de vizualizare a aplicației, unde se poate naviga pe hartă, selecta ce straturi să descarci, și există opțiunea să desenezi o zonă de interes și să alegi formatul fișierelor.
În funcție de tipul de hartă pe care intenționăm să o facem, vom vrea să arătăm anumite rezultate la nivel de județ, sau la o scară mai mare, la nivel de unități administrative. Vom descărca toate datele, și decide mai târziu ce straturi să folosim.
După apăsarea butonului ‘Run’, vei primi un e-mail care va conține datele intr-un fișier comprimat de tip zip. Decomprimă fișierul și mută directorul rezultat în prezenta_bec_data.
Inspectarea datelor
Deschide QGIS, creează un nou proiect si salvează-l cu numele prezenta_bec_workspace. Apoi navighează la directorul prezenta_bec_data în fereastra Browser din QGIS. Se pot vedea acum toate datele descărcate. Eu am ales să descarc datele în formatul file geodatabase, dar se poate folosi și shapefile.
Să ne uităm la date, adăugându-le pe hartă. Alege straturile care conțin poligoane și datele legate de alegeri, ține apăsat Shift și Ctrl, apoi Click Dreapta și alege ‘Add Selected Layers To Project’. acum putem vedea fișierul cu UAT in cadrul hărții, iar lista de straturi este afișată în fereastra Layers din QGIS.
Inspectează câteva momente atributele din fiecare layer folosind Click Dreapta și ‘Open Attribute Table’, și gândește-te ce câmpuri am putea folosi să legăm cele două seturi de date.
Avem următoarele date:
- Unitate_administrativa_judet: toate județele
- Unitate_administrativa_UAT: toate unitățile administrative
- Unitate_administrativa_tara: toată țara
- pv_RO_PRSD_FINAL: rezultate la nivel de secții de votare pentru toată Romania
- pv_SR_PRSD_FINAL: rezultate la nivel de secții de votare pentru votanții din străinătate
- pv_SR_PRSD-C_FINAL : rezultate pentru votanții din străinătate , prin corespondență*
* Încă trebuie să confirm detaliile din acest tabel, nu am găsit metadata pentru el.
Pentru moment, vom începe să lucrăm cu Unitate_administrativa_UAT și pv_RO_PRSD_FINAL. Câmpurile care ne-ar putea interesa sunt ‘natLevel’, ‘natLevName’, ‘natCode‘ și ‘name’ de la datele geografice, ‘Cod birou electoral’, ‘Județ’, ‘Uat’ și ‘Siruta‘ de la datele electorale.
Uitându-ne la pv_RO_PRSD_FINAL, putem vedea că tabelul conține rezultatele la nivel de secții de votare, deci dacă am potrivi Unitate_administrativa_UAT cu pv_RO_PRSD_FINAL, ar exista o înregistrare în primul tabel și înregistrări multiple în cel de-al doilea tabel. De exemplu, pentru o unitate administrativă cu natCode 1017 (Alba Iulia), am avea 50 de secții de votare cu Siruta 1017.
În continuare, vom grupa datele electorale pe unitate administrativă. Încă mai ești pe pagina aceasta și citești tutorialul? Dacă da, salvează spațiul de lucru (nu uita să faci acest lucru din când în când), și să continuăm.
Agregarea datelor
Putem alege să agregăm datele la nivel de unitate administrativă, sau la nivel de județ. Să incepem cu unitățile administrative.
În QGIS, sunt mai multe metode de a agrega datele. Una dintre ele ar fi Group Stats plugin, care poate fi instalat ușor folosind Plugins -> Manage și Install Plugin, dar poate însuma numai câmpuri de tip numeric (Group Stats Tutorial). Câmpurile din pv_RO_PRSD_FINAL sunt de tip String, așa că ar trebui să creez noi campuri de tip numeric și să le populez cu valori din câmpurile originale.
Doresc de asemenea să interoghez datele, așa că voi alege să folosesc SpatiaLite, un Sistem de Management al Bazelor de Date (DBMS). Dacă ești de acord cu această opțiune, mergi în fereastra Browser din QGIS, window, derulează până jos, dă Click Dreapta pe SpatiaLite pentru ‘Create Database’, și denumește noua bază de date prezenta_bec_db.
Apoi mergi în bara de meniu din partea de sus a ferestrei în QGIS si dă Click pe Database -> DB Manager.
Această comandă va deschide o nouă fereastră DB Manager. În secțiunea ‘Providers’, sub SpatialLite, ar trebui să se poată vedea noua bază de date creată, prezenta_bec_db. Dă Dublu Click pe ea și pornește o nouă conexiune.
Folosește Layer/File pentru a importa pv_RO_PRSD_FINAL, și bifează primary key ca ‘id‘, ‘UTF8’ și ‘overwrite existing file’. Folosim un primary key pentru că poate asocia rapid date din tabele multiple, și ne va ajuta cu Join-urile.
Acum putem vedea pv_RO_PRSD_FINAL sub prezenta_bec_db.sqlite, și inspecta fișierul și datele folosind secțiunile Info și Table.
Deschide o nouă fereastră SQL, aici vom interoga și agreda datele noastre:
SELECT CAST(`Cod birou electoral` AS INTEGER) AS `Cod birou electoral`, `Județ`,
CAST(`Siruta` AS INTEGER) AS `Siruta`, `Uat`,
Sum(a) AS a, Sum(b) AS b,
Sum(b1) AS b1, Sum(b2) AS b2, Sum(b3) AS b3,
Sum(c) AS c, Sum(d) AS d, Sum(e) AS e, Sum(f) AS f,
Sum(g1) AS g1, Sum(g2) AS g2
FROM pv_RO_PRSD_FINAL
GROUP BY `Siruta`
ORDER BY `Siruta`;
Folosim CAST AS INTEGER pentru a returna valori numerice din valori de tip text. Backticks sunt folosite pentru a izola numele de câmpuri ce conțin spații sau caractere speciale.
Executăm această declarație, apoi dăm Click pe butonul ‘Create a view’ să salvăm rezultatele interogării ca un strat temporar care menține legătura cu datele originale, pv_RO_UAT_VIEW. Dă Click pe Refresh, și vei vedea noul tabel sub pv_RO_PRSD_FINAL.
Acum avem un tabel nou, cu date agregate despre alegeri, pe care îl putem lega înapoi de datele geografice în QGIS.
Dă Click pe ‘Save as file’ în fereastra Query pentru a salva interogările ca să le folosim și altă dată, într-un fișier cu numele prezenta_bec.sql.
Pentru a adăuga tabelul ca strat în QGIS, putem da Right Click și ‘Add to canvas’ în fereastra DB Manager, sau ‘Add Layer to Project’ în fereastra Browser din QGIS.
Join după atribute
Înapoi în fereastra principală din QGIS, deschide tabelele Unitate_administrativa_UAT și pv_RO_UAT_VIEW. Putem vedea că sunt 3186 înregistrări în primul tabel, și doar 3181 în al doilea, ceea ce înseamnă că sunt locuri care nu au date despre alegeri în urma Join-ului.
Dă Click Dreapta pe Unitate_administrativa_UAT, Properties, Joins, Add new join. Folosește pv_RO_UAT_VIEW ca și Join layer, Siruta ca și Join field, natCode ca și Target Field, și dă Click pe Ok. Deschide tabelul de atribute pentru Unitate_administrativa_UAT din nou, și ar trebui să se vadă noile coloane din datele electorale adăugate pentru fiecare unitate administrativă.
Problemele
Dacă în tabelul deschis dăm Click pe pv_RO_uats_view_Cod birou electoral și sortăm înregistrările crescător, vom găsi locurile care nu au fost legate. Acestea sunt sectoarele capitalei țării, și un oraș numit BĂNEASA. Notează natCode pentru fiecare înregistrare, deoarece vom avea nevoie de el mai târziu.
- BUCUREŞTI SECTORUL 1: 179141
- BUCUREŞTI SECTORUL 2: 179150
- BUCUREŞTI SECTORUL 3: 179169
- BUCUREŞTI SECTORUL 4: 179178
- BUCUREŞTI SECTORUL 5: 179187
- BUCUREŞTI SECTORUL 6: 179196
- BĂNEASA: 61069
Să investigăm de ce s-a întâmplat această pierdere de date. Deschide tabelul pentru pv_RO_PSRD_FINAL, dă Click pe ‘Move selection to top’, apoi ‘Select features using an expression’, și scrie „Localitate” LIKE ‘BUCUREŞTI%’. Ar trebui să observăm că toate înregistrările din București au Siruta 179132, doar Localitate diferă, de exemplu ‘BUCUREŞTI SECTORUL 1’, ‘BUCUREŞTI SECTORUL 2’.
Să ne uităm la înregistrarea cu BĂNEASA. Are natCode 61069 în Unitate_administrativa_UAT, și putem vedea că poligonul este situat în județul Constanța. Singurul Băneasa din județul Constanța din pv_RO_PSRD_FINAL are Siruta 63171.
De ce s-a întâmplat acest lucru? Probabil în tabelul de alegeri nu a fost nevoie să se diferențieze sectoarele Bucureștiului după Siruta, pentru că există un câmp, ‘Cod birou electoral’, care poate fi folosit pentru asta, așa că a fost ținută doar valoarea Siruta pentru tot Bucureștiul.
În ceea ce privește Băneasa, încă nu sunt sigură de ce există această diferență între datele de la ANCPI și datele electorale, încă trebuie să investighez. Între timp, să facem să funcționeze legăturile dintre date.
Rezolvarea problemei folosind tabel intermediar
Cea mai rapidă cale de a rezolva această problemă și de a face o legătură curată între datele geografice și datele electorale, fără a modifica tabelele originale, ar fi crearea unui tabel intermediar care conține un Siruta original și un Siruta modificat, care ajută înregistrările cu probleme să obțină rezultate din tabelul de alegeri.
Să mergem in fereastra DB Manager, să creăm un nou tabel pv_RO_SIRUTA_MODIFY care conține id, Siruta, Localitate din pv_RO_PSRD_FINAL. Apoi adăugăm un câmp Siruta_Mod și îl updatăm din Siruta.
CREATE TABLE pv_RO_SIRUTA_MODIFY AS
SELECT id, Siruta, Localitate FROM pv_RO_PRSD_FINAL;
ALTER TABLE pv_RO_SIRUTA_MODIFY
ADD COLUMN Siruta_Mod INTEGER;
UPDATE pv_RO_SIRUTA_MODIFY
SET Siruta_Mod = Siruta;
Actualizarea Siruta_Mod pentru înregistrările cu probleme de mai sus:
UPDATE pv_RO_SIRUTA_MODIFY
SET Siruta_Mod = 61069
WHERE Siruta = 63171;
UPDATE pv_RO_SIRUTA_MODIFY
SET Siruta_Mod = 179141
WHERE Siruta = 179132
AND Localitate = 'BUCUREŞTI SECTORUL 1';
UPDATE pv_RO_SIRUTA_MODIFY
SET Siruta_Mod = 179150
WHERE Siruta = 179132
AND Localitate = 'BUCUREŞTI SECTORUL 2';
UPDATE pv_RO_SIRUTA_MODIFY
SET Siruta_Mod = 179169
WHERE Siruta = 179132
AND Localitate = 'BUCUREŞTI SECTORUL 3';
UPDATE pv_RO_SIRUTA_MODIFY
SET Siruta_Mod = 179178
WHERE Siruta = 179132
AND Localitate = 'BUCUREŞTI SECTORUL 4';
UPDATE pv_RO_SIRUTA_MODIFY
SET Siruta_Mod = 179187
WHERE Siruta = 179132
AND Localitate = 'BUCUREŞTI SECTORUL 5';
UPDATE pv_RO_SIRUTA_MODIFY
SET Siruta_Mod = 179196
WHERE Siruta = 179132
AND Localitate = 'BUCUREŞTI SECTORUL 6';
După aceea, să inspectăm înregistrările pentru București și Băneasa în ambele tabele:
SELECT *
FROM pv_RO_PRSD_FINAL
WHERE Siruta = 179132 OR Siruta = 63171
GROUP BY `Localitate`
ORDER BY `Localitate`;
SELECT *
FROM pv_RO_SIRUTA_MODIFY
WHERE Siruta = 179132 OR Siruta = 63171
GROUP BY `Localitate`
ORDER BY `Localitate`;
Acum, vom crea un nou view, pv_RO_UAT_MOD, conținând date agregate de la alegeri. De această dată vom grupa datele folosind Siruta_Mod,și vom folosi id să legăm pv_RO_SIRUTA_MODIFY cu pv_RO_PRSD_FINAL:
SELECT CAST(`Cod birou electoral` AS INTEGER) AS `Cod birou electoral`, `Județ`,
Siruta_Mod, `Uat`,
Sum(a) AS a, Sum(b) AS b,
Sum(b1) AS b1, Sum(b2) AS b2, Sum(b3) AS b3,
Sum(c) AS c, Sum(d) AS d, Sum(e) AS e, Sum(f) AS f,
Sum(g1) AS g1, Sum(g2) AS g2
FROM pv_RO_PRSD_FINAL
JOIN pv_RO_SIRUTA_MODIFY ON (pv_RO_PRSD_FINAL.id = pv_RO_SIRUTA_MODIFY.id)
GROUP BY Siruta_Mod
ORDER BY Siruta_Mod;
Sunt 3186 înregistrări în pv_RO_UAT_MOD, ceea ce înseamnă că problema cu datele lipsă a fost rezolvată.
Crearea legăturii înapoi la datele spațiale
Vom încerca să legăm din nou Unitate_administrativa_UAT cu datele de la alegeri, de această dată folosind Siruta_Mod din pv_RO_UAT_MOD. În acest mod vom avea date electorale și pentru Buucurești și Băneasa.
Adaugă pv_RO_UAT_MOD în cadru, înlătură toate legăturile către Unitate_administrativa_UAT, și să adăugăm noua legătură:
- Join layer: pv_RO_UAT_MOD
- Join field: Siruta_Mod
- Target field: natCode
Dacă deschizi tabelul pentru Unitate_administrativa_UAT vei vedea că toate înregistrările pentru București și Băneasa sunt populate în campurile legate.
Pentru a păstra coloanele legate, dă Click Dreapta pe strat, Export, Save Features As, alege ‘ESRI shapefile’ și salvează fișierul ca UAT_elections_round_2.
În continuare, vom curăța datele, apoi vom avea un fișier final care înglobează atât datele geografice, cât și datele electorale la nivel de unități administrative.
Retușuri finale
Dă Click Dreapta pe Unitate_administrativa_UAT , Properties, Information, și salvează conținutul de sub ‘Fields’ într-un fișier text. Ne vom uita la fișier când vom redenumi câmpurile pentru UAT_elections_round_2, deoarece au fost truncate în timpul exportului.
OBJECTID
Id
IFCID
localId
namespace
versionId
country
natLevel
natLevName
natCode
name
resOfAut
beginVers
endVersion
Shape_Length
Shape_Area
pv_RO_UAT_MOD_Cod birou electoral
pv_RO_UAT_MOD_Județ
pv_RO_UAT_MOD_Uat
pv_RO_UAT_MOD_a
pv_RO_UAT_MOD_b
pv_RO_UAT_MOD_b1
pv_RO_UAT_MOD_b2
pv_RO_UAT_MOD_b3
pv_RO_UAT_MOD_c
pv_RO_UAT_MOD_d
pv_RO_UAT_MOD_e
pv_RO_UAT_MOD_f
pv_RO_UAT_MOD_g1
pv_RO_UAT_MOD_g2
Intenția este să păstrăm câmpurile originale de la Unitate_administrativa_UAT și să redenumim câmpurile care provin de la pv_RO_UAT_MOD.
Click Dreapta pe UAT_elections_round_2, Properties, Source Fields, pornește editarea, și redenumește pv_RO_UAT_ în ‘Cod birou electoral’, pv_RO_UA_1 în ‘Județ’ și așa mai departe.
Printre ultimele retușuri, vom defini proiecția fișierului, EPSG:3844 – Pulkovo 1942(58) / Stereo70 – Projected, și vom adăuga un câmp nou, pv_siruta, în care vom insera Siruta original pentru înregistrările cu probleme, așa cum apare în pv_RO_PRSD_FINAL.
De asemenea, este o bună practică să scrii niște metadata pentru fișier, astfel încât oamenii (inclusiv persoana ta pe viitor) pot înțelege despre ce sunt datele și sum au fost procesate.
Alegerile Prezidențiale din 2019 în România - Date geografice la nivel de UAT, Turul 2
Surse de date:
- Geometriile au fost create de către ANCPI și publicate pe Geoportalul INSPIRE al României
și pe Portalul de date deschise al Guvernului României.
- Tabelul de atribute a fost completat cu date publicate liber de Biroul Electoral Central pe Prezenta BEC.
- Datele se pot reutiliza sub termenii licenței pentru o Guvernare Deschisă.
Autor: Cristina Alexa
Data: 2019-12-07
Fișiere:
- Unitățile administrative tip poligon, din layer-ul Unitate_administrativa_UAT de pe http://geoportal.ancpi.ro/portal/apps/webappviewer/index.html?id=faeba2d173374445b1f13512bd477bb2.
- Rezultate finale alegeri din turul 2, 24 noiembrie 2019, din fișierul pv_RO_PRSD_FINAL.csv, de pe https://prezenta.bec.ro/prezidentiale24112019/romania-pv-final.
Sisteme de Coordonate:
- EPSG:3844 - Pulkovo 1942(58) / Stereo70 - Projected
- EPSG:4326 - WGS 84 - Geographic
Metode:
Procesarea datelor a fost făcută în QGIS 3.8.3-Zanzibar și în Spatialite (tot prin QGIS).
Au fost descărcate datele geografice și cele electorale, apoi s-a trecut la agregarea rezultatelor electorale la nivel de UAT (deoarece erau la nivel de secție de votare), pentru a putea face legătura între cele două seturi de date.
Gruparea datelor din tabelul pv_RO_PRSD_FINAL s-a făcut pe câmpul Siruta, în Spatialite, și a fost creat un view temporar pv_RO_UAT_VIEW.
A urmat Join-ul între fișierul Unitate_administrativa_UAT și pv_RO_UAT_VIEW, pe Siruta = natCode.
Au rezultat înregistrări fără date electorale în urma Join-ului, a urmat inspectarea cauzelor.
S-a constatat că:
În pv_RO_PRSD_FINAL, sectoarele Bucureștiului au Siruta 179132, orașul Băneasa din Constanța are Siruta 63171
În Unitate_administrativa_UAT:
BUCUREŞTI SECTORUL 1: 179141
BUCUREŞTI SECTORUL 2: 179150
BUCUREŞTI SECTORUL 3: 179169
BUCUREŞTI SECTORUL 4: 179178
BUCUREŞTI SECTORUL 5: 179187
BUCUREŞTI SECTORUL 6: 179196
BĂNEASA: 61069
Problema a fost remediată prin folosirea unui câmp intermediar, Siruta_Mod. A fost creat un tabel intermediar din pv_RO_UAT_VIEW, pv_RO_UAT_MOD, a fost adăugat un câmp Siruta_Mod și updatat din Siruta, dar pentru București și Băneasa au fost inserate codurile de mai sus.
S-a refacut Join-ul cu Unitate_administrativa_UAT, de data asta cu pv_RO_UAT_MOD, și au rezultat 3186 rânduri populate complet.
Rezultate:
Fișierul rezultat în urma Join-ului a fost exportat ca ESRI shapefile, cu numele UAT_elections_round_2, EPSG 3844, și encoding UTF8.
În final, a fost adăugat un nou câmp pv_siruta în care sunt trecute pentru București și Băneasa codurile Siruta originale din pv_RO_PRSD_FINAL.
Rezultatele au fost verificate prin query-uri în Spatialite și compararea cu rezultatele finale și cele la nivel de UAT de pe https://prezenta.bec.ro.
Alte considerente:
S-a ales agregarea datelor electorale la nivel de Siruta (natCode) deoarece s-a urmat structura din fișierul geografic de pe ANCPI, și s-a dorit folosirea unui nivel de detalii mai mare, de unde se pot generaliza datele, dacă este nevoie.
Se putea folosi și agregarea la nivel de 'Siruta' ca în fișierul cu date electorale, folosind sectoarele Bucureștiului nediferențiate, prin dizolvarea geometriilor corespunzătoare din fișierul geografic.
De asemenea, se putea folosi și agregarea la nivel de 'Cod birou electoral', iar atunci am fi dizolvat geometriile la nivel de județ, păstrând sectoarele Bucureștiului nedizolvate.
Putem ajunge la cele două nivele de generalizare de mai sus și pornind de la fișierul UAT_elections_round_2.
Verificarea rezultatelor
Putem testa rezultatele făcând interogări în DB Manager, apoi mergând pe prezenta.bec.ro și verificând rezultatele totale fie pentru un UAT specific, fie pentru un întreg birou electoral:
SELECT 'a', Sum(a) AS sum FROM pv_RO_UAT_MOD WHERE `Cod birou electoral` = 1 UNION
SELECT 'b', Sum(b) AS sum FROM pv_RO_UAT_MOD WHERE `Cod birou electoral` = 1 UNION
SELECT 'b1', Sum(b1) AS sum FROM pv_RO_UAT_MOD WHERE `Cod birou electoral` = 1 UNION
SELECT 'b2', Sum(b2) AS sum FROM pv_RO_UAT_MOD WHERE `Cod birou electoral` = 1 UNION
SELECT 'b3', Sum(b2) AS sum FROM pv_RO_UAT_MOD WHERE `Cod birou electoral` = 1 UNION
SELECT 'c', Sum(c) AS sum FROM pv_RO_UAT_MOD WHERE `Cod birou electoral` = 1 UNION
SELECT 'd', Sum(d) AS sum FROM pv_RO_UAT_MOD WHERE `Cod birou electoral` = 1 UNION
SELECT 'e', Sum(e) AS sum FROM pv_RO_UAT_MOD WHERE `Cod birou electoral` = 1 UNION
SELECT 'f', Sum(f) AS sum FROM pv_RO_UAT_MOD WHERE `Cod birou electoral` = 1 UNION
SELECT 'g1', Sum(g1) AS sum FROM pv_RO_UAT_MOD WHERE `Cod birou electoral` = 1 UNION
SELECT 'g2', Sum(g2) AS sum FROM pv_RO_UAT_MOD WHERE `Cod birou electoral` = 1
ORDER BY 'a';
SELECT 'a', Sum(a) AS sum FROM pv_RO_UAT_MOD WHERE `Siruta_Mod` = 2130 UNION
SELECT 'b', Sum(b) AS sum FROM pv_RO_UAT_MOD WHERE `Siruta_Mod` = 2130 UNION
SELECT 'b1', Sum(b1) AS sum FROM pv_RO_UAT_MOD WHERE `Siruta_Mod` = 2130 UNION
SELECT 'b2', Sum(b2) AS sum FROM pv_RO_UAT_MOD WHERE `Siruta_Mod` = 2130 UNION
SELECT 'b3', Sum(b2) AS sum FROM pv_RO_UAT_MOD WHERE `Siruta_Mod` = 2130 UNION
SELECT 'c', Sum(c) AS sum FROM pv_RO_UAT_MOD WHERE `Siruta_Mod` = 2130 UNION
SELECT 'd', Sum(d) AS sum FROM pv_RO_UAT_MOD WHERE `Siruta_Mod` = 2130 UNION
SELECT 'e', Sum(e) AS sum FROM pv_RO_UAT_MOD WHERE `Siruta_Mod` = 2130 UNION
SELECT 'f', Sum(f) AS sum FROM pv_RO_UAT_MOD WHERE `Siruta_Mod` = 2130 UNION
SELECT 'g1', Sum(g1) AS sum FROM pv_RO_UAT_MOD WHERE `Siruta_Mod` = 2130 UNION
SELECT 'g2', Sum(g2) AS sum FROM pv_RO_UAT_MOD WHERE `Siruta_Mod` = 2130
ORDER BY 'a';
Exportarea fișierului în multiple tipuri și proiecții
Dacă vrei ca datele să fie ușor de folosit, este o idee bună să exporți fișierul și ca gpkg, geojson sau kml.
Fișierul este în sistemul de coordonate Stereo 70, specific României (sau EPSG 3844). Am putea vrea să reproiectăm fișierele în WGS84 (EPSG 4326), astfel încât să putem combina datele noastre cu alte date cu coordonate latitudine/longitudine.
Într-un final am avea următorul set de fișiere:
- UAT_elections_round_2.zip, conținând minimum 3 fișiere care formează un shapefile, shp, shx, și dbf, și un fișier pentru proiecție:
- UAT_elections_round_2.shp
- UAT_elections_round_2.shx
- UAT_elections_round_2.dbf
- UAT_elections_round_2.prj
- UAT_elections_round_2.gpkg
- UAT_elections_round_2.geojson
- UAT_elections_round_2_wgs84.zip
- UAT_elections_round_2_wgs84.gpkg
- UAT_elections_round_2_wgs84.geojson
- UAT_elections_round_2.qmd (fișierul de metadata)
Gânduri de final
Asta este tot, am obținut un fișier care conține date electorale cu informații spațiale, la nivel de unități administrative. Pentru moment, se pot descărca fișierele shapefile rezultate de pe https://github.com/alexaac/Presidentials2019Data/tree/master/round_2 , și folosi https://mapshaper.org/ pentru a face alte conversii.
Mai multe despre cum se dizolvă datele la nivel de județ, cum folosim datele electorale din străinătate, sau cum putem cartografia date și mai detaliate de pe prezenta.bec.ro, în alt tutorial. 🙂