Ahoj,
tak jsem se rozhodl přímo upravit plugin Czech Republic Address System na
webu JOSM o další kontroly:
- Dal jsem jazyk výstupů do češtiny nebo slovenštiny, nepočítám s tím, že by
se o kontrolu našeho unikátu starali cizinci, a pokud ano, tak buďto nebude
většina z přespolních mapperů ten unikát chápat, nebo jich bude malé
množství
- V Česku máme v RÚIAN datech používána pouze malá písmena, nehledě na
fyzické provedení velkých písmen za číslem orientačním jsem to omezil na
malá písmena za orientačními čísly
- Dle Zákona o obcích v ČR máme rozmezí čísel popisných a evidenčních 1-
9999, u čísel orientačních je po spuštění RÚIANu omezeno na 1-999
- Nepočítám již, jak už jednou o tom Dodko napsal, že už to slovenský
registr již nadále nepodporuje, s adresami na Slovensku s názvem ulice bez
orientačního čísla, tak jsem na ni přidal kontrolu
- Fixnul jsem kontrolu na chybějící číslo popisné a rozdělil to na chybějící
č.p. a číslo evidenční
- Přidal jsem veškeré možné překlepy, co mě napadly
Pokud byste k tomu měli nějaké připomínky nebo tam nefungovala Husova
nabodeníčka, tak mi dejte vědět.
--
Aleš
meta
{
title: "Czech Republic Address System";
version: "3.01_2025-08-03";
description: "Rules implementing checks for address tags specified by Czech
Republic Address System. Only used in CZ and SK. Messages are in Czech or
Slovak due to better understanding for local mappers.";
author: "Jose Riha, Ales AF HAF";
icon: "Flag_of_the_Czech_Republic.svg";
link: "https://josm.openstreetmap.de/wiki/Rules/CzechRepublicAddressSystem";
min-josm-version: "11424"; /* due to territory selectors */
}
/* implementation of Czech Republic Address System for JOSM validator as per
https://wiki.openstreetmap.org/wiki/Cs:WikiProject_Czech_Republic/Address_system
Only makes sense to edits within borders of Czech and Slovak republic.
Not all but majority of cases should be covered by this.
Sada pravidiel pre JOSM validátor implementujúci kontrolu tagov zadávaných
podľa unikátneho systému ÄÃslovania budov pre Äeskú a Slovenskú
republiku
(https://wiki.openstreetmap.org/wiki/Cs:WikiProject_Czech_Republic/Address_system).
Pozn.
- ÄÃsla evidenÄnà se pÅidelujà jen budovám na územà ÄR
- orientaÄné ÄÃsla na Slovensku obsahujúce pÃsmeno sa pÃÅ¡u veľkým
pÃsmenom, napr. 12A, 3B, 8C; v Äesku se orientaÄnà ÄÃsla obsahujÃcÃ
pÃsmeno pÚà malým pÃsmenem, napÅÃklad 12a, 3b, 8c
- limit ÄÃsla popisného v ÄR a ÄÃsla evidenÄnÃho je 9999, u ÄÃsla
orientaÄnÃho je limit 999
please send fixes and suggestions to: jose1711 gmail com, f.ales1 seznam cz
*/
/* streetnumber syntax check
ÄÃslo orientaÄnà musà vyhovovat reg. výrazu popsanému na wiki:
https://wiki.openstreetmap.org/wiki/Cs:WikiProject_Czech_Republic/Address_system
*/
*[addr:streetnumber][addr:streetnumber !~
/^[1-9][0-9]{0,2}*[a-z]{0,1}$/][inside("CZ")]{
throwError: tr("Nebyl rozpoznán formát ÄÃsla orientaÄnÃho â oÄekává
se ÄÃslo menšà než 999 s volitelným jednÃm malým pÃsmenem bez
diakritiky");
}
/* streetnumber syntax check
orientaÄné ÄÃslo musà vyhovovaÅ¥ reg. výrazu popÃsanému na wiki:
https://wiki.openstreetmap.org/wiki/Cs:WikiProject_Czech_Republic/Address_system
*/
*[addr:streetnumber][addr:streetnumber !~
/^[1-9]+[0-9]*[A-Z]{0,1}$/][inside("SK")]{
throwError: tr("Nebol rozpoznaný formát orientaÄného ÄÃsla â oÄekáva
sa ÄÃslo nasledované voliteľným jedným veľkým pÃsmenom bez
diakritiky");
}
/* conscriptionnumber syntax check
súpisné ÄÃslo musà vyhovovaÅ¥ reg. výrazu popÃsanému na wiki:
https://wiki.openstreetmap.org/wiki/Cs:WikiProject_Czech_Republic/Address_system
*/
*[addr:conscriptionnumber][addr:conscriptionnumber !~
/^[1-9]+[0-9]*$/][inside("CZ,SK")]{
throwError: tr("Formát {0} nebyl rozpoznán â oÄekává se pÅirozené
ÄÃslo", "{0.key}");
}
/* conscriptionnumber syntax check
ÄÃslo popisné musà vyhovovat reg. výrazu popsanému na wiki:
https://wiki.openstreetmap.org/wiki/Cs:WikiProject_Czech_Republic/Address_system
*/
*[addr:conscriptionnumber][addr:conscriptionnumber =~
/^[0-9]{5}$/][inside("CZ")]{
throwError: tr("ÄÃslo popisné je pÅÃliÅ¡ vysoké â oÄekává se ÄÃslo
nižšà než 9999");
}
/* provisionalnumber syntax check
ÄÃslo evidenÄnà musà vyhovovat reg. výrazu popsanému na wiki:
https://wiki.openstreetmap.org/wiki/Cs:WikiProject_Czech_Republic/Address_system
*/
*[addr:provisionalnumber][addr:provisionalnumber !~
/^[1-9]+[0-9]*$/][inside("CZ")]{
throwError: tr("Formát {0} nebyl rozpoznán â oÄekává se pÅirozené
ÄÃslo nižšà než 9999", "{0.key}");
}
/* each address should have at least addr:street or addr:place
každá adresa by mala obsahovaÅ¥ buÄ addr:street alebo addr:place, prÃpadne
oboje
*/
*[any(tag("addr:streetnumber"),tag("addr:conscriptionnumber"),tag("addr:provisionalnumber"),tag("addr:housenumber"))][!addr:street][!addr:place][inside("CZ,SK")]
{
throwWarning: tr("Každá adresa by mÄla mÃt alespoÅ znaÄku addr:street
nebo addr:place");
}
/* conscriptionnumber and provisionalnumber are mutualy exclusive
žádný dům by nemÄl mÃt ÄÃslo popisné a evidenÄnà souÄasnÄ
*/
*[addr:conscriptionnumber][addr:provisionalnumber][inside("CZ")]{
throwError: tr("MÄlo by existovat buÄ addr:conscriptionnumber nebo
addr:provisionalnumber, nikoli obojà souÄasnÄ");
}
/* check for missing street in presence of streetnumber tag
orientaÄné ÄÃslo by malo byÅ¥ použité spolu s názvom ulice
*/
*[addr:streetnumber][!addr:street][inside("CZ,SK")]{
throwWarning: tr("ÄÃslo orientaÄnà bez ulice");
}
/* check for missing streetnumber in presence of street tag
každá adresa s názvom ulice by mala obsahovaÅ¥ aj orientaÄné ÄÃslo
*/
*[!addr:streetnumber][addr:street][inside("SK")]{
throwWarning: tr("Ulica bez orientaÄného ÄÃsla");
}
/* if both streetnumber and conscriptionnumber are present then housenumber
should be formatted as conscriptionnumber/streetnumber
v prÃpade použitia súpisného aj orientaÄného ÄÃsla by hodnota
housenumber mala obsahovaÅ¥ kombináciu oboch vo forme súpisné/orientaÄné
ÄÃslo
*/
*[addr:housenumber][addr:streetnumber][addr:conscriptionnumber][not(tag("addr:housenumber")
=
concat(tag("addr:conscriptionnumber"),"/",tag("addr:streetnumber")))][inside("CZ,SK")]{
throwWarning: tr("Addr:housenumber v neoÄakávanom formáte (oÄakávané:
conscriptionnumber/streetnumber)");
fixAdd:
concat("addr:housenumber=",tag("addr:conscriptionnumber"),"/",tag("addr:streetnumber"));
}
/* if both streetnumber and provisionalnumber are present then housenumber
should be formatted as "ev."+provisionalnumber/streetnumber
v pÅÃpadÄ použità ÄÃsla evidenÄnÃho i orientaÄnÃho by hodnota
housenumber mÄla obsahovat kombinaci obou ve formÄ
ev.evidenÄnÃ/orientaÄnà ÄÃslo
*/
*[addr:housenumber][addr:streetnumber][addr:provisionalnumber][not(tag("addr:housenumber")
=
concat("ev.",tag("addr:provisionalnumber"),"/",tag("addr:streetnumber")))][inside("CZ")]{
throwWarning: tr("Addr:housenumber v neoÄekávaném formátÄ (oÄekáváno:
ev.+provisional/streetnumber)");
fixAdd:
concat("addr:housenumber=ev.",tag("addr:provisionalnumber"),"/",tag("addr:streetnumber"));
}
/* if both streetnumber and conscriptionnumber are present then housenumber
should be formatted as conscriptionnumber/streetnumber
v prÃpade použitia súpisného aj orientaÄného ÄÃsla by hodnota
housenumber mala obsahovaÅ¥ kombináciu oboch vo forme súpisné/orientaÄné
ÄÃslo
*/
*[!addr:housenumber][addr:streetnumber][addr:conscriptionnumber][inside("CZ,SK")]{
throwWarning: tr("Addr:housenumber chybà - oÄekáváno:
conscriptionnumber/streetnumber");
fixAdd:
concat("addr:housenumber=",tag("addr:conscriptionnumber"),"/",tag("addr:streetnumber"));
}
/* if both streetnumber and provisionalnumber are present then housenumber
should be formatted as "ev."+provisionalnumber/streetnumber
v pÅÃpadÄ použità ÄÃsla evidenÄnÃho i orientaÄnÃho by hodnota
housenumber mÄla obsahovat kombinaci obou ve formÄ
ev.evidenÄnÃ/orientaÄnà cislo
*/
*[!addr:housenumber][addr:streetnumber][addr:provisionalnumber][inside("CZ")]{
throwWarning: tr("Addr:housenumber chybà - oÄekáváno:
ev.+provisionalnumber/streetnumber");
fixAdd:
concat("addr:housenumber=ev.",tag("addr:provisionalnumber"),"/",tag("addr:streetnumber"));
}
/* if only conscriptionnumber is present then housenumber should contain its
value
pre dom, ktorý je identifikovaný len súpisným ÄÃslom, by sa toto ÄÃslo
malo objaviť aj v housenumber
*/
*[addr:housenumber][!addr:streetnumber][addr:conscriptionnumber][not(tag("addr:housenumber")
= tag("addr:conscriptionnumber"))][inside("CZ,SK")]{
throwWarning: tr("{0} by mÄl obsahovat addr:conscriptionnumber","{0.key}");
fixAdd: concat("addr:housenumber=",tag("addr:conscriptionnumber"));
}
/* if only provisionalnumber is present then housenumber should contain its
value
pro dům, který je identifikovaný pouze ÄÃslem evidenÄnÃm, by se toto
ÄÃslo mÄlo objevit i v housenumber
*/
*[addr:housenumber][!addr:streetnumber][addr:provisionalnumber][not(tag("addr:housenumber")
= concat("ev.",tag("addr:provisionalnumber")))][inside("CZ")]{
throwWarning: tr("{0} by mÄl obsahovat ev. +
addr:provisionalnumber","{0.key}");
fixAdd: concat("addr:housenumber=ev.",tag("addr:provisionalnumber"));
}
/* if housenumber is not empty we want to have conscriptionnumber and
streetnumber populated as well
ak ÄÃslo domu nie je prázdne, chceme, aby bolo vyplnené aj súpisné a
orientaÄné ÄÃslo
*/
*[addr:housenumber][!addr:streetnumber][!addr:conscriptionnumber][addr:housenumber
=~ /\/[1-9]+/][inside("CZ,SK")] {
throwWarning: tr("Addr:streetnumber a addr:conscriptionnumber chýbajú");
fixAdd:
concat("addr:conscriptionnumber=",get(split("/",tag("addr:housenumber")),0));
fixAdd: concat("addr:streetnumber=",get(split("/",tag("addr:housenumber")),1));
}
/* both housenumber and streetnumber is populated but conscriptionnumber is
missing
housenumber i ÄÃslo orientaÄnà obsahujà hodnotu, ale ÄÃslo popisné je
prázdné
*/
*[addr:streetnumber][!addr:conscriptionnumber][addr:housenumber =~
/^[1-9]+\/[0-9]+[A-Za-z]?$/][inside("CZ,SK")] {
throwWarning: tr("Addr:conscriptionnumber chýba");
fixAdd:
concat("addr:conscriptionnumber=",get(split("/",tag("addr:housenumber")),0));
}
/* both housenumber and streetnumber is populated but provisionalnumber is
missing
housenumber i ÄÃslo orientaÄnà obsahujà hodnotu, ale ÄÃslo evidenÄnÃ
je prázdné
*/
*[addr:streetnumber][!addr:provisionalnumber][addr:housenumber =~
/^ev\.[1-9]+\/[0-9]+[A-Za-z]?$/][inside("CZ")] {
throwWarning: tr("ÄÃslo evidenÄnà chybÃ");
fixAdd:
concat("addr:provisionalnnumber=",get(split("/",tag("addr:housenumber")),0));
}
/* typo checks
detekcia možných preklepov
*/
*[addr:streetnumbe][inside("CZ,SK")]{
throwError: tr("Zistený preklep u addr:streetnumber");
suggestAlternative: "addr:streetnumber";
fixChangeKey: "addr:streetnumbe=>addr:streetnumber";
}
*[addr:conscriptionumber][inside("CZ,SK")]{
throwError: tr("Zistený preklep u addr:conscriptionnumber");
suggestAlternative: "addr:conscriptionnumber";
fixChangeKey: "addr:conscriptionumber=>addr:conscriptionnumber";
}
*[addr:conscriptionnumbe][inside("CZ,SK")]{
throwError: tr("Zistený preklep u addr:conscriptionnumber");
suggestAlternative: "addr:conscriptionnumber";
fixChangeKey: "addr:conscriptionnumbe=>addr:conscriptionnumber";
}
*[addr:conscriptionsnumber][inside("CZ,SK")]{
throwError: tr("Zistený preklep u addr:conscriptionnumber");
suggestAlternative: "addr:conscriptionnumber";
fixChangeKey: "addr:conscriptionsnumber=>addr:conscriptionnumber";
}
*[addr:provisionnumber][inside("CZ")]{
throwError: tr("ZjiÅ¡tÄný pÅeklep u addr:provisionalnumber");
suggestAlternative: "addr:conscriptionnumber";
fixChangeKey: "addr:provisionsnumber=>addr:provisionalnumber";
}
*[addr:provisionalnumbe][inside("CZ")]{
throwError: tr("ZjiÅ¡tÄný pÅeklep u addr:provisionalnumber");
suggestAlternative: "addr:conscriptionnumber";
fixChangeKey: "addr:provisionalsnumbe=>addr:provisionalnumber";
}meta
{
title: "Czech Republic Address System";
version: "2.17_2020-10-05";
description: "Rules implementing checks for address tags specified by Czech
Republic Address System. Only used in CZ and SK.";
author: "Jose Riha";
icon: "Flag_of_the_Czech_Republic.svg";
link: "https://josm.openstreetmap.de/wiki/Rules/CzechRepublicAddressSystem";
min-josm-version: "11424"; /* due to territory selectors */
}
/* implementation of Czech Republic Address System for JOSM validator as per
https://wiki.openstreetmap.org/wiki/Cs:WikiProject_Czech_Republic/Address_system
Only makes sense to edits within borders of Czech and Slovak republic.
Not all but majority of cases should be covered by this.
Sada pravidiel pre JOSM validator implementujuca kontrolu tagov zadavanych
podla unikatneho systemu cislovania budov pre Cesku a Slovensku republiku
(https://wiki.openstreetmap.org/wiki/Cs:WikiProject_Czech_Republic/Address_system).
Pozn.
- evidencne cisla sa prideluju len budovam na uzemi CR
- orientacne cisla na Slovensku obsahujuce pismeno sa pisu velkym pismenom,
napr. 12A, 3B, 8C
please send fixes and suggestions to: jose1711 gmail com
*/
/* streetnumber syntax check
orientacne cislo musi vyhovovat reg. vyrazu popisanemu na wiki:
https://wiki.openstreetmap.org/wiki/Cs:WikiProject_Czech_Republic/Address_system
*/
*[addr:streetnumber][addr:streetnumber !~
/^[1-9]+[0-9]*[A-Za-z]{0,1}$/][inside("CZ")]{
throwError: tr("Format of streetnumber not recognized - expected a number
followed by an optional single letter");
}
/* streetnumber syntax check
orientacne cislo musi vyhovovat reg. vyrazu popisanemu na wiki:
https://wiki.openstreetmap.org/wiki/Cs:WikiProject_Czech_Republic/Address_system
*/
*[addr:streetnumber][addr:streetnumber !~
/^[1-9]+[0-9]*[A-Z]{0,1}$/][inside("SK")]{
throwError: tr("Format of streetnumber not recognized - expected a number
followed by an optional single letter");
}
/* conscriptionnumber syntax check
supisne cislo musi vyhovovat reg. vyrazu popisanemu na wiki:
https://wiki.openstreetmap.org/wiki/Cs:WikiProject_Czech_Republic/Address_system
*/
*[addr:conscriptionnumber][addr:conscriptionnumber !~
/^[1-9]+[0-9]*$/][inside("CZ,SK")]{
throwError: tr("Format of {0} not recognized - expected a natural number",
"{0.key}");
}
/* provisionalnumber syntax check
evidencne cislo musi vyhovovat reg. vyrazu popisanemu na wiki:
https://wiki.openstreetmap.org/wiki/Cs:WikiProject_Czech_Republic/Address_system
*/
*[addr:provisionalnumber][addr:provisionalnumber !~
/^[1-9]+[0-9]*$/][inside("CZ")]{
throwError: tr("Format of {0} not recognized - expected a natural number",
"{0.key}");
}
/* each address should have at least addr:street or addr:place
kazda adresa by mala obsahovat bud addr:street alebo addr:place, pripadne oboje
*/
*[any(tag("addr:streetnumber"),tag("addr:conscriptionnumber"),tag("addr:housenumber"))][!addr:street][!addr:place][inside("CZ,SK")]
{
throwWarning: tr("Each address should have at least addr:street or addr:place
tag");
}
/* conscriptionnumber and provisionalnumber are mutualy exclusive
ziaden dom by nemal mat sucasne supisne a evidencne cislo
*/
*[addr:conscriptionnumber][addr:provisionalnumber][inside("CZ")]{
throwError: tr("There should be either addr:conscriptionnumber or
addr:provisionalnumber, not both at the same time");
}
/* check for missing street in presence of streetnumber tag
streetnumber by malo byt pouzite len spolu s orientacnym cislom
*/
*[addr:streetnumber][!addr:street][inside("CZ,SK")]{
throwWarning: tr("Addr:streetnumber used without an addr:street tag");
}
/* if both streetnumber and conscriptionnumber are present then housenumber
should be formatted as conscriptionnumber/streetnumber
v pripade pouzitia supisneho aj orientacneho cisla by hodnota housenumber mala
obsahovat kombinaciu oboch vo forme supisne/orientacne cislo
*/
*[addr:housenumber][addr:streetnumber][addr:conscriptionnumber][not(tag("addr:housenumber")
=
concat(tag("addr:conscriptionnumber"),"/",tag("addr:streetnumber")))][inside("CZ,SK")]{
throwWarning: tr("Addr:housenumber in unexpected format (expected:
conscriptionnumber/streetnumber)");
fixAdd:
concat("addr:housenumber=",tag("addr:conscriptionnumber"),"/",tag("addr:streetnumber"));
}
/* if both streetnumber and provisionalnumber are present then housenumber
should be formatted as "ev."+provisionalnumber/streetnumber
v pripade pouzitia evidencneho aj orientacneho cisla by hodnota housenumber
mala obsahovat kombinaciu oboch vo forme ev.evidencne/orientacne cislo
*/
*[addr:housenumber][addr:streetnumber][addr:provisionalnumber][not(tag("addr:housenumber")
=
concat("ev.",tag("addr:provisionalnumber"),"/",tag("addr:streetnumber")))][inside("CZ")]{
throwWarning: tr("Addr:housenumber in unexpected format (expected:
ev.+provisional/streetnumber)");
fixAdd:
concat("addr:housenumber=ev.",tag("addr:provisionalnumber"),"/",tag("addr:streetnumber"));
}
/* if both streetnumber and conscriptionnumber are present then housenumber
should be formatted as conscriptionnumber/streetnumber
v pripade pouzitia supisneho aj orientacneho cisla by hodnota housenumber mala
obsahovat kombinaciu oboch vo forme supisne/orientacne cislo
*/
*[!addr:housenumber][addr:streetnumber][addr:conscriptionnumber][inside("CZ,SK")]{
throwWarning: tr("Addr:housenumber missing - expected:
conscriptionnumber/streetnumber");
fixAdd:
concat("addr:housenumber=",tag("addr:conscriptionnumber"),"/",tag("addr:streetnumber"));
}
/* if both streetnumber and provisionalnumber are present then housenumber
should be formatted as "ev."+provisionalnumber/streetnumber
v pripade pouzitia evidencneho aj orientacneho cisla by hodnota housenumber
mala obsahovat kombinaciu oboch vo forme ev.evidencne/orientacne cislo
*/
*[!addr:housenumber][addr:streetnumber][addr:provisionalnumber][inside("CZ")]{
throwWarning: tr("Addr:housenumber missing - expected:
ev.+provisionalnumber/streetnumber");
fixAdd:
concat("addr:housenumber=ev.",tag("addr:provisionalnumber"),"/",tag("addr:streetnumber"));
}
/* if only conscriptionnumber is present then housenumber should contain its
value
pre dom, ktory je identifikovany len supisnym cislom, by sa toto cislo malo
objavit aj v housenumber
*/
*[addr:housenumber][!addr:streetnumber][addr:conscriptionnumber][not(tag("addr:housenumber")
= tag("addr:conscriptionnumber"))][inside("CZ,SK")]{
throwWarning: tr("{0} should contain addr:conscriptionnumber","{0.key}");
fixAdd: concat("addr:housenumber=",tag("addr:conscriptionnumber"));
}
/* if only provisionalnumber is present then housenumber should contain its
value
pre dom, ktory je identifikovany len evidencnym cislom, by sa toto cislo malo
objavit aj v housenumber
*/
*[addr:housenumber][!addr:streetnumber][addr:provisionalnumber][not(tag("addr:housenumber")
= concat("ev.",tag("addr:provisionalnumber")))][inside("CZ")]{
throwWarning: tr("{0} should contain ev. + addr:provisionalnumber","{0.key}");
fixAdd: concat("addr:housenumber=ev.",tag("addr:provisionalnumber"));
}
/* if housenumber is not empty we want to have conscriptionnumber and/or
streetnumber populated as well */
*[addr:housenumber][!addr:streetnumber][!addr:conscriptionnumber][addr:housenumber
=~ /\/[1-9]+/][inside("CZ,SK")] {
throwWarning: tr("Streetnumber and conscriptionnumber missing");
fixAdd:
concat("addr:conscriptionnumber=",get(split("/",tag("addr:housenumber")),0));
fixAdd: concat("addr:streetnumber=",get(split("/",tag("addr:housenumber")),1));
}
/* both housenumber and streetnumber is populated but conscriptionnumber is
missing
housenumber aj orientacne cislo obsahuju hodnotu, no supisne cislo je prazdne
*/
*[addr:streetnumber][!addr:conscriptionnumber][addr:housenumber =~
/\/[1-9]+/][inside("CZ,SK")] {
throwWarning: tr("Conscriptionnumber missing");
fixAdd:
concat("addr:conscriptionnumber=",get(split("/",tag("addr:housenumber")),0));
}
/* typo checks
detekcia castych preklepov
*/
*[addr:streetnumbe][inside("CZ,SK")]{
throwError: tr("Typo detected with streetnumber");
suggestAlternative: "addr:streetnumber";
fixChangeKey: "addr:streetnumbe=>addr:streetnumber";
}
*[addr:conscriptionumber][inside("CZ,SK")]{
throwError: tr("Typo detected with conscriptionnumber");
suggestAlternative: "addr:conscriptionnumber";
fixChangeKey: "addr:conscriptionumber=>addr:conscriptionnumber";
}_______________________________________________
talk-cz mailing list
[email protected]
https://lists.openstreetmap.org/listinfo/talk-cz
https://openstreetmap.cz/talkcz