Mapnik

Osvojena druga nagrada na natječaju za najbolju vizualizaciju podataka javne nabave

Članovi lokalne zajednice OSGEO Hrvatska osvojili su drugu nagradu na natječaju za najbolju i najoriginalniju vizualizaciju podataka o javnim nabavama raspisanu od strane udruge vjetrenjača.

Istovremeno s održavanjem opendata hackatrona u organizaciji Open Knowledge Fundations, a podržane od lokalne OSGEO zajednice raspisan je i javni natječaj udruge vjetrenjača. Kao cilj i temu Opendata hackatrona učinilo nam se prilično zanimljivo pokušati prostorno tj. kartografski prikazati raspodjelu novca iz državnog budžeta putem javnih nabava, te na taj način podržati ovu hvale vrijednu građansku inicijativu "provjetravanja" netransparentnih javnih nabava kao jedne od primarnih metoda generiranja korupcije u Republici Hrvatskoj.

Dočekalo nas je 4.400 pravnih osoba obveznika javne nabave, 13.000 ponuditelja, 6000 ugovora i gotovo 80 milijardi kuna iz državnog budžeta u strukturiranom ali prilično nekonzistentnom setu podataka. Iz takvih podataka nije se puno moglo izvući no ovo što smo uspjeli prikazati je samo dio onoga što smo mogli a nismo stigli zbog nedostatka vremena.

Nezgodu uvijek dosadnog i zamornog prilagođavanja podataka prikazu u prostoru, nas kao tehnološke entuzijaste motivirala je i veselila prilika za isprobati neke nove tehnologije koje već neko vrijeme stoje na listi prioriteta većine sudionika ovog projekta.

Screenshot preglednika karte javnih nabavaScreenshot preglednika karte javnih nabava

Za realizaciju projekta korišteni su isključivo slobodno softverska rješenja i slobodni podaci. U pozadini, industrijski standard, PostgreSQL baza podataka u kombinaciji s PostGIS prostornim proširenjem. Nakon zamornog pročišćavanja podataka proces geokodiranja je odrađen pomoću geopy Python modula i Google servisa za geokodiranje. Uz manje poteškoće, odnosno dodatnog prilagođavanja vrijednosti koje se šalju geocoding servisu, vjerujemo kako se uspješno geokodirala većina podataka. Osim geokodiranih podataka javne nabave, kao podloga koriste se podaci OpenStreetMap projekta.

Vizualizacije su napravljene pomoću MapBox TileMill alata, "desktop" rješenja za internet preglednik razvijenog na node.js platformi. TileMill omogućuje jednostavno uređivanje kartografskog prikaza, odnosno stila karte, uz trenutni prikaz izmjena. Za iscrtavanje karte brine se Mapnik, C++ kartografska biblioteka koja omogućava iscrtavanje prelijepih karata. Veza između TileMilla i Mapnika ostvarena je pomoću Carto jezika, vrlo sličnog CSS-u. Osim uređivanja stila, TileMill omogućava definiranje interakcija za objekte na karti kombinacijom HTML-a i Mustache.js.

Nakon definiranja karte i interakcije napravljen je izvoz u MBTiles format. MBTiles je SQLite baza podataka koja sadrži pripremljeni mozaik karte i podatke potrebne za interakciju u UTFGrid formatu. Kartografski poslužitelj temelji se na TileStream poslužitelju razvijenom na node.js platformi.

Na kraju, pripremljen je klijent, malo HTML-a i JavaScripta te nešto CSS-a posloženog oko Leaflet biblioteke. Leaflet je moderna JavaScript biblioteka koja omogućava brz razvoj kartografskih aplikacija temeljenih na tzv. tiled (mozak) kartografskim poslužiteljima. Osim Leafleta, koristi se još i Wax JavaScript biblioteka koja omogućava (olakšava) spajanje TileStreama i Leafleta.

Kao što možete primijetiti, koristili smo mnogo tehnologija, od kojih većinu razvija Development Seed ekipica. Nažalost, većinu slobodnog vremena u razdoblju trajanja natječja, potrošili smo na pročišćavanje podataka i facepalmanje. S druge strane, druženje i osjećaj da smo na kraju ipak nešto postigli, neprocjenjivo...

Hvala još jednom svima koji su sudjelovali :)

Prikaz detalja karte objavaPrikaz detalja karte objavaPrikaz detalja transfera novcaPrikaz detalja transfera novca

Udruženi sadržaj