RGZ otvorio registar prostornih jedinica - plan za import

Nešto mi je bre 4000 jako mnogo, hajde ti to molim te malo proveri. Ja sam onako poprilično gledao te podatke, i ima par naselja gde na OSM nisu ucrtane eksklave (to su ove što imaju pokrivenost ispod 60%, npr. Davidovac); ima tek poneki “gap”, od kojih su neki i uneti (granica između Pinosave i Rušnja je naročito sumanuta, sa tri odvojena procepa širine tek desetinu metara). Ali mi je nemoguće da 4000 granica ne može da se upari.

O ovome smo već raspravljali, ja sam protiv da se unosi admin_level 8 tek da bi bili uniformni. Povećaće se količina relacija, a napravićemo dodatni problem na Nominatimu, jer će svaka adresa u Novom Sadu glasiti *ulica, Novi Sad (naselje), Novi Sad (opština), Grad Novi Sad, … *.

Ja sam granicu Vojvodine i Rumunije peglao ručno, bila je u katastrofalnom stanju (dole ide Dunavom pa nije problem). Al ni ja baš ne volontiram da pitam komšije, ne radim to ni kad mi usfali šećera :stuck_out_tongue:

Za ilustraciju, superponirao sam granice sela Ljupten sa OSM preko Geosrbije, i poklapanje je odlično, dok su kod tebe sve do jedne označene sa ERROR_WAY_NOT_FOUND. Da nije možda problem što je na granici okruga, otkud znam?

У оволиком броју релација та једна релација неће направити никакву разлику. Што се тиче Номинатијума, ако је то тачно, зашто некога ускраћивати са додатним податком - ово ми личи на унос података само ради рендера.

Pa prosto, ja ne živim u opštini Novi Sad. Ne postoji opština Novi Sad. Postoji naselje Novi Sad i administrativna jedinica grad Novi Sad.

Update: sredio sam granicu sa Kosovom. Sad nam je granica sa Kosovom 99.9% ista kao u RPJ-u! (onih 0.01% je granica na Kopaoniku gde se razlikujemo, pa su unete obe kao “claimed_administrative”). Pošto je OSM granica bila mala povučena ka nama, dobili smo ovde još površine u OSM-u:) (tipa, neka naselja, kao Ranatovce i Madjare, su imala samo 20% teritorije u Srbiji, ostatak je bio na Kosovu).

To je prosečna vrednost odstupanja svake tačke. 30m znači kao kad bi neko pomerio ceo krug za 30m u neku stranu. Meni na par primera deluje da jesu stvarno metri. Ako imaš neki primer, bilo bi lakše, pa da ga prodiskutujemo. Apropos preciznosti, smanjiću preciznost sledeći put kad budem generisao, nije namerno, nego prosto nisam se setio da zaokružim brojeve:)

Gledaću, ali stvarno mi je to poslednja stvar da gledam, hoću prvo sredim ove zicere. Kod Ljuptena je slučaj ono što sam pričao - granica jeste solidno precizna, ali postoji gap bukvalno sa svim naseljima, između naselja Rosica, Vukanja, Kulina i Kamenica i moja skripta onda ne može da bude sigurna šta da conflate-uje jer očekuje da pomeri put koji nema naselje na drugoj strani, a jedini nađen put ima drugo naselje na drugoj strani jer u OSM-u nema gapa, nego su spojena naselja i skripta odustaje, jer ako bi pomerala taj put, efektivno bi pomerala i drugo naselje. Ako filtriraš po “Ljupten” na onom mom izveštaju, videćeš da u koloni “Granična naselja” ima upisan samo Ljupten, ne i naselje sa “druge strane”. Ako otvoriš .osm, videćeš jasno te gap-ove. Slobodno možeš ti da uzmeš par primera, pa da vidiš da li je svuda taj problem (čemu sam pravio izveštaj onda:D), tj. da li su gap-ovi stvarno problem svuda, kao što ja sumnjam. Dakle, nije 4000, nego 2000 (svaki put je prijavljen sa obe strane da ne može da se nađe) i da - izgleda da imamo 2000 gap-ova po Srbiji:/ Ne kažem da je problem nerešiv i da ne može opet skripta da ga rešava, samo sam ga ostavio za kasnije. Opet - ako neko želi da pomogne (što pisanjem skripte koja bi razdeljivala ove puteve, što pisanjem uputstva da se skupimo i delimo ih ručno…), slobodno!

Pričao sam malopre sa Guillaume-om na Telegram srpskoj grupi. On kaže da treba dodavati i grad i opštinu samo ako fizički ili pravno ti koncepti postoje odvojeni (tipa ako Jagodina ili Novi Sad ima i gradonačelnika grada i predsednika opštine). Ako ti koncepti ne postoje, onda ne treba dodavati level 8 samo radi dodavanja. Prokomentarisao je i da je mana tog pristupa da neko ko želi da izvuče sve levele 8 neće moći. Ispravite me ako grešim, ali ovi gradovi nemaju i gradonačelnika i predsednika opštine. Čak, novosadski wiki kaže da su opštine samo formalno i statistički postojale. Čak i ja naginjem da ne stavljamo level 8 (mada će mi to oteža pisanje skripte:). Sačekao bih da vidim da li ima još neko da se javi na ovu temu pre nego što nastavim ovako (ignorisanje levela 8, opština, ako je iznad nje grad, a to je jedina opština i ima istu geometriju kao i grad).

Auu… ja se sad stvarno dvoumim da li da importujemo te podatke, unećemo gomilu đubreta koje je teže održavati nego ovo što već imamo. Nemam JOSM (a i ne instalira mi se, sve radim preko iD) pa ne mogu da vidim koliki su ti procepi, ali mi to sad već deluje kao greška u podacima, tj. da su i oni odnekud importovali bez previše naknadnih QA intervencija. Gledam na Geosrbiji konkretno Ljupten, i ti gapovi se ne vide ni pri najvećem zumu.

Sad te već mučim, ali možeš li da napraviš i nekakvu metriku koliki su ti gapovi?

Ti gapovi su ispravni, bar što se tiče države (Nemanja je na Telegram grupi pričao da je to zato što nijedno naselje nije htelo neki deo, npr. put, šumu…). Ti gapovi nisu veliki, 2-3m mislim, ali nemam sad komp pri ruci, tako da uzmi ovu informaciju sa rezervom. Stvarno bi trebalo da uzmeš JOSM, proučiš i pogledaš ga (prosto ne mogu da verujem da ozbiljne izmene preko 5km radijusa i mnogo relacija mogu da se prave sa iD editorom, to je bre čist mazohizam), malo nema smisla ni da ja izigravam sekretaricu i da igramo gluvih telefona i da ti ja prenosim i screenshot-ujem vrednosti… Poenta je - ako želimo 100.0% precizne geomtrije, moramo da uračunamo i ove gap-ove. Ako želimo “good enough” situaciju, onda možemo da ih ignorišemo… Ja mislim da želimo 100% precizne geometrije, a time dobijamo u miraz i gap-ove.

Update:

  • Nisam tu do marta, tako da prestajem sa radom na ovome do daljnjeg:)
  • Završio sam dodavanje ref:sr:maticni_broj na sve opštine!
  • Dodao sam subarea na sve veze opština<=>naselje (level 8<=>9)! PeđaS, pogledaj, da li je ovako dovoljno dobro?

TODO:

  • Pitati preostale komšije za granice (Kosovo, Hrvatska gotovi)
  • Peglati ovih 11.000 puteva koji se zapravo daju pomeriti, dok neko ne smisli neko rešenje za ovih 4000 grešaka
  • Srediti gradove (odraditi procenu razlike površina, dodati ref:sr:maticni:broj, dodati subarea ka opštinama)
  • Srediti okruge (Duja je predložio “ref” za šifre okruga, hoćemo sa tim da idemo za okruge, neko nešto protiv da li ima?, dodati subarea ka gradovima/opštinama)

Ostalo je pitanje fantomskih opština (koje su zapravo gradovi). Ako niko nema ništa da doda, da ih brišemo onda i ostavljamo samo gradove. Međutim, time otvaramo još jedan sličan problem “fantomskih naselja” - naime, imamo 8 opština koji imaju samo jedno naselje. To su:
[‘ВРАЧАР’, ‘ЗВЕЗДАРА’, ‘НОВИ БЕОГРАД’, ‘РАКОВИЦА’, ‘САВСКИ ВЕНАЦ’, ‘СТАРИ ГРАД’, ‘СЕВОЈНО’, ‘СРЕМСКИ КАРЛОВЦИ’]

Po istoj logici (“da li postoji i predsednik opštine Rakovica i predsednik naselja Rakovica?”), mogli bismo i njih da spojimo u jedan entitet - da samo ostavimo opštinu? Ne znam da li je ovo pametno jer ne znam da li uopšte postoji koncept predsednika naselja? Zna li neko? Ja bih rekao da osim poštanskog broja, nema ništa drugo specifično? Ako postoji koncept predsednika, onda Rakovica ima predsednika naselja? A ako ne postoji, onda su sva naselja od starta fantomski entiteti, pa i ako postoji Rakovica naselje ili ne, nije ni bitno mnogo. Sa druge strane, Čukarica i Sopot i sl. opštine imaju gomilu “stvarnih” naselja ispod sebe, pa ne vidim zašto Čukarica može da ima level 9, a Novi Beograd da nema i da za Novi Beograd naselje nestaje i spaja se sa opštinom, nije mi konzistentno. Možda bih čak ovde ostavio sve da bude kao u RGZ-u (za razliku od fantomskih opština), tj. da ostavimo administrativna fantomska naselja. Ako ih ostavimo, onda bi ja kao Novobeograđanin živeo u “Omladinskih Brigada, Novi Beograd, Opština Novi Beograd, Beograd”, što jeste glupo. Vaše mišljenje, da ostavljamo fantomska naselja ili da i njih spajamo sa opštinama, kao fantomske opštine što smo rekli da ćemo sa gradovima?

Jedna zanimljivost - da li je greška ili ne, ali u RGZ-u svi okruzi imaju oblik “NNN управни округ” (“Severnobanatski upravni okrug”, “Jablanički upravni okrug”…) osim Braničevskog koji se u RGZ-u zove prosto… “Браничевски округ”. Eto, malo mi poremetilo skriptu, ali kod nas u OSM-u je od početka “pravilnije” (ako pravilnosti ovde može da se kaže da postoji uopšte:)

Update:

  • Odradio sam conflation 11000 puteva, to je ono sto je zicer moglo. Novi izvestaj stanja je ovde.
  • Novi CSV sa stanjima naselja je ovde. Average je sada 99.42%, a median je 100%. Sto znaci da smo skoro pa savrseni:) Ispravio sam ono sto je Pedja trazio (da se zaokruzuju metri). Takodje sam uneo novi metriku “area_not_shared” koja malo bolje racuna sta nije deljeno izmedju poligona A i B kao: P((A \ B) ∪ (B \ A)) / P(A ∪ B). Najbolje je nacrtati da se vidi sta je pisac hteo da kaze:)

Ono sto nas trenutno najvise muci su pogresne geometrije, tj. u vecini slucajeva postojanje gap-ova koji ne postoje u OSM-u, a i ima losih spojeva (OSM ili RGZ ima dodatnu liniju koja deli poligone i sl.). Ovo mora da se rucno rascivija. Ako neko zeli da pomogne, dovoljno je da otvori ovaj HTML izvestaj iznad, da nadje ove neresene slucajeva i da prati https://wiki.openstreetmap.org/wiki/Serbia/RGZ_Import/Uputstvo. Ja cu to isto da radim koliko stignem u slobodnom vremenu.

Nisam se dugo javio, evo novi update:

  • Sređena granica sa Rumunijom (oni su imali open dataset isto, jako su slični, nije bilo neslaganja, poklopio sam ga koliko sam mogao)
  • Napravio sam program i odlepio gomilu node-ova i way-ova od drugih node-ova, way-ova i relacija (762 komada). Time smo rešili kategorije problema “ERROR_NODE_IN_OTHER_WAYS” i “ERROR_NODE_IN_OTHER_RELATION”
  • Sve node-ove koji su imali neke dodatne tagove (semafor i sl.) su ispravljeni isto. Time je rešena kategorija problema “ERROR_UNEXPECTED_TAG” i “ERROR_NODES_WITH_TAGS”
  • Popravio sam program da može da conflate-uje way-ove koji su imali više tačaka u OSM-u nego što ih imaju u RGZ-u (nisam taj deo bio ispitao, pa sam ga tek sad uključio). Time je rešena kategorija “ERROR_OSM_WAY_IS_MORE_COMPLEX” (663 way-a).
  • Koristio sam novu verziju podataka sa RGZ-a, od marta. Nema nekih velikih promena.
  • To je to bilo od lakih stvari. Sve što je ostalo su gap-ovi, koji moraju da se reše ručno. Ja bar ne znam kako, ako neko zna - slobodno!
  • Ako treba ja da prelomim, prelamam da nemamo opštine gde nema nijedna druga opština pod gradom (ostavimo grad, izbrišemo opštinu). To ću da radim na dalje. Isto važi i za naselja - gde ima opština samo sa jednim naseljem, da brišemo naselje (to je slučaj danas sa sledećih 8 naselja - Vračar, Zvezdara, Novi Beograd, Rakovica, Savski Venac, Stari Grad, Sevojno i Sremski Karlovci).

Statistike:

  • Popeli smo se sa 63% conflated puteva na 69%
  • Procenat NEDELJENE terotorije (koja se ne slaže) po svim naseljima je popravljen sa 1.16% na 0.37% (idelno treba da je 0, jelte). 75. percentil je bio 1.098%, sad je 0.011%
  • Ne postoji nijedno naselje koje ima grešku veću od 10%

Evo ovde novih fajlova:

Izveštaj conflate-a (šta je urađeno, šta fali i razlog zašto fali)
Statistike naselja (CSV deljenih/nedeljnih površina naselja)
Statistike opština (CSV deljenih/nedeljnih površina naselja)
.shp i .osm (123MB) (Svi generisani shapefile-ovi i .osm fajlovi, za celu Srbiju i po okruzima!)

Šta dalje:

Sredio sam sve programski koliko je moglo. Ostale su teške koske. Ručno sam sredio sve tako da nema nijedno naselje preko 10%. Ako pogledate .csv, ostalo je još 69 naselja koje imaju neslaganje preko 5%, a 532 preko 1%. Svako neslaganje mora da se otvori, dobro razmisli kako da se geometrija najbolje sredi i popravi. Dobra stvar je što je sve odlepljeno, tako da ne morate da se bojite da ćete pomeriti neku ulicu, nacionalni park, semafor, reku… Druga dobra stvar je što kad sređujete jedno naselje, zapravo sređujete i sve susede, tako da će ići duplo brže nego što izgleda:) Sredio sama uputstvo i ažurirao ga. Ako želite da se podelimo, javite se ovde ili na Telegram, rado ću pomoći, objasniti u početku, ali ovo nije posao za jednu osobu sad. Nije ništa ultra komplikovano, ali nije ni da se samo klikće, treba mozak malo uključiti:) Pozivam vas sve - ako neko može da se uključi, bilo bi super!

Uputstvo je ovde: https://wiki.openstreetmap.org/wiki/Serbia/RGZ_Import/Uputstvo

To je to od mene, tu sam da pomognem, ali nemam više šta pametno da radim, osim da generišem ove fajlove iznova i da popravljam ova naselja kad mi je dosadno:)

Hvala, Branko.

Nadam se da ću moći da se uključim, mada (uprkos vanrednoj situaciji) i nemam puno vremena u poslednje vreme. U međuvremenu sam bio quality assurance / dežurno zajebavalo / levo smetalo (nepotrebno precrtati) za tvoje changesetove, nadam se da sam ipak bio od koristi. Ali svako ima svoj projektić ovde, moj je da mapiram Bačku pa za njom Srem u nivo detalja koji bar odgovara starim topografskim kartama.

Elem, obećavam da ću u narednom periodupogledati linkove koje si dao. Kao štivo relevantno za ovu temu, hteo bih da preporučim sledeću prepisku na OSM-talku:

https://lists.openstreetmap.org/pipermail/talk/2020-March/084427.html

Ima tu raznih mišljenja, nijedno posebno ne podržavam, ali sve više imam sumnje u vrednost ovakvog importa. Sudeći po tvom izveštaju, dosta smo popravili kvalitet OSM podataka o granicama naselja, ali mi se sve više čini da su ti gapovi sranje. To po meni u realnosti ne postoji, nema praktičnu vrednost, namučićemo se da ih napravimo radi importa, a osećam da će za par godina RGZ da se predomisli i pročisti svoj dataset da bi ih eliminisao.

Jel ima nešto pametnije da radimo, na primer, kad god se dohvatim neke šume iz Corine importa vidim da su joj granice čisto đubre… ili da definišemo landuse=residential po centralnoj Srbiji… ili… razumeš, nisam baš tako entuzijasta za ovaj projekat…

Svaka čast, neumoran si.

Čini mi se da se posle ažururanja adminsitrativnih granica pojavilo dosta adminsitrativnih jedinica iz okolnih zemalja koje su zašle u okvir naše teritorije.

Na http://editor.osmsrbija.iz.rs/?dataset=srbija-administrativne-granice gde je filter granica Srbije se vidi dosta stranih objekata na mapi.

Možda nešto nije ažurirano?

Update: uradio sam video uputstvo (day 19 karantina:D), mislim da ima dosta prednosti - plastično pokaže ceo proces conflate-ovanja granica, možda pokupite usput i neke fore koje niste znali, i poslednje - ako niste nikad koristili JOSM, da vidite kakav je osećaj otprilike.

https://peertube.live/videos/watch/d5ef0a85-2578-4c7d-8430-1395e853eca7
https://vimeo.com/401994061 (dupli link, ako zub vremena odnese ovaj prvi)

Imamo dva prepletanja (claimed boundaries nam se ne slažu) - 1) sa Kosovom oko Kopaonika , i 2) sa Hrvatskom na dva-tri mesta, oko onih Ada.

Ovde mogu da se vide duple granice:

Ako su ti te administrative jedinice iz drugih zemalja koje upadaju u Srbiju neke od ovih odavde, to je onda nesrećno, ali očekivano. Prosto zato što query vidi srpsku granicu i onda vidi te admin. jedinice koje su delom unutar naše granice i misli da su naše:) Ako mi pokažeš query, možemo da radimo zajedno da ga popravimo. Ako nije zbog toga (npr. na ovom tvom linku ja vidim da piše “Grandas de Salime” što nema nikakve veze sa vezom:), onda ne znam šta bi moglo biti (ali ne vidim kako je povezano sa ovim granica što radim)

Uf, misliš da ja nisam imao svojih sumnji dok sam ovo peglao?:slight_smile: Ja ovde vidim dva pravca - ili “priznajemo” te autoritativne podatke kao dobre, ili ne? Ako ih priznajemo, onda možemo da se cimamo da ih napravimo kako su tačno, ili da ih odokativno unesemo. Trenutno su “good enough”, i ostavljeno je da ih budži ko hoće, kad hoće. Verovatno će RGZ da ih menja, ali šta da se radi (koliko sam razumeo Nemanju na Telegramu, nemaju nameru da ukidaju gap-ove jer ne zavisi od njih). Usvajanje ovih podataka ima još jednu prednost, a to je da gradimo međusobno poverenje sa RGZ-om, što nam obostrano koristi, pa možda jednog dana dobijemo i neke druge dataset-ove, npr. ulice;)

Evo sad ću da okačim nešto oko etimologije, ali u principu - svako radi šta misli da ima najviše smisla (ili da će da mu najbolje ubije vreme u samoizolaciji:D)

Meni se čini da ima adminstrativnih jedinica iz svih zemalja sa kojima se graničimo koje nekako uđu u filter po granici.

Overpass Query:

[out:json][timeout:25];
(
area
[“name”=“Србија”]
[admin_level=2]
→ .country;

(
rel(area.country)[admin_level~“.*”] → .relations;
);

);

out;

http://editor.osmsrbija.iz.rs/?dataset=srbija-administrativne-granice

Mislim da se iza tog upita negde krije neki bag. Već sam nekoliko puta kliktao, a vidim da je i Branko, i svaki put iskoči neka druga administrativna jedinica drugde u belom svetu (Ukrajina, Poljska, Italija). Sad mi izbacuje Batote kod Brusa, niđe veze… :frowning:

Probaj ovako nesto:


[out:json][timeout:25];
area["name"="Србија"][admin_level=2] -> .country;
(
  rel["boundary"="administrative"][admin_level](area.country);
);
out;

Izbacio sam zagrade viska i prebacio ovaj “area.country” na kraj i dodao “boundary” i izbacio ovaj regex (ne treba, ti samo zelis postojanje taga “admin_level”). Meni sad vraca samo nase granice (+ ove sto su sporne). Ako radi - ne pitajte me zasto radi, nemam pojma:)

Sredio sam bag. Napravio sam pre neki dan kesiranje upita da rasteretim server pa sam zeznuo u imenovanju kes datoteka. Ucitavalo je u nekim situacijama pogresan kes.

Sredio sam malo i upit po ovom sto je BRanko dao. regex mi treba y aadmin level jer je to u stvari makro pa tu programski menjam vrednosti.

Kako god, i dalje vidim da u upit hvata adminstrativne granice iz okolnih drzava.

Evo naprimer, upit za sve adminstrativne podnivoe za osptinu Kanjiza daje adminstrativne granice iz Madjarske http://editor.osmsrbija.iz.rs/?dataset=srbija-administrativne-granice&admin_level=8&name=%D0%9E%D0%BF%D1%88%D1%82%D0%B8%D0%BD%D0%B0%20%D0%9A%D0%B0%D1%9A%D0%B8%D0%B6%D0%B0

Хм, нје ово само до државне границе.
Ево и за Стару Пазову приказује да њој припадају Земун и Батајница.

http://editor.osmsrbija.iz.rs/?dataset=srbija-administrativne-granice&admin_level=8&name=%D0%9E%D0%BF%D1%88%D1%82%D0%B8%D0%BD%D0%B0%20%D0%A1%D1%82%D0%B0%D1%80%D0%B0%20%D0%9F%D0%B0%D0%B7%D0%BE%D0%B2%D0%B0

Uf, nikad nisam ovo video. Jedino što mi pada na pamet je da koristiš ovde “area” pojam za koji Overpass ne garantuje da će da bude baš tačan kao relation (ovde piše “Area creation depends on some specific extraction rules, there’s no area counterpart for each and every OSM way or relation!”). Našao sam na još jedan primer - naselje “Vizić”. Kao da area koji Overpass izgeneriše zahvati još malo nešto. Deluje da ovaj lik ima sličan problem, ali nijedno rešenje odande nisam uspeo da namestim da radi:
https://stackoverflow.com/questions/46154001/overpass-turbo-relations-inside-area

Međutim, ovo ovde pitanje https://help.openstreetmap.org/questions/63677/overpass-api-fetch-country-regions-where-no-subarea-relation mi je dalo ideju, možda da koristiš spuštanje rekurzijom da izvučeš sve podrelacije, npr:


[out:json][timeout:25];
rel[name="Општина Стара Пазова"][admin_level=8][boundary=administrative]->.c;
.c >>;
(._;>;);
out;

Ne znam tačno kako ti radi onaj program, ali ovo se ne generalizuje kada tražiš sve sublevele ispod države ili okruga, čini mi se (ne možeš da kontrolišeš šta sve dobiješ, možeš i admin_level=10 da dobiješ i ko zna još kakve relacije). Možda može ovakav budž da se za bilo šta izvuče bilo šta ispod njega:


[out:json][timeout:25];
// Prvo dohvatimo sve granice u sidu
rel[name="Сремски управни округ"][admin_level=6][boundary=administrative]->.rel_okrug;
.rel_okrug >> ->.all_boundaries_in_okrug;
// Onda dohvatimo samo ono sto nas zanima (opstine u Sidu) (e, ali ovo moze da vrati i neke dodatne greskom!)
area[name="Сремски управни округ"][admin_level=6][boundary=administrative]->.okrug;
rel(area.okrug)[admin_level=8][boundary=administrative]->.samo_opstine;
// Na kraju uradimo presek ova dva
rel.samo_opstine.all_boundaries_in_okrug;
(._;>;);
out;