Commit b885bdf6 authored by Branko Kokanovic's avatar Branko Kokanovic

Inicijalna verzija

parent e71bb8e2
.idea
*.pbf
stambene-jedinice-analysis.log*
result.csv
progress.pickle
index.html
# stambene-zajednice-analysis
# Najbitniji linkovi
Analiza registra stambenih zajednica - https://data.gov.rs/sr/datasets/registar-stambenikh-zajednitsa-2/
\ No newline at end of file
* [Registar stambenih zajednica](https://data.gov.rs/sr/datasets/registar-stambenikh-zajednitsa-2/)
* [Analiza rezultata](https://notebooks.azure.com/brankokokanovic/projects/stambene-zajednice/html/StambeneZajednice.ipynb)
* [Thread na OSM forumu](https://forum.openstreetmap.org/viewtopic.php?id=66945)
* [Tabela (avgust 2019.) sa spojenim podacima (PAŽNJA: veličina je 30MB!)](https://stambenezajednice.z6.web.core.windows.net/avgust2019.html)
# Analiza stambenih zajednica (zgrada)
Portal otvorenih podataka je ponudio registar stambenih zajednica (zgrada) na adresi: https://data.gov.rs/sr/datasets/registar-stambenikh-zajednitsa-2/
Ovaj projekat ima za cilj da iskoristi gorepomenuti registar da bi na najbolji način doprineo [OSM](https://www.openstreetmap.org) (OpenStreetMap) projektu.
Za cilj je da se vidi koje zgrade već postoje u OSM-u, da se vidi njihov kvalitet tagovanja u OSM-u i da ovaj projekat izgeneriše šta sve fali da se unese u OSM.
Originalni thread na OSM forumu: https://forum.openstreetmap.org/viewtopic.php?id=66945
## Dohvatanje podataka
Da bi se ovo uradilo, napravljena je prosta Python skripta (`main.py`) koja svaku zgradu iz registra pokušava da nađe u OSM-u. Korišćeni su Nominatim i Overpass. Rezultat programa je novi CSV koji je korišćen u daljoj analizi.
Osim ako ne želite da ga opet generišete, nema potrebe da pokrećete ovu skriptu. Rezultat je već u repozitorijumu kao result.csv (avgust 2019.)
Inače, da bi se skripta pokrenula, potreban je Python 3.5 (ili noviji) i biblioteke pomenute u requirements.txt. Skripti treba oko 5-6 dana neprekidnog rada da završi.
Po generisanju result.csv fajla, potrebno je i izvršiti `generate_html.py` da bi se dobila konačna HTML strana.
## Analiza
Poslednju analizu možete videti na Jupyter notebook-u:
https://notebooks.azure.com/brankokokanovic/projects/stambene-zajednice/html/StambeneZajednice.ipynb
Tu je i najbolja vizualizacija ovog projekta, pa pogledajte tamo!
## Prikupljeni podaci
Prikupljene podatke ove skripte možete videti ovde:
Ovo je korisno ako želite da se fokusirate na neku konkretnu opštinu/okrug, ili da vidite šta sve fali, pošto ova web strana ima mogućnost filtriranja, sortiranja itd.
This diff is collapsed.
geopy==1.20.0
overpy==0.4
Jinja2==2.8.1
\ No newline at end of file
# -*- coding: utf-8 -*-
import csv
from operator import itemgetter
from jinja2 import Environment, PackageLoader
def main():
env = Environment(loader=PackageLoader('__main__', '../templates'))
template = env.get_template('index_template.html')
stambene_zajednice = []
districts = {'': 0}
max_district_id = 0
with open('result.csv') as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
stambene_zajednice.append(row)
for sz in stambene_zajednice:
if sz['district'] not in districts:
max_district_id += 1
districts[sz['district']] = max_district_id
sz['district_id'] = districts[sz['district']]
sz['street'] = sz['street'].replace('"', '\\"')
sz['found'] = sz['node'] != "" or sz['way'] != ""
sz['multiple_entities_same_housenumber'] = sz['multiple_entities_same_housenumber'] or False
sz['building_tag_present'] = sz['building_tag_present'] or False
sz['building_is_apartments'] = sz['building_is_apartments'] or False
stambene_zajednice.sort(key=itemgetter('district', 'municipality', 'street', 'number'))
output = template.render(stambene_zajednice=stambene_zajednice, districts=districts)
with open('index.html', 'w', encoding='utf-8') as fh:
fh.write(output)
if __name__ == '__main__':
main()
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment