RGZ otvorio registar prostornih jedinica - plan za import

Update:
Okačio sam na import mailing listu objavu da planiramo import: https://lists.openstreetmap.org/pipermail/imports/2020-January/006149.html
Pitao sam na Kosovu da popravim granicu i za Kopaonik: https://forum.openstreetmap.org/viewtopic.php?id=68476. Na Telegram grupi su mi rekli da je granica koju oni imaju stara granice sa autonomne pokrajine, a da je naš RGZ pre 4 godine “gurnuo” granicu u Kosovo i da je to bila vest na Kosovu:

Neću da diram tu granicu, neka je takva-kakva je.

Planiram da uskoro unesem sve “ref:sr:maticni_broj” tamo gde može i da unesem ručno ovo gde ne može i da popravim ime tamo gde može (tj. tamo gde Duja nije:)

Da, iskreno, nisam mnogo trošio vremena na ovo, bitno mi je bilo da izguram ove “normalnije” geometrije:) Pogledaću detaljnije kad unesem “ref:sr:maticni_broj” da li mogu da popravim proračun za area_diff.

Ne znam kako konzistentno da se “borimo” protiv ovoga. Ne bih baš sve da verujemo RGZ-u (npr. Gregeteg i Zimonic bih ostavio, možda dodao RGZ nazive u “official_name” ili “alt_name”, a ne bih dodavao ni “(Niš)” na Palilulu u Nišu ili na druga takva mesta, pošto su ionako to dodali samo da bi ime bilo jedinstveno). Sa druge strane, ja bih da ta zapuštena sela unesemo, jer ne verujem da možemo da obilazimo celu Srbiju i da mi odlučujemo da li je nešto napušteno ili ne. Šta misliš?

Hvala što si javio, pogledaću sad kad budem unosio “ref:sr:maticni_broj”, ko zna kakve sve bugove imam:)

Први тест (полу)аутоматског кориговања граница по РГЗ подацима је успешно изведен https://www.openstreetmap.org/changeset/79841564#map=15/44.9426/19.8971 .

Рекао бих да је овај начин употребљив у великом обухвату, али да је сада потребно да се реше још пар ситних детаља.

U međuvremenu sam prošao gotovo sve one koji su imali -1 pa ispopravljao. Bilo je tu svega, razlikovala su se imena naselja i relacija, ili su se oba razlikovala od RGZ, jedno selo je nedostajalo… ako ništa drugo, sad imamo čistiju situaciju. Nisam prolazio kroz ona koja imaju zagradu u imenu jer znamo ta nisu dobro uparena. Verovatno sam još pokoje propustio, ili postoji još poneki bag u algoritmu.

Neka od imena sam sredio, i iskoristio old_name ili alt_name da upišem alternativna (uvek napravim celu četvorku, dakle old_name, old_name:sr, old_name:sr-Latn i old_name:en). Nema puno takvih slučajeva, ali ih nisam zapisao. :smiley: Da se izvući programski.

Slažem se da unesemo i ta napuštena, ova Obornjača je ionako bila zaselak pa joj je atar samo obuhvatao granice sela, ne i okolne njive.

Nego, pade mi još na pamet: zna li neko kako da nađemo granične linije koje su deljene sa nekim drugim objektom, kao što je potok ili put, da ne napravimo karambol?

U idealnom svetu administrativne granice bi bile lejer za sebe, i na OSM wiki je preporučeno da se boundary tagovi ne stavljaju na fizičke objekte, osim u izuzetnim slučajevima. Koliko sam ja prošao u ovoj poslednjoj turi, to je kod nas i ispoštovano: našao sam samo jedan deljeni way, a u Vojvodini sam ih ja unosio pa sam siguran da ih nema.

Dakle, trebao bi nam jedan upit za sve boundary=administrative koje na sebi imaju još neki tag pride (mislim da je dovoljno tražiti waterway i highway?)

Edit: napravih ga sam, nije bilo teško, a nije ni strašno.
http://overpass-turbo.eu/s/PX2
24 way-a ukupno, verovatno (ne)delo istog čoveka :wink:

Такав је и план да се уради - додаће се нове тачке које ће дефинисати границе.

Mislim da su ti “ispali” node-ovi od prethodnog way-a. Vidim ih iz iD editora kada otvorim tu lokaciju. Treba ih pobrisati u istom changeset-u. Ako to ne uradimo, ostavljaćemo smeće za sobom.

Da li ima neko uputstvo kako si ovo izveo, bolje bi bilo da svi vidimo kako tačno ovo radiš, što da više očiju vidi, što da potencijalno pomognemo, što da ostane za sledeći put kada RGZ da novi dataset. I ako koristiš https://gitlab.com/stalker314314/prostorne-jedinice-import/blob/master/preklapanja.py, čisto da znaš da ovo neće rešiti boundaryje koji nisu deljeni između dva naselja, ali to verovatno znaš. Ja ću probati u februaru da se igram, da od .osm fajla (što je XML) uradim conflate-ovanje, ali za to mi naravno treba unet “ref:sr:maticni_broj” (i regeneracija .osm-a da to sadrži) pa mi je fokus na tome.

Nije samo way-ovi, može da bude i node-ova sa nekim značenjem zakačenim za boundary way, treba i na to paziti. U svakom slučaju, to treba razdvojiti, što kaže mpele. Ja sam za to da ceo proces promene puteva ništa ne radi čovek i da uradimo skriptom, pošto će automatizacija pomoći i kada RGZ ponovo okači nov update, ali ako hoćete pešaka, ko sam ja da branim:)

Počistio sam sve, tj. razdvojio sve administrativne granice od puteva, potoka i pruga iz gornjeg upita. Da li ima tu još nekih gluposti, tipa da dele granice sa kakvim landuse=, stvarno ne znam.

Ja neću pešaka, već sam jednom ubeleo dok sam ih unosio prvi put… ali sam se uvežbao. :stuck_out_tongue: Jbg, nije mi radila kristalna kugla da će se importovati za manje od godinu dana.

Као што сам више пута до сада помињао то је остављено за други корак. Провера да ли та тачка припада још нечему је превише “скупа”, а све те тачке које не припадају ниједном путу или релацији и немају додатне тагове се могу врло лако и ефикасно обрисати накнадно.

Иначе, овај тест је требао да покаже техничку могућност замене тачака, као и коректност промене пројекција.

Урадио сам commit тренутног стања. Скрипта није готова, али снаћићеш се већ https://gitlab.com/mpele/prostorne-jedinice-import/commit/dd38808b1bb48937821c59dab0e7cd7a72359316 . Улаз је излаз из претходне скрипте.

Једино што нисам сигуран како је најбоље извести је да крај/почетак једног сегмента буде почетак/крај другог сегмента границе. Како елегантно одредити да ли већ постоји тачка са истим координатама? Да ли и то накнадно сређивати са већ постојећим алатима за верификацију (нпр. ЈОСМ)?

Ubacio sam “ref:sr:maticni_broj” za sva naselja gde se poklapalo ime i imali su više od 75% zajedničke teritorije. Ovo je kod.

Ostalo je još 91 naselje u OSM-u koje nema “ref:sr:maticni_broj” i još 99 naselja iz RGZ-a koje nisu iskorišćena u ovom postupku. Sad ide pipavi i pešački deo - nije bitno potrefiti geometriju, ali treba dodati ispravan “ref:sr:maticni_broj”. Ja ću da krenem da radim ovo polako. Ako neko želi da mi se pridruži, evo upit da vidite šta još fali, a ja krećem odozdo, tako da ko hoće, nek krene sa severa, pa se nađemo u Šumadiji:) Možete i na PM da me cimnete, ako želite da pomognete, ali niste sigurni kako.

[out:xml];
area["name"="Србија"]["admin_level"=2]->.a;
relation(area.a)["admin_level"=9][!"ref:sr:maticni_broj"];
(._;>;);
out;

Gde da nađem tabelu s matičnim brojevima? Verujem da je navedeno negde gore ali sam propustio.

Imaš na https://opendata.geosrbija.rs/ (ako se registruješ), a okačio sam i ja na https://kokanovic.org/opendata-rgz.7z. Trebaju ti naselja.csv. Druga kolona su matični brojevi. Ja za sad što nalazim, to su na tri mesta bili premale površine da bi ih skripta unela (ali dobra su naselja bila inače) i onda još 3 naselja koja su bila pridružena pogrešnim opštinama (pa ih zato skripta nije našla). Primeri takvi i kako sam ih premestio (bez JOSM-a ovde ništa!):
https://www.openstreetmap.org/changeset/79940649
https://www.openstreetmap.org/changeset/79940160
https://www.openstreetmap.org/changeset/79939812

Samo dodaj “RGZ_Import” za source kada commit-uješ changeset.

Sredio sam jedno pola. U amanet ti ostavljam niške i beogradske gradske opštine, pojma nemam šta bih s njima. :confused: U suštini, administracija je tu na silu pocepala gradove na naselja, iako je sve to prirodno jedno naselje.

Lepo si ti ovo pokidao. Cepam ja ostatak, ne znam ni ja sta da radimo sa gradovima…

Što se tiče gradova (Beograda i Niša pre svega), imam sledeći predlog:

  • Uneti i granice gradskih “naselja” kao admin_level=9, ali im ne stavljati admin_centre. (Napominjem da ovo nije isto što i gradske opštine, jer se jedna opština tipično sastoji od “gradskog naselja” i nekoliko susednih sela.) Time ostajemo 1:1 sa RGZ podacima. U Nišu je neko uneo dve relacije unutar opštine Palilula (Bubanj i Ćele kula) koje, rekao bih, nisu nikako zvanične pa ih treba pretvoriti u nešto drugo.

  • Spoljne granice ovakvih naselja povezati u jedan multipoligon tipa place=city koji će predstavljati samo gradsko naselje. Neko je to već uneo za Beograd ali šusterski, jer je napravio isto što i Beogradski okrug, uz napomenu “not to disturb with Belgrade District!” pa su mu se u “gradu” između ostalog našli i kopovi Kolubare i kosmajske šume.

Ćutanje je znak odobravanja… https://www.openstreetmap.org/relation/2728438

Beograđani, slažete li se da je ovo “gradsko jezgro” Beograda? Mislim da je to ono što je uneto u popisne knjige da se računa kao “”. Nisam jedino 100% siguran da li se Kaluđerica računa u Beograd, za ostale uglavnom jesam.

Kao Beograđanin se osećam prozvan, ali nemam neko jako mišljenje. Deluje OK, šta znam:)

Evo novosti što se tiče RPJ-a - možemo da se pohvalimo da imamo sva naselja kao na RPJ-u i da sva naselja imaju ref:sr:maticni_broj! Ali geometrije nisu još tačne.

Popravio sam malo skriptu da radi sa eksklavama i uradio deljenje sa brojem tačaka (što je bio bug kod računice srednje udaljenosti, druga metoda koju je predložio mpele). Nova verzija gde su sad sva naselja nađena sa novim rezultatima je ovde: http://kokanovic.org/osm/rpj-analysis-v2.csv. Trenutno nam je preciznost na 96.5% (average) i 98.03% (median).

Ono što je sad ostalo (po meni):

  • Popraviti granicu sa Kosovom (već sam u diskusiji sa njima, našli smo par mesta gde se stvari ne podudaraju, to neću da diram, ali peglam to ovih dana)
  • Pitati za granice sa drugim zemljama, da vidimo da li to možemo da popravljamo, ako imaju neke otvorene podatke. Dobrovoljci za države?
  • Automatizovano ili poluautomatizovano popraviti sve granice, treba napisati skriptu, ima mpele jedno rešenje, a probaću i ja nešto, videćemo
  • Istu skriptu koju imamo za naselja, sada nam treba sve isto i za opštine, gradove i okruge. Slično kao i ovo - da pronađe sve, da izračuna neslaganje i jednokratna skripta da unese ref:sr:maticni_broj. Da li ima dobrovoljaca, može da se proširi i postojeća skripta da radi sve, a može i nova?
  • Uneti subarea za okruge, gradove i opštine (ka level-u ispod)

Evo malo svežih vesti od mene.

  1. Napravio sam program koji treba da radi conflate, tj. da pomera puteve tako da izjednači geometrije između RPJ i OSM. Sav kod je na Gitlabu i pre nego što bilo šta uradi te lepo pita i prikaže grafički kako se putevi iz RPJ-a i OSM-a razlikuju. Radi i u režimu davanja izveštaja, treba mu oko 4 dana da izbaci rezultate. Rezultate možete da vidite na ovoj finoj strani od 4MB. Išao sam na to da analiziram svaki put iz RPJ-a zasebno (put može da ima granicu sa dva naselja ili samo sa jednim), da probam da ga nađem u OSM-u i da vidim da li može da se pomeri i zašto ne može. Kao što se vidi, 61% ćemo moći da automatizujemo, ali i dalje ima ovih 7000 koji se ne daju. Zapravo, ni tih 7000 me ne plaše, za sve mislim da može da se dosta automatizuje osim za ove 4000 greške pod imenom “ERROR_WAY_NOT_FOUND” i “ERROR_END_POINTS_FAR_APART”. U tim slučajevima - put između dva naselja ne postoji i to uglavnom zato što ima “gap” između ta dva naselja. To mora ručno da se postavi (ne mora precizno) da bi ga skripta našla. Sve ostale greške ili mogu da popravim, ili ne mogu nikako da se poprave ili ih ima mizerno malo da mogu ručno da se isprave (pitajte me ako vas neki tip grešaka baš mnogo interesuje šta je, mada ima u legendi kratko objašnjenje). Pitanje za sve je - da li ima dobrovoljaca da pomažu sa dodavanjem ovih puteva i kako ih najefikasnije dodavati, imate li ideja?

  2. Odradio sam i skriptu za opštine. CSV sa analizom možete preuzeti ovde. Kao i kod naselja, jako smo dobri, skoro savršeni. Ono što je skripta otkrila je gomila gradova (od Subotice do Užica) gde RPJ ima po jedan red i u gradovima i u opštinama za ta mesta. Šta mislite šta ovde da radimo - da imam jedan relation i za admin_level 8 i još jedan za admin_level 7 ili da uzmemo samo za manji? Ne pričamo o Beogradu koji za jedan grad ima više opština (kao i Požarevac koji ima 2 opštine - Kostolac i Požarevac), već baš za mesta koje imaju jedan unos za grad i jedan za opštinu (sa istim imenom). Da li držati sve u OSM ili prekočiti opštinu? Takođe samo popravio i kolonu “points_diff”, sad daje vrednost u metrima (koliko je u proseku svaka tačka iz RPJ poligona udaljena od OSM poligona).

  3. Pitao sam komšije iz Hrvatske i nemaju open dataset za granice, tako da tu nećemo ništa dirati. Nastavljam da pitam i za ostale (ako neko želi da pita neke određene komšije - slobodno, mene to ionako smara, radije bih popravljao ove puteve:)

Sledeće šta mi je u planu:

  • Srediti granicu sa Kosovom (sad kad sam završio skriptu, biće više vremena)
  • Pitati preostale komšije za granice
  • Uneti ref:sr:maticni_broj za opštine (pošto se dogovorimo šta je opština, a šta je grad:)
  • Kad unesemo ref:sr:maticni_broj, mogu da unesem onda i subarea
  • Peglati ovih 11.000 puteva koji se zapravo daju pomeriti, dok neko ne smisli neko rešenje za ovih 4000 grešaka

Поред свих ових провера које се раде, мислим да није непотребно тражити од корисника ручну потврду визуелног да је све у реду. У најгорем случају и ако није, исправиће се у следећој итерацији.

Оно што бих ја предложио је да се аутоматски ураде измене које је могуће безбедно урадити, а да се генерише и неки вид фајла који је могуће учитати у QGIS/JOSM ради лакше визуелне анализе. Овај преглед би требало да садржи само податке тамо где постоји разлика.

Ја бих задржао оба. Једино тако би цела површина Србије била комлетна уколико неко извлачи податке за неки административни ниво.

Бранко, да ли си сигуран да су овде јединице метри? Превише су мале вредности па ми је неочекивано. Морам само да те замолим да смањиш прецизност ове вредности - све ипод треће децимале (или ти милиметра) је апсурдно. Знам да се и РЗГ фрља са овиме и то ми баш смета :frowning:

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?