Cs:Import adres z RUIAN

From OpenStreetMap Wiki
Jump to navigation Jump to search

O importu

Import slouží k doplnění a zpřesnění adres v ČR.

Zdrojem dat je RÚIAN.

Diskuse o importu v konferenci české komunity talk-cz:

https://lists.openstreetmap.org/pipermail/talk-cz/2014-February/009238.html
https://lists.openstreetmap.org/pipermail/talk-cz/2014-February/009284.html
https://lists.openstreetmap.org/pipermail/talk-cz/2014-February/009399.html

Cíle

Import má následující cíle:

  • vytvořit nové adresní uzly, které zatím v OSM nejsou
  • opravit existující adresní uzly (přidat chybějící addr:place=*, ale také přidat či opravit všechny další značky addr:*=*)
  • doplnit vazbu mezi adresním uzlem a položkou v oficiální databázi adres RÚIAN, aby bylo v budoucnu možné adresy automaticky doplňovat či upravovat, přidáním značek ref:ruian:addr=* a source:addr=cuzk:ruian
  • odstranit nejasně definovanou značku is_in=*, která má težko použitelnou strukturu a je použita v rozporu s dokumentací na wiki. Navíc se zdá být neužitečnou, protože její hlavní funkcí bylo suplovat značku addr:place=*. Navíc se zdá, že 70% všech značek is_in=* na adresních uzlech ve světě je v ČR, tedy značka může jen těžko být široce používána.
  • (pravděpodobě) přidat addr:country=CZ ke všem adresám. O tomhle je vedena diskuse, protože někteří to označují za plýtvání místem v databázi, jiní tvrdí, že země do adresy přirozeně patří.

Časový rozvrh

Začátek byl plánován na únor/březen 2014. Díku nečekaně dlouhé debatě o způsobu importu byl import zahájen až v dubnu 2014. V RÚIAN jsou téměř 3 miliony adresních míst, které je třeba zpracovat. Ne všechny jsou v pořádku a nepůjdou importovat plně automaticky. Odhadem 2-5% míst bude vyžadovat pozornost člověka. Odhad času, potřebného pro import, je několik měsíců. Čas závisí na množství nedostatků v RÚIAN a aktivitě spolupracujících dobrovolníků. RÚIAN je neustále aktualizován a tak i po dokončení importu bude bot pokračovat v činnosti a aktualizovat adresy v OSM.

Průběh importu můžete sledovat zde http://ruian.poloha.net/czaddr/.

Vstupní data

Data, dodávaná ČÚZK, jsou ve formátu XML. Data jsou dostupná na RUIAN VDP. Můžete si stáhnout vzorový XML soubor Českých Budějovic. XML soubory jsou následně převedeny do PostgreSQL databáze pomocí utility ruian2pgsql.

Licence

RÚIAN je nedílnou součástí projektu základních registrů veřejné správy. Základní registry jsou v právním řádu ČR zakotveny zákonem č. 111/2009 Sb., o základních registrech, v platném znění. Poskytování údajů z RÚIAN a z ISÚI upravuje § 62 zák. 111/2009 Sb. o základních registrech v platném znění: Registr územní identifikace je veřejně přístupný způsobem umožňujícím dálkový přístup. Údaje z tohoto registru se poskytují v elektronické podobě, včetně vytěžování jeho obsahu; na nosičích dat se poskytují za úplatu, nejedná-li se o údaje pro tvorbu územně analytických podkladů. Data jsou ze zákona dostupná všem k volnému užití včetně vytěžování podle § 90 autorského zákona.

Data v OSM

Nově se přidávají pouze adresní místa jako uzly. Ale již existující adresy se upravují ve všech prvcích OSM, tedy na uzlech, cestách i relacích. Poloha již existujících prvků s adresou se nijak nemění.

Typ importu

V první fázi se jedná o naimportování všech adresních míst v ČR. Po jejím dokončení bude trvale pokračovat jejich aktualizace.

Příprava dat

Jelikož v OSM je již mnoho adresních entit (adresních bodů, cest či relací), je třeba ke každému adresnímu místu z RÚIAN (dále jen AM) nalézt stávající adresní entitu v OSM, pokud tato existuje. Nedostatky či chyby v datech jsou jak na straně OSM, tak na straně RÚIAN a proto s kvalitou dat v daném místě se mění  pravděpodobnost správného přiřazení. V RÚIAN existují duplicity - více AM na jednom místě či více AM, vzdálených od sebe jen několik centimetrů. V některých případech se jedná o prostou duplicitu, v jiných se jedná skutečně o více adresních míst, ovšem chybně či nepřesně umístěných. Často se jedná o rohové domy, které mají vchody do více ulic. Umístění AM do stávající OSM tak představuje řadu problémů, na které upozorním u popisu funkce skriptu.

Celý skript je napsán v plpgsql/postgis a reflektuje moji konfiguraci a datová obsah serveru. Používá samozřejmě schema RÚIAN (velký dík FordFrogovi za ruian2pgsql), APIDB schema a schema pro Mapnik, které využívám z důvodu předzpracovaných geometrií. APIDB pak obsahuje kompletní OSM data. Nejprve si tedy připravím zvláštní tabulku s geometriemi adresních entit z OSM (ST_Union).

První část párování spočívá ve vyhledávání případně existujících entit s  adresami v OSM k AM z RÚIAN. Ke každému AM se skript snaží nalézt takovou adresní entitu, jejíž údaje nejlépe odpovídají údajům v  RÚIAN. Protože i v OSM mohou být a jsou duplicity v adresních místech, je toto přiřazování šestiprůchodové, a to podle výše nároků na shodu mezi AM a OSM.

Adresy se vyhledávají v okolí 100m. Není výjimkou, když adresní bod v OSM je vzdálen od AM i 80m. Týká se hlavně velkých budov a areálů.

  1. Vyžaduje se shoda v čísle popisném, evidenčním i orientačním a v názvu ulice. U názvu ulice se fuzzy logikou snažím eliminovat rozdíly v psaní (Wolkerova X J. Wolkera)
  2. Jako v 1. bez ohledu na název ulice. Alespoň v jedné tabulce musí být ulice NULL
  3. Shoda v čísle popisném či v čísle evidenčním, ulice v obou tabulkách musí být NULL
  4. Jako 3. alespoň jedna ulice musí být NULL
  5. Jako 3. liší se názvy ulic, hledání v okruhu jen 8 metrů
  6. Postačí shoda jakéhokoli čísla s jakýmkoli, okruh 3 metry.
  • Postprocessing I - hledají se duplicity a podezřele blízké body. Z importu se automaticky vyhazují ta AM, která jsou v okruhu 5m obsažena vícekrát (shoda v číslech a názvech ulic)
  • Postprocessing II - k připravenému importu se vyhledávají podezřele blízké entity v OSM, které obsahují adresní tagy. Tyto entity se "dotáhnout" do výsledného XML, aby člověk mohl v editoru rozhodnout, co s tím.

postprocessingu I a postprocessingu II vznikají tabulky s podezřelými daty, které je třeba prozkoumat. Na konci se vygeneruje .osm soubor, který lze editovat editorem (JOSM). Po zkontrolování a opravě v editoru lze data nahrát na OSM server.

Zapamatuji si, která AM z RÚIAN šla v tento den do importu, aby bylo možné sledovat jejich změny v RÚIAN a zahrnout tyto změny do budoucí aktualizace.

Ukázkový soubor s výslednými OSM daty je dostupný zde [1]. Ukázkový soubor je před před nezbytnými úpravami operátorem. Upravit jej lze v příslušném editoru, například JOSM.

Redukce a zjednodušení dat

Vzhledem k tomu, že se jedná výhradně o adresy, žádné zjednodušování není plánováno. Kromě vymazávání zastaralých tagů - viz níže.

Tagování

RÚIAN se budou přidávat nové uzly či u stávajících uzlů/cest/relací nahrazovat tyto klíče (pokud jsou relevantní u daného adresního místa):

Klíč Popis Poznámka
addr:conscriptionnumber=* Číslo popisné pouze číslo
addr:provisionalnumber=* Číslo evidenční pouze číslo
addr:streetnumber=* Číslo orientační pouze číslo, nebo číslo ihned následované písmenem
addr:housenumber=* Číslo domovní Pokud je přiřazeno číslo orientační tak: číslo popisné (evidenční) / číslo orientační
Jinak pouze číslo popisné (evidenční)
Příklady: 1367, 1367/67, 2238/1a, ev.21, ev.21/1
addr:street=* Ulice Název ulice, pokud obec má pojmenované ulice, např. Stodolní
addr:place=* Vesnice nebo Část obce V RÚIAN a katastru se nazývá část obce. Je to malá vesnice, která nemá vlastní zastupitelstvo a spadá pod nadřazenou obec. Ve městech jsou to pak městské čtvrti. Např. Lhotka, Libív, Vysočany.
Používá se pouze pokud ulice nemá název.
Značka je důležitá pro vyhledávání v mapě Nominatimem, protože její existence dovolí najít očíslovaný dům v místě, kde nejsou ulice. Pokud ale existuje ulice, addr:place=* se nepoužívá a pak Nominatim ho ignoruje.
Značku nelze nahradit hranicemi zakreslenými polygony katastrálních území v OSM, protože adresy ležící v části obce nejsou určeny hranicemi, ale jen výčtem jednotlivých adres.
Pozor! Na takových místech, která mají více částí obce v jednom katastrálním území (například Horšovský Týn) byla tato značka odstraněna a vznikly tím další škody (například duplicitní dvojice adres). V takovém případě doporučujeme tuto značku co nejrychleji doimportovat.
addr:suburb=* Městská část/obvod Existuje pouze ve velkých městech, například Praha 9 nebo Plzeň 2-Slovany
Do OSM budou importovány hranice městských částí/obvodů, tedy je tuto značku zbytečné přidávat. Přidává se do adresy pouze ve výjimečných případech, když adresní místo leží mimo polygon definující odpovídající městkou část/obvod.
addr:city=* Obec Název města, městyse, vojenského újezdu nebo obce, např. Brno, Jince, Brdy, Lhota.
Značku je zbytečné přidávat, protože v OSM máme u polygonu hranic obcí (boundary=administrative+ admin_level=8). Do adresy se přidává pouze ve výjimečných případech, když adresní místo leží mimo polygon definující odpovídající obec.
addr:postcode=* Poštovní směrovací číslo PSČ ve tvaru nnnnn bez mezery
addr:country=* Země CZ
V adrese by se nemělo vyskytovat, protože máme v OSM platné hranice, tedy je jasné, ve které zemi adresa leží.
ref:ruian:addr=*
nebo starší ref:ruian=*
RUIAN kód adresního místa číselný identifikátor adresního místa (AM) dle RÚIAN. Vytváří vazbu mezi AM v OSM a v RÚIAN, takže v budoucnu bode možné automaticky upravovat adresy podle změn v RÚIAN.
Podrobnosti si můžete prohlédnout pomocí odkazu: http://vdp.cuzk.cz/vdp/ruian/adresnimista/<ref:ruian:addr>
Českou verzi této šablony můžete editovat zde, anglickou verzi pak najdete zde.

Adresní místa, která mají v pořádku adresu, nejsou importem nijak měněna, tedy nejsou ani vymazávány značky níže.

U existujících adresních míst (uzlů, cest, relací) se budou mazat tyto klíče:


Dále se budou mazat tyto značky:

Tagování sady změn

Sady změn budou na server nahrávány pod účtem CzechAddress.

Zpracování dat

Ke zpracování dat, kromě zmíněného ruian2pgsql, je použita pouze databáze PostgreSQL s extenzí PostGIS

Týmový přístup

Týmová spolupráce je důležitá - viz úvod

Postup

Výběr oblasti k importu. Může být určená obcí, výčtem obcí, okresem, ohraničujícím rámečkem, ... čímkoli, co lze specifikovat do SQL dotazu. Skript připraví data.osm a data.csv. data.osm je podkladem pro vytvoření sady změn v JOSM (editoru). data.csv je seznam potencionálně problematických míst. Soubory převezme operátor-dobrovolník, který musí problematická místa v editoru prohlédnout a případně upravit. Po úpravě data vrátí ke koordinátorovi importu, který provede upload sady změn z JOSM (editoru) na OSM server. Do lokální databáze si pak uloží seznam adresních míst z RÚIAN, které byly importovány.

Velikost sady změn by neměla přesáhnout 50 000 adresních míst.

Pro případ chybného importu jsou připraveny skripty OSMTOOLS od Frederika Ramma, které mohou vzít zpět jednotlivé části i celé sady změn.

Slučování dat

Jelikož tento projekt se zabývá pouze adresními místy, které byly dříve importovány z jiných oficiálních zdrojů, nebo vloženy uživateli podle znalostí, či katastrální mapy a informace u adresních míst nahrazuje novými informacemi z RÚIAN, což je nová, jediná, nejlepší, nejaktuálnější databáze adres vůbec, nenapadá nás, jaká data bychom mohli během tohoto importu ještě připojit.

Snad jen referenci AM na nadřazený stavební objekt SO, což by se možná mohlo hodit u párování adres k budovám. Dávám to ke zvážení (Dalibor).

Další věc, která by se mohla přidávat k adresním bodům je název pošty, pokud je jiný, než název města/vesnice. Některé vsi mají více PSČ a i různé doručovací pošty. Jen nevím, do jakého tagu by se to dávalo? Nový tag addr:post_office? Vtipně do is_in? To se sice tady addr:*=* tak trochu doporučuje, ale přesně naopak, jestli to správně chápu – do city název pošty a do is_in:city=* jméno města, takže to asi není úplně vhodné.

Update: Ze stránek pošty se dá stáhnout seznam PSČ a doručovacích pošt, takže tuto informaci si může každý najít sám a v mapě je asi zbytečná.

Zajištění kvality dat

Chyby, které najdeme při importu nebo chyby, které v ojedinělých případech sami vytvoříme, budou hlášeny na této stránce.

Vlastní chyby si odstraníme sami.

Chyby nalezené v RÚIAN nahlásíme na ČÚZK a budeme doufat, že je někdy opraví, ale vzhledem k tomu, že to většinou vyžaduje spolupráci několika státních a obecních organizací, tak nemůžeme čekat zázraky.

Jak se zúčastnit?

Chcete-li se zúčastnit importu, pak napište Petru Vejsadovi na adresu importu czechaddress<zavináč>poloha.net a specifikujte, jaká data chcete dostat. Zůstaňte radši při zemi, protože celý okres bude až moc adres a je důležité poslat výsledek zpět co nejdříve, aby v mezičase nedošlo k nějakým úpravám v OSM, což by vytvářelo konflikty, které se špatně řeší.

Rozsah dat můžete požadovat jako:

Zpět e-mailem dostanete soubor data.osm a data.csv.

Soubor data.osm si otevřete v JOSM a data.csv ve vašem oblíbeném tabulkovém procesoru.

V data.csv najdete adresy problematických adresních míst i se stručným popisem problému, který máte vyřešit. Máte-li v JOSM povoleno Vzdálené ovládání (Remote Control), pak můžete rovnou kliknout na obsažený odkaz a JOSM se vám nastaví na problematické místo.

Vaším úkolem je projít všechna problémová místa a rozhodnout, co se s nimi má stát:

  • pokud je v data.osm smažete, pak nebudou importována.
  • další možností je smazat konfliktní místo v OSM (ne v data.osm, ale v jiné vrstvě, do které si stáhnete data z OSM sami přímo).
  • ponecháte-li místo v data.osm, pak bude importováno a má se za to, že nalezený konflikt je v pořádku a odpovídá realitě.

Pozor! Datový soubor data.osm nikdy nenahrávejte zpět na OSM server!

Když projdete všechna konfliktní místa, pak soubor zkomprimujte do .zip souboru a pošlete zpět na výše uvedenou adresu.

Tam bude zaevidován do databáze jako již zkontrolovaný a importován na server OSM.

Průběh importu můžete sledovat zde http://ruian.poloha.net/czaddr/.

Děkujeme za Vaši spolupráci. :-)