Rules to validate address tags as defined by Czech Republic Address System: osmwiki:Cs:WikiProject_Czech_Republic/Address_system. This system is exclusively used in Czech Republic and Slovakia.
meta { title: "Czech Republic Address System"; version: "3.20_2025-10-31; 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"; baselanguage: "cs"; 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"); } /* each address without addr:streetnumber should have at least addr:place každá adresa bez addr:streetnumber by měla obsahovat addr:place */ *[any(tag("addr:conscriptionnumber"),tag("addr:provisionalnumber"))][!addr:streetnumber][!addr:place][inside("CZ")] { throwWarning: tr("Každá adresa bez čísla orientačního by měla mít 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("Addr:streetnumber 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][addr:conscriptionnumber][inside("SK")]{ throwWarning: tr("Ulica bez 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][not(tag("addr:housenumber") = concat(tag("addr:conscriptionnumber"),"/",tag("addr:streetnumber")))][inside("CZ,SK")]{ throwWarning: tr("Addr:housenumber v neočekávaném formátě (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í čí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]+\/[0-9]+[A-Za-z]?$/][inside("CZ,SK")] { throwWarning: tr("Addr:conscriptionnumber a addr:streetnumber chybí"); fixAdd: concat("addr:conscriptionnumber=",get(split("/",tag("addr:housenumber")),0)); fixAdd: concat("addr:streetnumber=",get(split("/",tag("addr:housenumber")),1)); } /* if housenumber with ev. is not empty we want to have provisionalnumber and streetnumber populated as well pokud číslo domu nie s ev. není prázdné, chceme, aby bylo vyplněné i číslo evidenční a orientační */ *[addr:housenumber][!addr:streetnumber][!addr:provisionalnumber][addr:housenumber =~ /^ev\.[1-9]+\/[0-9]+[A-Za-z]?$/][inside("CZ")] { throwWarning: tr("Addr:provisionalnumber a addr:streetnumber chybí"); 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 chybí"); 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("Addr:provisionalnumber 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("Zjištěný překlep u addr:streetnumber"); suggestAlternative: "addr:streetnumber"; fixChangeKey: "addr:streetnumbe=>addr:streetnumber"; } *[addr:conscriptionumber][inside("CZ,SK")]{ throwError: tr("Zjištěný překlep u addr:conscriptionnumber"); suggestAlternative: "addr:conscriptionnumber"; fixChangeKey: "addr:conscriptionumber=>addr:conscriptionnumber"; } *[addr:conscriptionnumbe][inside("CZ,SK")]{ throwError: tr("Zjištěný překlep u addr:conscriptionnumber"); suggestAlternative: "addr:conscriptionnumber"; fixChangeKey: "addr:conscriptionnumbe=>addr:conscriptionnumber"; } *[addr:conscriptionsnumber][inside("CZ,SK")]{ throwError: tr("Zjištěný překlep 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:provisionalnumber"; fixChangeKey: "addr:provisionsnumber=>addr:provisionalnumber"; } *[addr:provisionalnumbe][inside("CZ")]{ throwError: tr("Zjištěný překlep u addr:provisionalnumber"); suggestAlternative: "addr:provisionalnumber"; fixChangeKey: "addr:provisionalsnumbe=>addr:provisionalnumber"; }
Rules_CzechRepublicAddressSystem.validator.mapcss, Rules_CzechRepublicAddressSystem.zip
Last modified
2 weeks ago
Last modified on 2025-10-31T18:31:50+01:00
Attachments (1)
- Flag_of_the_Czech_Republic.svg (275 bytes ) - added by 6 years ago.
Download all attachments as: .zip
Note:
See TracWiki
for help on using the wiki.


