Changes between Version 17 and Version 18 of Rules/CzechRepublicAddressSystem
- Timestamp:
- 2025-10-31T18:16:28+01:00 (5 months ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
Rules/CzechRepublicAddressSystem
v17 v18 1 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.2 3 {{{4 #!rule5 1 meta 6 2 { 7 3 title: "Czech Republic Address System"; 8 version: " 2.[[revision]]_[[date]]";9 description: "Rules implementing checks for address tags specified by Czech Republic Address System. Only used in CZ and SK."; 10 author: "Jose Riha"; 4 version: "3.05_2025-10-31"; 5 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."; 6 author: "Jose Riha, Ales AF HAF"; 11 7 icon: "Flag_of_the_Czech_Republic.svg"; 12 8 link: "https://josm.openstreetmap.de/wiki/Rules/CzechRepublicAddressSystem"; 9 baselanguage: "cs"; 13 10 min-josm-version: "11424"; /* due to territory selectors */ 14 11 } … … 19 16 Not all but majority of cases should be covered by this. 20 17 21 Sada pravidiel pre JOSM valid ator implementujucakontrolu tagov zadavanych podla unikatneho systemu cislovania budov pre Cesku a Slovenskurepubliku (https://wiki.openstreetmap.org/wiki/Cs:WikiProject_Czech_Republic/Address_system).18 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). 22 19 23 20 Pozn. 24 - evidencne cisla sa prideluju len budovam na uzemi CR 25 - orientacne cisla na Slovensku obsahujuce pismeno sa pisu velkym pismenom, napr. 12A, 3B, 8C 26 27 28 please send fixes and suggestions to: jose1711 gmail com 21 - čísla evidenční se přidelují jen budovám na území ČR 22 - 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 23 - limit čísla popisného v ČR a čísla evidenčního je 9999, u čísla orientačního je limit 999 24 25 26 please send fixes and suggestions to: jose1711 gmail com, f.ales1 seznam cz 29 27 */ 30 28 31 29 /* streetnumber syntax check 32 orienta cne cislo musivyhovovat reg. vyrazu popisanemu na wiki: https://wiki.openstreetmap.org/wiki/Cs:WikiProject_Czech_Republic/Address_system33 */ 34 *[addr:streetnumber][addr:streetnumber !~ /^[1-9] +[0-9]*[A-Za-z]{0,1}$/][inside("CZ")]{35 throwError: tr(" Format of streetnumber not recognized - expected a number followed by an optional single letter");30 číslo orientační musí vyhovovat reg. výrazu popsanému na wiki: https://wiki.openstreetmap.org/wiki/Cs:WikiProject_Czech_Republic/Address_system 31 */ 32 *[addr:streetnumber][addr:streetnumber !~ /^[1-9][0-9]{0,2}[a-z]{0,1}$/][inside("CZ")]{ 33 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"); 36 34 } 37 35 38 36 /* streetnumber syntax check 39 orienta cne cislo musivyhovovatreg. vyrazu popisanemu na wiki: https://wiki.openstreetmap.org/wiki/Cs:WikiProject_Czech_Republic/Address_system37 orientačné číslo musí vyhovovať reg. výrazu popísanému na wiki: https://wiki.openstreetmap.org/wiki/Cs:WikiProject_Czech_Republic/Address_system 40 38 */ 41 39 *[addr:streetnumber][addr:streetnumber !~ /^[1-9]+[0-9]*[A-Z]{0,1}$/][inside("SK")]{ 42 throwError: tr(" Format of streetnumber not recognized - expected a number followed by an optional single letter");40 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"); 43 41 } 44 42 45 43 /* conscriptionnumber syntax check 46 s upisne cislo musivyhovovatreg. vyrazu popisanemu na wiki: https://wiki.openstreetmap.org/wiki/Cs:WikiProject_Czech_Republic/Address_system44 súpisné číslo musí vyhovovať reg. výrazu popísanému na wiki: https://wiki.openstreetmap.org/wiki/Cs:WikiProject_Czech_Republic/Address_system 47 45 */ 48 46 *[addr:conscriptionnumber][addr:conscriptionnumber !~ /^[1-9]+[0-9]*$/][inside("CZ,SK")]{ 49 throwError: tr("Format of {0} not recognized - expected a natural number", "{0.key}"); 47 throwError: tr("Formát {0} nebyl rozpoznán – očekává se přirozené číslo", "{0.key}"); 48 } 49 50 /* conscriptionnumber syntax check 51 číslo popisné musí vyhovovat reg. výrazu popsanému na wiki: https://wiki.openstreetmap.org/wiki/Cs:WikiProject_Czech_Republic/Address_system 52 */ 53 *[addr:conscriptionnumber][addr:conscriptionnumber =~ /^[0-9]{5}$/][inside("CZ")]{ 54 throwError: tr("Číslo popisné je příliš vysoké – očekává se číslo nižší než 9999"); 50 55 } 51 56 52 57 /* provisionalnumber syntax check 53 evidencne cislo musivyhovovat reg. vyrazu popisanemu na wiki: https://wiki.openstreetmap.org/wiki/Cs:WikiProject_Czech_Republic/Address_system58 číslo evidenční musí vyhovovat reg. výrazu popsanému na wiki: https://wiki.openstreetmap.org/wiki/Cs:WikiProject_Czech_Republic/Address_system 54 59 */ 55 60 *[addr:provisionalnumber][addr:provisionalnumber !~ /^[1-9]+[0-9]*$/][inside("CZ")]{ 56 throwError: tr("Form at of {0} not recognized - expected a natural number", "{0.key}");61 throwError: tr("Formát {0} nebyl rozpoznán – očekává se přirozené číslo nižší než 9999", "{0.key}"); 57 62 } 58 63 59 64 /* each address should have at least addr:street or addr:place 60 kazda adresa by mala obsahovat bud addr:street alebo addr:place, pripadne oboje 61 */ 62 *[any(tag("addr:streetnumber"),tag("addr:conscriptionnumber"),tag("addr:housenumber"))][!addr:street][!addr:place][inside("CZ,SK")] { 63 throwWarning: tr("Each address should have at least addr:street or addr:place tag"); 64 } 65 65 každá adresa by mala obsahovať buď addr:street alebo addr:place, prípadne oboje 66 */ 67 *[any(tag("addr:streetnumber"),tag("addr:conscriptionnumber"),tag("addr:provisionalnumber"),tag("addr:housenumber"))][!addr:street][!addr:place][inside("CZ,SK")] { 68 throwWarning: tr("Každá adresa by měla mít alespoň značku addr:street nebo addr:place"); 69 } 70 71 /* each address without addr:streetnumber should have at least addr:place 72 každá adresa bez addr:streetnumber by měla obsahovat addr:place 73 */ 74 *[any(tag("addr:conscriptionnumber"),tag("addr:provisionalnumber"))][!addr:streetnumber][!addr:place][inside("CZ")] { 75 throwWarning: tr("Každá adresa bez čísla orientačního by měla mít addr:place"); 76 } 66 77 67 78 /* conscriptionnumber and provisionalnumber are mutualy exclusive 68 ziaden dom by nemal mat sucasne supisnea evidencne cislo79 žádný dům by neměl mít číslo popisné a evidenční současně 69 80 */ 70 81 *[addr:conscriptionnumber][addr:provisionalnumber][inside("CZ")]{ 71 throwError: tr(" There should be eitheraddr:conscriptionnumberoraddr:provisionalnumber, not both at the same time");82 throwError: tr("Mělo by existovat buď addr:conscriptionnumber nebo addr:provisionalnumber, nikoli obojí současně"); 72 83 } 73 84 74 85 /* check for missing street in presence of streetnumber tag 75 streetnumberby malo byt pouzite lenspolu sorientacnym cislom86 orientačné číslo by malo byť použité spolu s názvom ulice 76 87 */ 77 88 *[addr:streetnumber][!addr:street][inside("CZ,SK")]{ 78 throwWarning: tr("Addr:streetnumber used without an addr:street tag"); 89 throwWarning: tr("Addr:streetnumber bez ulice"); 90 } 91 92 /* check for missing streetnumber in presence of street tag 93 každá adresa s názvom ulice by mala obsahovať aj orientačné číslo 94 */ 95 *[!addr:streetnumber][addr:street][addr:conscriptionnumber][inside("SK")]{ 96 throwWarning: tr("Ulica bez addr:streetnumber"); 79 97 } 80 98 81 99 /* if both streetnumber and conscriptionnumber are present then housenumber should be formatted as conscriptionnumber/streetnumber 82 v pr ipade pouzitia supisneho aj orientacneho cisla by hodnota housenumber mala obsahovatkombinaciu oboch vo forme supisne/orientacne cislo100 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 83 101 */ 84 102 *[addr:housenumber][addr:streetnumber][addr:conscriptionnumber][not(tag("addr:housenumber") = concat(tag("addr:conscriptionnumber"),"/",tag("addr:streetnumber")))][inside("CZ,SK")]{ 85 throwWarning: tr("Addr:housenumber in unexpected format (expected: conscriptionnumber/streetnumber)");103 throwWarning: tr("Addr:housenumber v neočekávaném formátě (očekáváno: conscriptionnumber/streetnumber)"); 86 104 fixAdd: concat("addr:housenumber=",tag("addr:conscriptionnumber"),"/",tag("addr:streetnumber")); 87 105 } 88 106 89 107 /* if both streetnumber and provisionalnumber are present then housenumber should be formatted as "ev."+provisionalnumber/streetnumber 90 v p ripade pouzitia evidencneho ajorientacneho cislaby hodnota housenumber mala obsahovat kombinaciu oboch vo formeev.evidencne/orientacne cislo108 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 91 109 */ 92 110 *[addr:housenumber][addr:streetnumber][addr:provisionalnumber][not(tag("addr:housenumber") = concat("ev.",tag("addr:provisionalnumber"),"/",tag("addr:streetnumber")))][inside("CZ")]{ 93 throwWarning: tr("Addr:housenumber in unexpected format (expected: ev.+provisional/streetnumber)");111 throwWarning: tr("Addr:housenumber v neočekávaném formátě (očekáváno: ev.+provisional/streetnumber)"); 94 112 fixAdd: concat("addr:housenumber=ev.",tag("addr:provisionalnumber"),"/",tag("addr:streetnumber")); 95 113 } 96 114 97 115 /* if both streetnumber and conscriptionnumber are present then housenumber should be formatted as conscriptionnumber/streetnumber 98 v pr ipade pouzitia supisneho aj orientacneho cisla by hodnota housenumber mala obsahovatkombinaciu oboch vo forme supisne/orientacne cislo116 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 99 117 */ 100 118 *[!addr:housenumber][addr:streetnumber][addr:conscriptionnumber][inside("CZ,SK")]{ 101 throwWarning: tr("Addr:housenumber missing - expected: conscriptionnumber/streetnumber");119 throwWarning: tr("Addr:housenumber chybí - očekáváno: conscriptionnumber/streetnumber"); 102 120 fixAdd: concat("addr:housenumber=",tag("addr:conscriptionnumber"),"/",tag("addr:streetnumber")); 103 121 } 104 122 105 123 /* if both streetnumber and provisionalnumber are present then housenumber should be formatted as "ev."+provisionalnumber/streetnumber 106 v p ripade pouzitia evidencneho ajorientacneho cislaby hodnota housenumber mala obsahovat kombinaciu oboch vo formeev.evidencne/orientacnecislo124 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 107 125 */ 108 126 *[!addr:housenumber][addr:streetnumber][addr:provisionalnumber][inside("CZ")]{ 109 throwWarning: tr("Addr:housenumber missing - expected: ev.+provisionalnumber/streetnumber");127 throwWarning: tr("Addr:housenumber chybí - očekáváno: ev.+provisionalnumber/streetnumber"); 110 128 fixAdd: concat("addr:housenumber=ev.",tag("addr:provisionalnumber"),"/",tag("addr:streetnumber")); 111 129 } 112 130 113 131 /* if only conscriptionnumber is present then housenumber should contain its value 114 pre dom, ktor yje identifikovany len supisnym cislom, by sa totocislo malo objavitaj v housenumber132 pre dom, ktorý je identifikovaný len súpisným číslom, by sa toto číslo malo objaviť aj v housenumber 115 133 */ 116 134 *[addr:housenumber][!addr:streetnumber][addr:conscriptionnumber][not(tag("addr:housenumber") = tag("addr:conscriptionnumber"))][inside("CZ,SK")]{ 117 throwWarning: tr("{0} should containaddr:conscriptionnumber","{0.key}");135 throwWarning: tr("{0} by měl obsahovat addr:conscriptionnumber","{0.key}"); 118 136 fixAdd: concat("addr:housenumber=",tag("addr:conscriptionnumber")); 119 137 } 120 138 121 139 /* if only provisionalnumber is present then housenumber should contain its value 122 pr e dom, ktoryje identifikovany lenevidencnym cislom, by sa toto cislo malo objavit ajv housenumber140 pro dům, který je identifikovaný pouze číslem evidenčním, by se toto číslo mělo objevit i v housenumber 123 141 */ 124 142 *[addr:housenumber][!addr:streetnumber][addr:provisionalnumber][not(tag("addr:housenumber") = concat("ev.",tag("addr:provisionalnumber")))][inside("CZ")]{ 125 throwWarning: tr("{0} should containev. + addr:provisionalnumber","{0.key}");143 throwWarning: tr("{0} by měl obsahovat ev. + addr:provisionalnumber","{0.key}"); 126 144 fixAdd: concat("addr:housenumber=ev.",tag("addr:provisionalnumber")); 127 145 } 128 146 129 /* if housenumber is not empty we want to have conscriptionnumber and/or streetnumber populated as well */ 130 *[addr:housenumber][!addr:streetnumber][!addr:conscriptionnumber][addr:housenumber =~ /\/[1-9]+/][inside("CZ,SK")] { 131 throwWarning: tr("Streetnumber and conscriptionnumber missing"); 147 /* if housenumber is not empty we want to have conscriptionnumber and streetnumber populated as well 148 ak číslo domu nie je prázdne, chceme, aby bolo vyplnené aj súpisné a orientačné číslo 149 */ 150 *[addr:housenumber][!addr:streetnumber][!addr:conscriptionnumber][addr:housenumber =~ /^[1-9]+\/[0-9]+[A-Za-z]?$/][inside("CZ,SK")] { 151 throwWarning: tr("Addr:conscriptionnumber a addr:streetnumber chybí"); 132 152 fixAdd: concat("addr:conscriptionnumber=",get(split("/",tag("addr:housenumber")),0)); 133 153 fixAdd: concat("addr:streetnumber=",get(split("/",tag("addr:housenumber")),1)); 134 154 } 135 155 156 /* if housenumber with ev. is not empty we want to have provisionalnumber and streetnumber populated as well 157 pokud číslo domu nie s ev. není prázdné, chceme, aby bylo vyplněné i číslo evidenční a orientační 158 */ 159 *[addr:housenumber][!addr:streetnumber][!addr:provisionalnumber][addr:housenumber =~ /^ev\.[1-9]+\/[0-9]+[A-Za-z]?$/][inside("CZ")] { 160 throwWarning: tr("Addr:provisionalnumber a addr:streetnumber chybí"); 161 fixAdd: concat("addr:conscriptionnumber=",get(split("/",tag("addr:housenumber")),0)); 162 fixAdd: concat("addr:streetnumber=",get(split("/",tag("addr:housenumber")),1)); 163 } 164 136 165 /* both housenumber and streetnumber is populated but conscriptionnumber is missing 137 housenumber ajorientacne cisloobsahujuhodnotu,no supisne cislo je prazdne166 housenumber i číslo orientační obsahují hodnotu, ale číslo popisné je prázdné 138 167 */ 139 *[addr:streetnumber][!addr:conscriptionnumber][addr:housenumber =~ / \/[1-9]+/][inside("CZ,SK")] {140 throwWarning: tr(" Conscriptionnumbermissing");168 *[addr:streetnumber][!addr:conscriptionnumber][addr:housenumber =~ /^[1-9]+\/[0-9]+[A-Za-z]?$/][inside("CZ,SK")] { 169 throwWarning: tr("Addr:conscriptionnumber chybí"); 141 170 fixAdd: concat("addr:conscriptionnumber=",get(split("/",tag("addr:housenumber")),0)); 142 171 } 143 172 173 /* both housenumber and streetnumber is populated but provisionalnumber is missing 174 housenumber i číslo orientační obsahují hodnotu, ale číslo evidenční je prázdné 175 */ 176 *[addr:streetnumber][!addr:provisionalnumber][addr:housenumber =~ /^ev\.[1-9]+\/[0-9]+[A-Za-z]?$/][inside("CZ")] { 177 throwWarning: tr("Addr:provisionalnumber chybí"); 178 fixAdd: concat("addr:provisionalnnumber=",get(split("/",tag("addr:housenumber")),0)); 179 } 180 144 181 /* typo checks 145 detekcia castych preklepov182 detekcia možných preklepov 146 183 */ 147 184 *[addr:streetnumbe][inside("CZ,SK")]{ 148 throwError: tr(" Typo detected withstreetnumber");185 throwError: tr("Zjištěný překlep u addr:streetnumber"); 149 186 suggestAlternative: "addr:streetnumber"; 150 187 fixChangeKey: "addr:streetnumbe=>addr:streetnumber"; … … 152 189 153 190 *[addr:conscriptionumber][inside("CZ,SK")]{ 154 throwError: tr(" Typo detected withconscriptionnumber");191 throwError: tr("Zjištěný překlep u addr:conscriptionnumber"); 155 192 suggestAlternative: "addr:conscriptionnumber"; 156 193 fixChangeKey: "addr:conscriptionumber=>addr:conscriptionnumber"; 157 194 } 158 }}} 195 196 *[addr:conscriptionnumbe][inside("CZ,SK")]{ 197 throwError: tr("Zjištěný překlep u addr:conscriptionnumber"); 198 suggestAlternative: "addr:conscriptionnumber"; 199 fixChangeKey: "addr:conscriptionnumbe=>addr:conscriptionnumber"; 200 } 201 202 *[addr:conscriptionsnumber][inside("CZ,SK")]{ 203 throwError: tr("Zjištěný překlep u addr:conscriptionnumber"); 204 suggestAlternative: "addr:conscriptionnumber"; 205 fixChangeKey: "addr:conscriptionsnumber=>addr:conscriptionnumber"; 206 } 207 208 *[addr:provisionnumber][inside("CZ")]{ 209 throwError: tr("Zjištěný překlep u addr:provisionalnumber"); 210 suggestAlternative: "addr:provisionalnumber"; 211 fixChangeKey: "addr:provisionsnumber=>addr:provisionalnumber"; 212 } 213 214 *[addr:provisionalnumbe][inside("CZ")]{ 215 throwError: tr("Zjištěný překlep u addr:provisionalnumber"); 216 suggestAlternative: "addr:provisionalnumber"; 217 fixChangeKey: "addr:provisionalsnumbe=>addr:provisionalnumber"; 218 }
