Hungary/Szerszámzat

From OpenStreetMap Wiki
Jump to navigation Jump to search

Bevezetés

Ennek az oldalnak a célja összefogni az OpenStreetMap hozzájáruláshoz és karbantartáshoz hasznos automatizmusokat.

Eszközök

Utcanév teljesség

POI matcher

OSM GIMMISN

Egy weboldal amin keresztül bárki fókuszálhatja szerkesztés tevékenységet hiányzó házszámok vagy utcák irányába nem terjeszthető referenciák alapján.

OSM GIMMISN reference

Kézi parszerek

Parszerek

Eldobható kézi parszerek, segéd scriptek:

Magas szintű nyelvtanokból generált parszerek:

Komponensek

  • [_] Nyers címszöveg alapú javítás alkalmazó: ez nem nagy kaland, `s/xy/zzy`, bár skálázhatóság szempontjából lehet, hogy érdemes egy scope oszlopot is felvinni amivel opcionálisan import forrásra szűrhető.
  • [x] Egy parszer ami parszolja a string címeket és kulcs-érték párokat ad vissza (hívhatjuk ezt soronként JSON-nak) - a nyelvtan bizonyos rögzített tokeneket már eleve normalizálva parszol fel (mint a level=fszt. => level=Ground, vagy type=t. => type=tér)
  • [_] Programozott mező normalizálók (akár egyazon programban): emelet és épület nagybetűs római számmá átalakító, alátörés kisbetű, lépcsőház nagybetű, helyrajzi szám komponensek nagybetűk, város nagy kezdőbetű.
  • [_] Szótár-helyettesítés alapú utcanév nagybetűsség normalizáló, akár elírás kereső/javító
  • [_] Kulcsokra szűrhető regexp (vagy sima search) alapú szöveges patch tábla alkalmazó: itt már lehetőség van, hogy csak egyes mezőkben javítson (pl. csak utcanév) és csak bizonyos egyéb címkék megléte esetén (pl. City=Gárdony) - ennek a szintaxisát még ki kell találni (CEF?)
  • [_] Egy tool ami alapigazságot táblát állít össze már ellenőrzött és jóváhagyott OSM extraktumból és saját kézi táblákból
  • [_] Egy manuális tool ami elemez minden adatforrást és meglévő adatot, és jelzi a többértelműségeket (út/utca)
  • [_] Egy tool ami alkalmazza a kulcs-érték köztes formára az alapigazság alapú helyettesítést (Xy út -> Xy utca)
  • [x] Egy progi ami a kulcs-értékekből string címeket állít elő kanonikus formában.

Ismert hibák

  • Tegyük fel, hogy létezik egy településen egyszerre ugyanarra a vezetéknévre keresztnév és tanya is, például: Debrecen Balogh tanya, Balogh Tamás utca. Tegyük fel, hogy a címből lehagyják a közterületi típust és rövidítik a keresztnevet vagy tanyát és csupa nagybetűs az egész (vagy felcserélték a kis-nagybetűket). Ekkor a `DEBRECEN, BALOGH T. 1` nem megkülönböztető. Egy olyan településen viszont ahol csak az egyik van a kettő közül, feloldható, de ezt egy külön rétegben kell megtenni.
  • A Nominatim a Mo 1 Rana keresésre megtalálja a Mo i Rana települést is mivel átváltja a név közepén az arab számot rómaira. Javaslom, hogy egyelőre ne kezeljük az utcanevekben szereplő arab/római/betűvel kiírt variánsokat automatizálva. Egy későbbi fejlesztéssel nem lehetetlen ezt is támogatni egy bizonyos mértékig ("kiejtés szerinti egyezés").

Utcanév normalizáláshoz szavak

Előtag:

  • gróf
  • dr.
  • ifj.
  • id.
  • özvegy?

Végződés:

  • (helyesírás szerint - a táblán lehet, hogy más van)
  • 'alsó','felső','középső','belső','külső','széle','mente', 'vezető','úti','utcai','téri','parti','menti','völgyi','hegyi','réti','aknai','terv',
  • 'király','királyné','királynő','vezér','pap','esperes','bíró','apó','fejedelem','cár','pápa','királyfi','ispán','baba','bég','bán','herceg',
  • 'apát','bíboros','püspök','érsek','nádor','hercegprímás','ezredes','tábornok','házaspár','basa','takács','ács','altábornagy','kapitány','doktor','rektor','professzor', 'vezérezredes',
  • 'vértanú','vértanúk','cigány','apostol','tudósok','jakobinusok','nővér','testvérek','deák','nagyfejedelem','barát','vitéz','vitézek','huszár','honvéd','hősök','ifjúság',
  • 'madár', 'banka', 'gém', 'gerle', 'poszáta', 'réce', 'szalonka',
  • 'bikavér', 'fűszeres', 'kincse'

Utcanév normalizálás

  • Képezzünk kisbetűs köznévszótárat a FreeDictből úgy, hogy kivonjuk kisbetűsítve a FreeDict tulajdonneveket
  • Név eleje: amíg az első kisbetűs előtagok között van a szó: kisbetűs a szó és menjünk a következő szóra és ismételjük
  • A következő szó mindig nagybetű (számmal kezdődőt is annak vesszük)
  • Utána szavanként: Ha a köznevek szótárában van, akkor kisbetű, különben nagybetű

OSM RSS Juggler

Emészthetőbb formában összegzi néhány OSM-specifikus RSS csatorna tartalmát. Óránként fut, és ide tölti fel az átalakított RSS-eket, amit az OSM-hu mindeközben szobában az RSS bot figyel:

Forrás:

Tervek

A cím javítási folyamat:

  1. preprocesszor: 9999 2483 2483 GárdnyBalatoni utca 2 V2 üzlet -> 2483 Gárdony, Balatoni utca 2 V2 üzlet
  2. szeparáló: 2483 Gárdony, Balatoni utca 2 -> 2483|Gárdony|Balatoni utca|2|V2 üzlet
  3. referencia előállító (osm + alapigazságok)
  4. cím javító: 2483|Gárdony|Balatoni út|2|V2 üzlet

Kifejtve:

Preprocessor

Ami a durva hibáktól megtisztítja a címet, vagy eldobja

  • javítandó: 9999 2483 2483 GárdnyBalatoni út 2 -> 2483 Gárdony, Balatoni út 2
  • itt akkor 99% program szinten gondolkozunk, hogy db jog miatt
  • patch táblában esetleg a string rész összevonásokat/szétválasztásokat lehet megcsinálni
  • GárdnyBalatoni -> Gárdony, Balatoni

eldobandó:

  • 9999
  • mozgóbolt
  • Magyarország teljes területe
  • 1011 Budapest Belterület
  • csomagküldő
  • www.theabags.com

az eldobandó listát egy részét érdemes lenne leválasztani egy fájlba, ekkor nem kell a programba nyúlni minden bővítéshez a lista előnye, hogy a meglévő halmazomat be tudjuk emelni, majd a leprogramozott részket kiszedni belőle

Szeparáló

  • Ezt kamitól át tudjuk venni első körben
  • postal, city, street, number, hrsz, egyéb szemét
  • amit nem tudunk bontani, azt az 1-es lépésben kell javítani, hogy megegye a szeparáló,
  • így sokkal könnyebb minta szeparálót túlbonyolítani, de így is kezelni kell
  • közterület jelleg és házszám nélküli dolgokat: Május 1. 22.
  • házszám, leválasztásnál figyelni: 7-es főút x. km, Fő út 2. pavilon, Budafoki út fsz. 5.,
  • helyrajzi számokat le kell választani: Budaörsi út 1092/6, Diák utca 20. 2956/3 hrsz, Diák utca (2956/3 hrsz) 20.
  • a dupla címeket: Karinthy Frigyes út Egry József utca sarok 1. számú pavilon

Referencia előállítás

  • a) osm-ból, overpass pl. a hibákat (duplikáció, elírások) majd osm-ben kezeljük előtte,
  • b) kiegészítés osm-ben nem szereplő, de valósnak tűnő utcákkal "alapigazságokkal"

Javító

(javító fázisra csak azok címek mennek, amik nem felelnek meg a referenciának)

  • a) (ha a forrás településszintű) ahol irsz. tartományon kívüli -> listára tevés, majd preprocessorba építés vagy eldobás, goto 1
  • b) hibás cityk listára tevése, javítása: én patch táblába tenném az elírások javítását,
  • már csak azért is mert ezt tudom adni és akkor megspóroljuk a dupla munkát
  • c) utcák javítása, ami nem felel meg a referenciának, azon:
  • c1) a referenciából adott irsz-re runtime generált halmazzal egységesítjük

(ennek megvan az előnye, hogy nem fog félremenni szemben az elírások hasonlósággal való javításával)

  • Ady E. -> Ady Endre
  • Ady E -> Ady Endre
  • Ady -> Ady Endre
  • Ady Endre út -> Ady Endre utca

c2) a fenmaradóra egyéb algoritmikus javítások:

  • u. > utca stb.
  • tbd

c3) a fenmaradóra patch táblával (ezek nagy részét tudom generálni a meglévő szótárakból)

  • általános patch tábla: Mórczzs -> Móricz Zsigmond
  • irsz-település szintű patch tábla a többi esetre: Gárdony Balassa Bálint > Balassi Bálint, Szabdság > Szabadság