vehicles 0.4.1 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.rubocop_todo.yml +164 -0
- data/CHANGELOG.md +321 -0
- data/README.md +88 -15
- data/data/PROVENANCE-vehicles.md +12 -0
- data/data/plates/PROVENANCE.md +10 -0
- data/data/plates/_decode/at-districts.yml +287 -0
- data/data/plates/_decode/ch-cantons.yml +110 -0
- data/data/plates/_decode/cn-issuing-offices.yml +463 -0
- data/data/plates/_decode/cn-provinces.yml +614 -0
- data/data/plates/_decode/cz-kraj.yml +159 -0
- data/data/plates/_decode/dk-serial-blocks.yml +327 -0
- data/data/plates/_decode/es-provinces.yml +116 -0
- data/data/plates/_decode/fr-departements.yml +191 -0
- data/data/plates/_decode/gb-age-identifiers.yml +170 -0
- data/data/plates/_decode/gb-memory-tags.yml +202 -0
- data/data/plates/_decode/gr-prefectures.yml +1408 -0
- data/data/plates/_decode/hr-cities.yml +315 -0
- data/data/plates/_decode/ie-counties.yml +227 -0
- data/data/plates/_decode/in-state-codes.yml +169 -0
- data/data/plates/_decode/is-districts-1938.yml +116 -0
- data/data/plates/_decode/it-provinces.yml +348 -0
- data/data/plates/_decode/jp-office-marks.yml +960 -0
- data/data/plates/_decode/jp-use-marks.yml +205 -0
- data/data/plates/_decode/kr-authority-marks.yml +146 -0
- data/data/plates/_decode/kr-use-syllables.yml +194 -0
- data/data/plates/_decode/lu-series-order.yml +638 -0
- data/data/plates/_decode/mx-entity-series.yml +380 -0
- data/data/plates/_decode/my-index-marks.yml +271 -0
- data/data/plates/_decode/no-counties-1913.yml +148 -0
- data/data/plates/_decode/no-districts.yml +901 -0
- data/data/plates/_decode/pl-powiats.yml +567 -0
- data/data/plates/_decode/pt-trailer-services.yml +96 -0
- data/data/plates/_decode/ro-counties.yml +213 -0
- data/data/plates/_decode/se-diplomatic.yml +220 -0
- data/data/plates/_decode/si-regions.yml +123 -0
- data/data/plates/_decode/sk-districts.yml +314 -0
- data/data/plates/_decode/th-registration-elements.yml +208 -0
- data/data/plates/_decode/ua-regions.yml +393 -0
- data/data/plates/_decode/za-licence-marks.yml +215 -0
- data/data/plates/_meta/classes.yml +26 -0
- data/data/plates/_meta/separators.yml +102 -0
- data/data/plates/ad.yml +961 -0
- data/data/plates/ar.yml +762 -0
- data/data/plates/at.yml +1424 -0
- data/data/plates/au-act.yml +472 -0
- data/data/plates/au-nsw.yml +282 -0
- data/data/plates/au-nt.yml +431 -0
- data/data/plates/au-qld.yml +272 -0
- data/data/plates/au-sa.yml +248 -0
- data/data/plates/au-tas.yml +302 -0
- data/data/plates/au-vic.yml +215 -0
- data/data/plates/au-wa.yml +309 -0
- data/data/plates/be.yml +1840 -0
- data/data/plates/br.yml +1152 -0
- data/data/plates/ca-ab.yml +430 -0
- data/data/plates/ca-bc.yml +697 -0
- data/data/plates/ca-mb.yml +499 -0
- data/data/plates/ca-nb.yml +537 -0
- data/data/plates/ca-nl.yml +743 -0
- data/data/plates/ca-ns.yml +808 -0
- data/data/plates/ca-nt.yml +610 -0
- data/data/plates/ca-nu.yml +280 -0
- data/data/plates/ca-on.yml +881 -0
- data/data/plates/ca-pe.yml +592 -0
- data/data/plates/ca-qc.yml +1036 -0
- data/data/plates/ca-sk.yml +256 -0
- data/data/plates/ca-yt.yml +656 -0
- data/data/plates/ch.yml +1273 -0
- data/data/plates/cn.yml +1431 -0
- data/data/plates/cy.yml +688 -0
- data/data/plates/cz.yml +1179 -0
- data/data/plates/de.yml +1107 -0
- data/data/plates/dk.yml +1647 -0
- data/data/plates/ee.yml +1275 -0
- data/data/plates/es.yml +888 -0
- data/data/plates/fi.yml +1271 -0
- data/data/plates/fr.yml +1265 -0
- data/data/plates/gb.yml +1188 -0
- data/data/plates/gr.yml +721 -0
- data/data/plates/hr.yml +860 -0
- data/data/plates/hu.yml +959 -0
- data/data/plates/ie.yml +775 -0
- data/data/plates/in.yml +1172 -0
- data/data/plates/is.yml +667 -0
- data/data/plates/it.yml +1317 -0
- data/data/plates/jp.yml +3650 -0
- data/data/plates/kr.yml +1375 -0
- data/data/plates/li.yml +1010 -0
- data/data/plates/lt.yml +879 -0
- data/data/plates/lu.yml +842 -0
- data/data/plates/lv.yml +924 -0
- data/data/plates/mc.yml +1024 -0
- data/data/plates/mt.yml +854 -0
- data/data/plates/mx.yml +1372 -0
- data/data/plates/my.yml +685 -0
- data/data/plates/nl.yml +1016 -0
- data/data/plates/no.yml +1018 -0
- data/data/plates/nz.yml +1699 -0
- data/data/plates/pl.yml +1296 -0
- data/data/plates/pt.yml +847 -0
- data/data/plates/ro.yml +785 -0
- data/data/plates/se.yml +1091 -0
- data/data/plates/si.yml +1105 -0
- data/data/plates/sk.yml +1439 -0
- data/data/plates/sm.yml +1119 -0
- data/data/plates/th.yml +1150 -0
- data/data/plates/ua.yml +1672 -0
- data/data/plates/us-ak.yml +763 -0
- data/data/plates/us-al.yml +457 -0
- data/data/plates/us-ar.yml +427 -0
- data/data/plates/us-as.yml +454 -0
- data/data/plates/us-az.yml +430 -0
- data/data/plates/us-ca.yml +892 -0
- data/data/plates/us-co.yml +452 -0
- data/data/plates/us-ct.yml +427 -0
- data/data/plates/us-dc.yml +614 -0
- data/data/plates/us-de.yml +551 -0
- data/data/plates/us-fl.yml +741 -0
- data/data/plates/us-ga.yml +644 -0
- data/data/plates/us-gu.yml +658 -0
- data/data/plates/us-hi.yml +585 -0
- data/data/plates/us-ia.yml +438 -0
- data/data/plates/us-id.yml +531 -0
- data/data/plates/us-il.yml +516 -0
- data/data/plates/us-in.yml +324 -0
- data/data/plates/us-ks.yml +351 -0
- data/data/plates/us-ky.yml +770 -0
- data/data/plates/us-la.yml +568 -0
- data/data/plates/us-ma.yml +379 -0
- data/data/plates/us-md.yml +536 -0
- data/data/plates/us-me.yml +445 -0
- data/data/plates/us-mi.yml +408 -0
- data/data/plates/us-mn.yml +411 -0
- data/data/plates/us-mo.yml +356 -0
- data/data/plates/us-mp.yml +402 -0
- data/data/plates/us-ms.yml +432 -0
- data/data/plates/us-mt.yml +619 -0
- data/data/plates/us-nc.yml +602 -0
- data/data/plates/us-nd.yml +419 -0
- data/data/plates/us-ne.yml +483 -0
- data/data/plates/us-nh.yml +394 -0
- data/data/plates/us-nj.yml +547 -0
- data/data/plates/us-nm.yml +574 -0
- data/data/plates/us-nv.yml +655 -0
- data/data/plates/us-ny.yml +592 -0
- data/data/plates/us-oh.yml +404 -0
- data/data/plates/us-ok.yml +513 -0
- data/data/plates/us-or.yml +392 -0
- data/data/plates/us-pa.yml +506 -0
- data/data/plates/us-pr.yml +507 -0
- data/data/plates/us-ri.yml +445 -0
- data/data/plates/us-sc.yml +605 -0
- data/data/plates/us-sd.yml +428 -0
- data/data/plates/us-tn.yml +471 -0
- data/data/plates/us-tx.yml +535 -0
- data/data/plates/us-ut.yml +384 -0
- data/data/plates/us-va.yml +567 -0
- data/data/plates/us-vi.yml +489 -0
- data/data/plates/us-vt.yml +458 -0
- data/data/plates/us-wa.yml +484 -0
- data/data/plates/us-wi.yml +509 -0
- data/data/plates/us-wv.yml +446 -0
- data/data/plates/us-wy.yml +523 -0
- data/data/plates/va.yml +604 -0
- data/data/plates/za.yml +1141 -0
- data/data/vehicles.json +160653 -105090
- data/lib/vehicles/configuration.rb +18 -2
- data/lib/vehicles/dataset.rb +73 -18
- data/lib/vehicles/fuzzy.rb +115 -0
- data/lib/vehicles/http.rb +48 -0
- data/lib/vehicles/make.rb +36 -6
- data/lib/vehicles/mcp_server.rb +5 -5
- data/lib/vehicles/model.rb +42 -6
- data/lib/vehicles/plates/jurisdiction.rb +32 -0
- data/lib/vehicles/plates/series.rb +291 -0
- data/lib/vehicles/plates/template_fill.rb +188 -0
- data/lib/vehicles/plates/templates.rb +162 -0
- data/lib/vehicles/plates.rb +122 -0
- data/lib/vehicles/providers/hosted_provider.rb +49 -58
- data/lib/vehicles/providers/local_provider.rb +4 -3
- data/lib/vehicles/validators/vehicle_make_validator.rb +3 -1
- data/lib/vehicles/validators/vehicle_model_validator.rb +1 -1
- data/lib/vehicles/version.rb +1 -1
- data/lib/vehicles.rb +53 -16
- data/rakelib/data_refresh.rake +109 -0
- data/rakelib/plates_refresh.rake +29 -0
- data/sig/vehicles.rbs +18 -0
- metadata +174 -2
data/data/plates/ch.yml
ADDED
|
@@ -0,0 +1,1273 @@
|
|
|
1
|
+
# plates/ch.yml — Switzerland (PRD-PLATES gate L1). DRAFT for verification.
|
|
2
|
+
#
|
|
3
|
+
# EVERY format, colour, layout and class claim in this file comes from the
|
|
4
|
+
# consolidated federal law on fedlex.admin.ch, fetched 2026-08-02:
|
|
5
|
+
# * VZV — Verordnung vom 27. Oktober 1976 über die Zulassung von Personen und
|
|
6
|
+
# Fahrzeugen zum Strassenverkehr (Verkehrszulassungsverordnung), SR 741.51,
|
|
7
|
+
# Stand am 1. Januar 2026. Art. 82-87a are THE plate chapter (heading "213
|
|
8
|
+
# Kontrollschilder"), Art. 90-97 the moped chapter, Art. 151 the transitional
|
|
9
|
+
# provisions that date three of the series below.
|
|
10
|
+
# * VVV — Verkehrsversicherungsverordnung vom 20. November 1959, SR 741.31,
|
|
11
|
+
# Stand am 1. Januar 2026. Art. 13-15 Wechselschilder, Art. 16-19 + Anhang 2
|
|
12
|
+
# provisional registration, Art. 20-21 Tagesausweise, Art. 22-26 Kollektiv-
|
|
13
|
+
# Fahrzeugausweise (the dealer-plate regime), Art. 35-37 the moped vignette.
|
|
14
|
+
# * VTS — Verordnung vom 19. Juni 1995 über die technischen Anforderungen an
|
|
15
|
+
# Strassenfahrzeuge, SR 741.41, Stand am 1. Januar 2026. Art. 45 + Anhang 4
|
|
16
|
+
# Ziff. 4 the "CH" distinguishing sign; Art. 96 front-and-rear duty.
|
|
17
|
+
# * WSchG — Wappenschutzgesetz vom 21. Juni 2013, SR 232.21, for the arms.
|
|
18
|
+
#
|
|
19
|
+
# ---------------------------------------------------------------------------
|
|
20
|
+
# THE SIX STRUCTURAL FACTS THAT SHAPE THIS FILE
|
|
21
|
+
# ---------------------------------------------------------------------------
|
|
22
|
+
#
|
|
23
|
+
# 1. THE PLATE BINDS TO THE OWNER, NOT THE VEHICLE — and the law says so in one
|
|
24
|
+
# sentence. Art. 87 Abs. 1 VZV, verbatim: "Die einmal zugeteilte Schildnummer
|
|
25
|
+
# bleibt für den Halter reserviert." (The number once allocated stays reserved
|
|
26
|
+
# FOR THE KEEPER.) Art. 87 Abs. 5 adds that the plates themselves "bleiben
|
|
27
|
+
# Eigentum der Behörde" — they never become the keeper's property, let alone
|
|
28
|
+
# the vehicle's. Three more provisions only make sense on that reading: VVV
|
|
29
|
+
# Art. 13 Abs. 2 issues a Wechselschild "nur für Fahrzeuge desselben Halters
|
|
30
|
+
# und mit Standort im gleichen Kanton"; VZV Art. 94 Abs. 5 lets a deregistered
|
|
31
|
+
# moped's plate be re-allocated "für ein anderes Motorfahrrad des gleichen
|
|
32
|
+
# Halters"; and VZV Art. 74 Abs. 5 gives the keeper 14 days to put another
|
|
33
|
+
# vehicle on the road before the plates must go back ("Lässt der Halter innert
|
|
34
|
+
# 14 Tagen kein anderes Fahrzeug in den Verkehr setzen, so hat er auch die
|
|
35
|
+
# Kontrollschilder unverzüglich zurückzugeben"). Hence `binding: owner`
|
|
36
|
+
# at the top of this file — the field PRD-PLATES §2.2 introduced for exactly
|
|
37
|
+
# this jurisdiction. A vehicle-keyed consumer must not join on a Swiss plate.
|
|
38
|
+
#
|
|
39
|
+
# 2. THE CANTON TABLE IS IN THE ORDINANCE, IT IS CLOSED, AND IT IS 26 ROWS.
|
|
40
|
+
# Art. 84 Abs. 1 VZV: "Jeder Kanton wird mit zwei grossen Buchstaben wie folgt
|
|
41
|
+
# bezeichnet:" followed by the table reproduced in plates/_decode/ch-cantons.yml
|
|
42
|
+
# (ZH BE LU UR SZ OW NW GL ZG FR SO BS BL SH AR AI SG GR AG TG TI VD VS NE GE
|
|
43
|
+
# JU, in the ordinance's own order of precedence). This is the German-Anlage-2
|
|
44
|
+
# case, not the German-district case: small, closed, primary, inlineable. The
|
|
45
|
+
# ONE period fact the table carries is also primary — the Jura row is footnoted
|
|
46
|
+
# "Kanton eingefügt durch Ziff. I der V vom 15. Nov. 1978, in Kraft seit
|
|
47
|
+
# 1. Jan. 1979 (AS 1978 1805)", so JU cannot appear on a plate allocated before
|
|
48
|
+
# 1979 and everything JU decodes to was BE before that.
|
|
49
|
+
#
|
|
50
|
+
# 3. FRONT AND REAR DIFFER, AND THE DIFFERENCE IS THE COATS OF ARMS. This is the
|
|
51
|
+
# single most-asked Swiss plate fact and Art. 85 answers it exactly:
|
|
52
|
+
# Abs. 1 (FRONT plate for Motorwagen; also the single plate for Motoreinachser,
|
|
53
|
+
# land- und forstwirtschaftliche Fahrzeuge and Arbeitsanhänger), verbatim:
|
|
54
|
+
# "sind von links nach rechts die zugeteilten Buchstaben, ein Punkt auf halber
|
|
55
|
+
# Höhe und die Zahlen aufzutragen." — letters, a MID-HEIGHT POINT, numbers.
|
|
56
|
+
# NO ARMS AT ALL on the front plate.
|
|
57
|
+
# Abs. 2 sentence 1 (REAR Hochformat for Motorwagen; and the plates for
|
|
58
|
+
# Motorräder, Kleinmotorräder, Leicht-, Klein- und dreirädrige Motorfahrzeuge,
|
|
59
|
+
# Transport- und Ausnahmeanhänger): "müssen im oberen Teil von links nach
|
|
60
|
+
# rechts das eidgenössische Wappen, die Kantonsbuchstaben und das
|
|
61
|
+
# Kantonswappen, im unteren Teil die Kontrollnummer tragen." — FEDERAL arms
|
|
62
|
+
# left, canton letters centre, CANTON arms right, number on the second line.
|
|
63
|
+
# Abs. 2 sentence 2 (REAR Langformat for Motorwagen and their trailers): "muss
|
|
64
|
+
# von links nach rechts das eidgenössische Wappen, die Kantonsbuchstaben,
|
|
65
|
+
# einen Punkt auf halber Höhe, die Kontrollnummer und das Kantonswappen
|
|
66
|
+
# tragen." — federal arms, letters, point, number, CANTON ARMS LAST.
|
|
67
|
+
# Abs. 3 (military trailers): "Das Wappen fällt weg."
|
|
68
|
+
# Abs. 4 + Art. 84 Abs. 4 (diplomatic/consular): the sign field replaces the
|
|
69
|
+
# arms and the plates "enthalten keine Wappen".
|
|
70
|
+
# Art. 84 Abs. 3 (federal plates): "tragen nur das eidgenössische Wappen".
|
|
71
|
+
# Art. 83 Abs. 2 governs how they are made: "Wappen, Buchstaben und Zahlen sind
|
|
72
|
+
# auf 1,5 mm erhaben gepresst. Die Wappen müssen der offiziellen Gestaltung
|
|
73
|
+
# entsprechen." Every series below carries the placement in
|
|
74
|
+
# `design.layout_front` / `design.layout_rear` so the render layer can lay out
|
|
75
|
+
# the emblem slots without re-reading the statute, and `rear_differs: true`
|
|
76
|
+
# where Art. 85 makes them differ.
|
|
77
|
+
#
|
|
78
|
+
# 4. THE ARMS CANNOT BE LICENSED — so §3's placeholder rule is not a caution here,
|
|
79
|
+
# it is the only lawful option. WSchG Art. 8 Abs. 1: "Das Schweizerwappen, die
|
|
80
|
+
# Wappen der Kantone, Bezirke, Kreise und Gemeinden ... dürfen nur von dem
|
|
81
|
+
# Gemeinwesen, zu dem sie gehören, gebraucht werden." Abs. 3: "Die Zeichen nach
|
|
82
|
+
# den Absätzen 1 und 2 können nicht lizenziert und nicht übertragen werden."
|
|
83
|
+
# There is therefore no clean-licence route to the exact artwork for ANY of the
|
|
84
|
+
# 27 arms (federal + 26 cantonal) — PRD-PLATES §6's "affirmatively clean per
|
|
85
|
+
# emblem" exit does not exist in Switzerland. Recorded honestly, and NOT read
|
|
86
|
+
# as legal advice: WSchG Art. 8 Abs. 4 lit. a does permit use "als Abbildung in
|
|
87
|
+
# Wörterbüchern, Nachschlagewerken, wissenschaftlichen und ähnlichen Werken",
|
|
88
|
+
# which is an encyclopedia-shaped exception a lawyer should look at before the
|
|
89
|
+
# site ships anything but placeholders. Until then: placeholders everywhere.
|
|
90
|
+
#
|
|
91
|
+
# 5. THERE IS NO EURO BAND, AND THE "CH" IS A STICKER, NOT PART OF THE PLATE.
|
|
92
|
+
# Nothing in VZV Art. 82-87a mentions a national band, a flag field or an EU
|
|
93
|
+
# strip. The distinguishing sign lives in a different ordinance and a different
|
|
94
|
+
# object: VTS Art. 45 Abs. 1 — "Motorfahrzeuge und Anhänger, die ins Ausland
|
|
95
|
+
# fahren, müssen hinten ein Landeszeichen nach Anhang 4 tragen" — and VTS
|
|
96
|
+
# Anhang 4 Ziff. 4: "Das Landeszeichen setzt sich aus den zwei lateinischen
|
|
97
|
+
# grossen Buchstaben «CH» zusammen. Sie müssen schwarz auf einer elliptischen
|
|
98
|
+
# weissen Fläche angebracht sein, deren Hauptachse waagrecht liegt", minimum
|
|
99
|
+
# ellipse 175 x 115 mm, letters 80 mm high, 40 mm wide, 10 mm stroke. It is
|
|
100
|
+
# required only for journeys abroad and is carried in `common.country_sign`,
|
|
101
|
+
# never in a series' `design.band`, which is `{ side: none }` everywhere.
|
|
102
|
+
#
|
|
103
|
+
# 6. THE PRINTED SEPARATOR IS A GLYPH THIS DATASET CANNOT EMIT — stated up front
|
|
104
|
+
# because it is the one place this file departs from what the plate shows.
|
|
105
|
+
# Art. 85 Abs. 1 and Abs. 2 prescribe "ein Punkt auf halber Höhe" between the
|
|
106
|
+
# canton letters and the number on every single-line plate. A mid-height point
|
|
107
|
+
# is U+00B7 MIDDLE DOT; U+00B7 is in _meta/separators.yml's FORGIVING set but
|
|
108
|
+
# NOT in its EMITTED set, so writing it would be a lint failure under
|
|
109
|
+
# PRD-PLATES §2.6, and rightly: the dataset commits to writing only "-" and
|
|
110
|
+
# " ". Two consequences, both benign:
|
|
111
|
+
# (a) `pattern` spells the gap as a SPACE — which is also literally correct
|
|
112
|
+
# for the two-line Hochformat and motorcycle plates, where Art. 85 Abs. 2
|
|
113
|
+
# puts the letters and the number on different lines and there is no
|
|
114
|
+
# point at all;
|
|
115
|
+
# (b) every `regex` accepts `[- ]?` at that position — hyphen, space, or
|
|
116
|
+
# nothing — and a §2.6-conformant consumer that strips the forgiving set
|
|
117
|
+
# maps a real "ZH·123456" onto "ZH123456", which the separator-free twin
|
|
118
|
+
# of these regexes matches exactly. The contract holds; only the printed
|
|
119
|
+
# glyph is unrepresentable. See the dossier for the amendment this file
|
|
120
|
+
# recommends (add U+00B7 to `forgiving` explicitly — it is already there —
|
|
121
|
+
# and record the Swiss point in `never_separator_note`'s neighbourhood as
|
|
122
|
+
# a KNOWN emitted-set gap rather than leaving it undocumented).
|
|
123
|
+
#
|
|
124
|
+
# ---------------------------------------------------------------------------
|
|
125
|
+
# REGEX POLICY (PRD-PLATES §2.7 tiers), applied consistently below
|
|
126
|
+
# ---------------------------------------------------------------------------
|
|
127
|
+
# regex the lint-round-trippable printed form: [A-Z]{2} for the
|
|
128
|
+
# canton, `[- ]?` for the point, and 1-6 digits. The SIX-DIGIT
|
|
129
|
+
# bound is the only number claim in this file that is NOT in
|
|
130
|
+
# the ordinance — see the gap note on `common.numbering`.
|
|
131
|
+
# regex_strict the sourced narrowing: the 26 canton codes of Art. 84 Abs. 1
|
|
132
|
+
# as a literal alternation, plus no-leading-zeros where
|
|
133
|
+
# Art. 84 Abs. 2's "beginnt ... in der Regel mit der Zahl 1"
|
|
134
|
+
# supports it (flagged as an INFERENCE, not a quotation).
|
|
135
|
+
# regex_statutory the outer legal bound: the ordinance caps NOTHING, so the
|
|
136
|
+
# statutory twin drops the digit ceiling entirely — and, for
|
|
137
|
+
# the U and Z plates, admits the marking letter in any of the
|
|
138
|
+
# positions the ordinance leaves open, because it prescribes
|
|
139
|
+
# the LETTER and not its place.
|
|
140
|
+
jurisdiction: ch
|
|
141
|
+
authority:
|
|
142
|
+
name: Bundesamt für Strassen (ASTRA) / kantonale Strassenverkehrsämter — Verkehrszulassungsverordnung (VZV)
|
|
143
|
+
url: "https://www.fedlex.admin.ch/eli/cc/1976/2423_2423_2423/de"
|
|
144
|
+
binding: owner
|
|
145
|
+
binding_note: >-
|
|
146
|
+
Art. 87 Abs. 1 VZV: "Die einmal zugeteilte Schildnummer bleibt für den Halter
|
|
147
|
+
reserviert." The plate is allocated to the KEEPER and follows the keeper, not
|
|
148
|
+
the vehicle; Art. 87 Abs. 5 keeps ownership of the physical plate with the
|
|
149
|
+
authority. This is the jurisdiction PRD-PLATES §2.4 names when it introduces
|
|
150
|
+
`binding:`; every series in this file inherits `owner` unless it says otherwise.
|
|
151
|
+
instrument:
|
|
152
|
+
citation: "Verordnung vom 27. Oktober 1976 über die Zulassung von Personen und Fahrzeugen zum Strassenverkehr (Verkehrszulassungsverordnung, VZV), SR 741.51, Stand am 1. Januar 2026"
|
|
153
|
+
ausfertigungsdatum: "1976-10-27"
|
|
154
|
+
entry_in_force: "1977-01-01"
|
|
155
|
+
stand: "2026-01-01"
|
|
156
|
+
companion_instruments:
|
|
157
|
+
- "Verkehrsversicherungsverordnung vom 20. November 1959 (VVV), SR 741.31, Stand am 1. Januar 2026"
|
|
158
|
+
- "Verordnung vom 19. Juni 1995 über die technischen Anforderungen an Strassenfahrzeuge (VTS), SR 741.41, Stand am 1. Januar 2026"
|
|
159
|
+
- "Bundesgesetz vom 21. Juni 2013 über den Schutz des Schweizerwappens und anderer öffentlicher Zeichen (Wappenschutzgesetz, WSchG), SR 232.21"
|
|
160
|
+
source: "https://www.fedlex.admin.ch/eli/cc/1976/2423_2423_2423/de # front matter: 'vom 27. Oktober 1976 (Stand am 1. Januar 2026)', SR-Nummer 741.51; dateEntryInForce 1977-01-01 per fedlex.data.admin.ch"
|
|
161
|
+
|
|
162
|
+
# ---------------------------------------------------------------------------
|
|
163
|
+
# Jurisdiction-wide facts, cited once and referenced per series.
|
|
164
|
+
# ---------------------------------------------------------------------------
|
|
165
|
+
common:
|
|
166
|
+
canton_codes: [AG, AI, AR, BE, BL, BS, FR, GE, GL, GR, JU, LU, NE, NW, OW, SG, SH, SO, SZ, TG, TI, UR, VD, VS, ZG, ZH]
|
|
167
|
+
canton_codes_note: >-
|
|
168
|
+
The 26 codes of Art. 84 Abs. 1 VZV, sorted alphabetically here for regex
|
|
169
|
+
derivation; the ordinance prints them in the constitutional order of
|
|
170
|
+
precedence (ZH BE LU UR SZ OW NW GL ZG FR SO BS BL SH AR AI SG GR AG TG TI VD
|
|
171
|
+
VS NE GE JU), which plates/_decode/ch-cantons.yml preserves. Closed list: the
|
|
172
|
+
ordinance says "Jeder Kanton wird mit zwei grossen Buchstaben wie folgt
|
|
173
|
+
bezeichnet" and then enumerates, so there is no open tail and no delegation —
|
|
174
|
+
the contrast with § 9 Abs. 3 FZV (Germany, ~400 codes in the Bundesanzeiger)
|
|
175
|
+
could not be sharper.
|
|
176
|
+
canton_codes_source: "https://www.fedlex.admin.ch/eli/cc/1976/2423_2423_2423/de # Art. 84 Abs. 1 VZV, the 26-row table, with the Jura footnote 'Kanton eingefügt durch Ziff. I der V vom 15. Nov. 1978, in Kraft seit 1. Jan. 1979 (AS 1978 1805)'"
|
|
177
|
+
numbering:
|
|
178
|
+
rule: >-
|
|
179
|
+
Art. 84 Abs. 2 VZV, verbatim: "Die Nummerierung beginnt für Motorwagen,
|
|
180
|
+
Motoreinachser und Anhänger einerseits und Motorräder, Klein- und
|
|
181
|
+
dreirädrige Motorfahrzeuge anderseits separat sowie für jede Schilderart
|
|
182
|
+
nach Grundfarbe und besonderer Kennzeichnung getrennt in der Regel mit der
|
|
183
|
+
Zahl 1."
|
|
184
|
+
consequences:
|
|
185
|
+
- "Number spaces are per CANTON x per BACKGROUND COLOUR x per SPECIAL MARKING, and additionally split between the motorcar/single-axle/trailer family and the motorcycle/small/three-wheeler family. A number therefore repeats across series and colours: 'ZH 12345' can exist simultaneously as a white car plate, a light-blue work-vehicle plate and a light-green agricultural plate."
|
|
186
|
+
- "TRAILERS SHARE THE MOTORCAR NUMBER SPACE. Art. 84 Abs. 2 groups 'Motorwagen, Motoreinachser und Anhänger' as one series, so a Swiss trailer registration is not distinguishable from a car registration by its string — only by the plate it is printed on."
|
|
187
|
+
- "No leading zeros: the numbering BEGINS at 1 and counts upward. Recorded as an INFERENCE from 'in der Regel mit der Zahl 1', not as a quotation of a no-leading-zero rule — 'in der Regel' expressly leaves room for exceptions. It lives in regex_strict, never in regex."
|
|
188
|
+
digit_ceiling: null
|
|
189
|
+
digit_ceiling_note: >-
|
|
190
|
+
RECORDED GAP, and the most important one in this file. NOTHING in the VZV,
|
|
191
|
+
the VVV or the VTS caps the number of digits in a Kontrollnummer. Art. 85
|
|
192
|
+
Abs. 5 delegates the typography — "Das ASTRA bestimmt das Schriftbild und
|
|
193
|
+
die Abmessungen für Buchstaben und Zahlen" — and the ASTRA determination was
|
|
194
|
+
not retrievable from any government source in this pass. Every `regex` below
|
|
195
|
+
therefore uses \d{1,6} as a PRACTICAL bound (six digits is the widest form
|
|
196
|
+
observed on issued plates, in the largest cantons), and every
|
|
197
|
+
`regex_statutory` drops the ceiling to \d+ because that is the honest outer
|
|
198
|
+
legal bound. A verifier who pins the ASTRA rule should tighten `regex` and
|
|
199
|
+
delete this note.
|
|
200
|
+
source: "https://www.fedlex.admin.ch/eli/cc/1976/2423_2423_2423/de # Art. 84 Abs. 2 (separate numbering per colour, marking and vehicle family) and Art. 85 Abs. 5 (ASTRA sets the script and dimensions)"
|
|
201
|
+
colours:
|
|
202
|
+
rule: >-
|
|
203
|
+
Art. 82 Abs. 1 VZV is an exhaustive list of the six background colours, and
|
|
204
|
+
it is the whole Swiss colour system: "Es werden abgegeben: a. Kontrollschilder
|
|
205
|
+
mit weissem Grund und schwarzer Schrift für Motorwagen, Motorräder, Klein-
|
|
206
|
+
und dreirädrige Motorfahrzeuge, Motoreinachser und Anhänger; b. ... mit
|
|
207
|
+
hellblauem Grund ... für Arbeitsfahrzeuge; c. ... mit hellbraunem Grund ...
|
|
208
|
+
für Ausnahmefahrzeuge; d. ... mit hellgrünem Grund ... für land- und
|
|
209
|
+
forstwirtschaftliche Fahrzeuge; e. ... mit gelbem Grund ... für
|
|
210
|
+
Kleinmotorräder und Leichtmotorfahrzeuge; f. Kontrollschilder mit
|
|
211
|
+
schattenschwarzem Grund und weisser Schrift für Armeefahrzeuge."
|
|
212
|
+
hex_basis_note: >-
|
|
213
|
+
The ordinance NAMES colours and gives no RAL or RGB value anywhere — the
|
|
214
|
+
same situation de.yml records for the German green and red plates. Every hex
|
|
215
|
+
below is therefore `hex_basis: observed`, chosen as the standard web colour
|
|
216
|
+
for the German colour word, and must not be treated as a spec value.
|
|
217
|
+
source: "https://www.fedlex.admin.ch/eli/cc/1976/2423_2423_2423/de # Art. 82 Abs. 1 lit. a-f"
|
|
218
|
+
special_markings:
|
|
219
|
+
rule: >-
|
|
220
|
+
Art. 82 Abs. 2 VZV, the closed list of specially-marked plates: "Besonders
|
|
221
|
+
gekennzeichnet werden: a. die Schilder für die provisorische Zulassung nach
|
|
222
|
+
Artikel 18 VVV; b. ...; c. die Händlerschilder mit dem Buchstaben «U»;
|
|
223
|
+
d. die Schilder für Fahrzeuge von Haltern mit diplomatischen oder
|
|
224
|
+
konsularischen Vorrechten und Immunitäten mit dem Zeichen «CD», «CC» oder
|
|
225
|
+
«AT» auf dunkelgrünem oder dunkelblauem Feld."
|
|
226
|
+
lit_b_repealed: "Aufgehoben durch Ziff. I der V vom 11. April 2001, mit Wirkung seit 1. Juni 2001 (AS 2001 1387) — the Mietwagen (rental-car) marking; modelled as ch-rental-1977, ENDED 2001."
|
|
227
|
+
consequence: >-
|
|
228
|
+
Anything NOT on this list carries an ordinary, unmarked plate. That is a
|
|
229
|
+
sourced NEGATIVE and it kills four series a naive reading would invent:
|
|
230
|
+
Tagesschilder (day plates, VVV Art. 20) are unmarked ordinary plates;
|
|
231
|
+
Wechselschilder (VVV Art. 13-15) are unmarked ordinary plates; police and
|
|
232
|
+
cantonal government fleets carry ordinary cantonal plates; and federal
|
|
233
|
+
administration vehicles are expressly registered "mit kantonalen
|
|
234
|
+
Kontrollschildern" (VFBF Art. 24 Abs. 1). Each is recorded as a variant or a
|
|
235
|
+
note, never as a series.
|
|
236
|
+
source: "https://www.fedlex.admin.ch/eli/cc/1976/2423_2423_2423/de # Art. 82 Abs. 2 lit. a-d and the footnote repealing lit. b"
|
|
237
|
+
dimensions:
|
|
238
|
+
rule: >-
|
|
239
|
+
Art. 83 Abs. 3 VZV: "Die Kontrollschilder weisen folgende Formate auf, wobei
|
|
240
|
+
die Ecken mit einem Radius von 1 cm abgerundet sind: a. Das vordere Schild
|
|
241
|
+
für Motorwagen sowie das Schild für Motoreinachser, land- und
|
|
242
|
+
forstwirtschaftliche Fahrzeuge und Arbeitsanhänger haben eine Länge von 30 cm
|
|
243
|
+
und eine Höhe von 8 cm. b. Das hintere Schild für Motorwagen sowie das Schild
|
|
244
|
+
für Transportanhänger an Motorwagen haben entweder eine Länge von 30 cm und
|
|
245
|
+
eine Höhe von 16 cm (Hochformat) oder eine Länge von 50 cm und eine Höhe von
|
|
246
|
+
11 cm (Langformat). c. Das Schild für Motorräder, Klein- und dreirädrige
|
|
247
|
+
Motorfahrzeuge sowie für ihre Anhänger hat eine Länge von 18 cm und eine Höhe
|
|
248
|
+
von 14 cm. d. Das Schild für Kleinmotorräder und Leichtmotorfahrzeuge sowie
|
|
249
|
+
für ihre Anhänger hat eine Länge von 10 cm und eine Höhe von 14 cm."
|
|
250
|
+
front_motorcar: { w: 300, h: 80, unit: mm, corner_radius_mm: 10 }
|
|
251
|
+
rear_motorcar_hochformat: { w: 300, h: 160, unit: mm, corner_radius_mm: 10 }
|
|
252
|
+
rear_motorcar_langformat: { w: 500, h: 110, unit: mm, corner_radius_mm: 10 }
|
|
253
|
+
motorcycle: { w: 180, h: 140, unit: mm, corner_radius_mm: 10 }
|
|
254
|
+
light_and_small_motorcycle: { w: 100, h: 140, unit: mm, corner_radius_mm: 10 }
|
|
255
|
+
military_trailer: "Art. 83 Abs. 5: the two-line plate takes the motorcycle format, the single-line plate the front motorcar format"
|
|
256
|
+
diplomatic: "Art. 83 Abs. 4: for vehicles of keepers with diplomatic or consular privileges and immunities the ASTRA may set deviating formats"
|
|
257
|
+
source: "https://www.fedlex.admin.ch/eli/cc/1976/2423_2423_2423/de # Art. 83 Abs. 3 lit. a-d, Abs. 4, Abs. 5"
|
|
258
|
+
material:
|
|
259
|
+
rule: >-
|
|
260
|
+
Art. 83 Abs. 1 VZV: "Die Kontrollschilder bestehen aus korrosionsbeständigem
|
|
261
|
+
Metall; sie können mit einem rückstrahlenden Belag versehen sein. Das ASTRA
|
|
262
|
+
kann andere geeignete Materialien zulassen und Minimalanforderungen für das
|
|
263
|
+
rückstrahlende Material festlegen." Art. 83 Abs. 2: "Wappen, Buchstaben und
|
|
264
|
+
Zahlen sind auf 1,5 mm erhaben gepresst. Die Wappen müssen der offiziellen
|
|
265
|
+
Gestaltung entsprechen."
|
|
266
|
+
retroreflective_regime: >-
|
|
267
|
+
RETROREFLECTION IS OPTIONAL AND CANTONAL, which is unusual in Europe and is
|
|
268
|
+
the reason `finish` is `retroreflective-optional` throughout. Art. 87a VZV:
|
|
269
|
+
"Die Kantone stellen Schilder mit reflektierendem Belag zur Verfügung. Sie
|
|
270
|
+
entscheiden, ob solche Schilder für alle Fahrzeuge oder nur auf Ersuchen des
|
|
271
|
+
Halters abgegeben oder umgetauscht werden." Art. 87a was INSERTED by the
|
|
272
|
+
amendment of 15 April 1987, in force 1 May 1987 (AS 1987 628) — see the
|
|
273
|
+
period note on ch-standard. The single exception is the moped plate, where
|
|
274
|
+
Art. 94 Abs. 6 makes a yellow reflective coating mandatory.
|
|
275
|
+
embossing: "raised 1.5 mm — arms, letters and numbers alike (Art. 83 Abs. 2); Swiss plates are pressed metal, not printed"
|
|
276
|
+
source: "https://www.fedlex.admin.ch/eli/cc/1976/2423_2423_2423/de # Art. 83 Abs. 1-2 and Art. 87a"
|
|
277
|
+
font:
|
|
278
|
+
name: null
|
|
279
|
+
statutory_basis: >-
|
|
280
|
+
Art. 85 Abs. 5 VZV, verbatim and in its entirety: "Das ASTRA bestimmt das
|
|
281
|
+
Schriftbild und die Abmessungen für Buchstaben und Zahlen." No typeface is
|
|
282
|
+
named in the ordinance, no drawing is annexed to it, and the ASTRA's
|
|
283
|
+
determination was not retrievable from any government source in this pass.
|
|
284
|
+
licence: >-
|
|
285
|
+
NO LICENSABLE FONT IS MANDATED — the same finding the EU dossier records for
|
|
286
|
+
the UK, Germany and Spain, reached here by a different route: Switzerland
|
|
287
|
+
does not even publish a Schriftmuster in the ordinance, it delegates. Per
|
|
288
|
+
PRD-PLATES §6 the render layer therefore uses the schematic fallback and
|
|
289
|
+
records the substitution; no third-party "Swiss plate font" TTF is touched.
|
|
290
|
+
gap: "the ASTRA Schriftbild determination is a RECORDED GAP — unpinned, and the reason no character heights or stroke widths appear in this file"
|
|
291
|
+
source: "https://www.fedlex.admin.ch/eli/cc/1976/2423_2423_2423/de # Art. 85 Abs. 5"
|
|
292
|
+
country_sign:
|
|
293
|
+
letters: "CH"
|
|
294
|
+
shape: ellipse
|
|
295
|
+
background: "#FFFFFF"
|
|
296
|
+
foreground: "#000000"
|
|
297
|
+
min_ellipse: { w: 175, h: 115, unit: mm }
|
|
298
|
+
min_letters: { h: 80, w: 40, stroke: 10, unit: mm }
|
|
299
|
+
rule: >-
|
|
300
|
+
VTS Art. 45 Abs. 1: "Motorfahrzeuge und Anhänger, die ins Ausland fahren,
|
|
301
|
+
müssen hinten ein Landeszeichen nach Anhang 4 tragen." VTS Anhang 4 Ziff. 4:
|
|
302
|
+
"Das Landeszeichen setzt sich aus den zwei lateinischen grossen Buchstaben
|
|
303
|
+
«CH» zusammen. Sie müssen schwarz auf einer elliptischen weissen Fläche
|
|
304
|
+
angebracht sein, deren Hauptachse waagrecht liegt." — with the minimum
|
|
305
|
+
dimensions above. It is a SEPARATE OBJECT stuck on the vehicle, not a field
|
|
306
|
+
on the plate; Switzerland has no Euro band and no national strip.
|
|
307
|
+
source: "https://www.fedlex.admin.ch/eli/cc/1995/4425_4425_4425/de # VTS Art. 45 Abs. 1 and Anhang 4 Ziff. 4 (Mindestmasse: Höhe der Ellipse 11,5 cm, Breite 17,5 cm, Höhe der Buchstaben 8 cm, Breite 4 cm, Strichbreite 1 cm)"
|
|
308
|
+
display:
|
|
309
|
+
motorcar: "VTS Art. 96: 'Motorwagen müssen vorn und hinten das für diese Stellen bestimmte Kontrollschild tragen.' — front AND rear, and the two are physically different plates (see structural fact 3)"
|
|
310
|
+
motorcycle: "VTS Art. 136 Abs. 4: 'Bei Motorrädern, Leicht-, Klein- und dreirädrigen Motorfahrzeugen muss das Kontrollschild hinten angebracht werden.' — rear only, one plate"
|
|
311
|
+
agricultural: "VTS Art. 162 Abs. 1: agricultural and forestry motor vehicles carry ONE plate, front or rear as convenient; agricultural EXCEPTIONAL vehicles must carry one front and one rear"
|
|
312
|
+
single_axle: "VTS Art. 167: 'Das Kontrollschild muss gut sichtbar angebracht sein.'"
|
|
313
|
+
placement: "VTS Art. 45 Abs. 2: readable and as near vertical as possible; tilt at most 30° up / 15° down; lower edge at least 0.20 m and upper edge at most 1.50 m (0.10 m lower-edge minimum for M and N class front plates); the rear plate readable within 30° either side of the longitudinal axis"
|
|
314
|
+
source: "https://www.fedlex.admin.ch/eli/cc/1995/4425_4425_4425/de # VTS Art. 45 Abs. 2, Art. 96, Art. 136 Abs. 4, Art. 162 Abs. 1, Art. 167"
|
|
315
|
+
arms:
|
|
316
|
+
federal: { present: true, rendered: placeholder }
|
|
317
|
+
cantonal: { present: true, rendered: placeholder, count: 26 }
|
|
318
|
+
rule: "Art. 83 Abs. 2 VZV: 'Die Wappen müssen der offiziellen Gestaltung entsprechen.' Art. 85 Abs. 1-4 fixes WHERE they go (structural fact 3)."
|
|
319
|
+
licence_posture: >-
|
|
320
|
+
WSchG Art. 8 Abs. 1 reserves the Swiss and cantonal arms to the polity they
|
|
321
|
+
belong to; Abs. 3: "Die Zeichen nach den Absätzen 1 und 2 können nicht
|
|
322
|
+
lizenziert und nicht übertragen werden." There is no licensable route to the
|
|
323
|
+
artwork, so PRD-PLATES §3's placeholder is mandatory rather than merely
|
|
324
|
+
prudent. Abs. 4 lit. a's reference-work exception is noted, not relied on.
|
|
325
|
+
source: "https://www.fedlex.admin.ch/eli/cc/2015/613/20250701/de # WSchG Art. 8 Abs. 1, 3, 4 lit. a"
|
|
326
|
+
not_modelled:
|
|
327
|
+
- "EXPORT PLATES DO NOT EXIST. Art. 82 Abs. 1-2 VZV is exhaustive and has no export series; a vehicle permanently leaving Switzerland is simply deregistered. The nearest regime is the PROVISIONAL immatriculation of VVV Art. 16-19 (vehicles whose Standort is in Switzerland only for a limited time), which is modelled as ch-provisional. Sourced negative, not an omission."
|
|
328
|
+
- "HISTORIC / VETERAN PLATES DO NOT EXIST as a plate class. Art. 82's colour list has no historic entry and no VZV or VTS provision creates one; Swiss veteran vehicles carry ordinary white plates. (The administrative 'Veteranenfahrzeug' status is an entry in the Fahrzeugausweis; its federal basis was NOT located in the VZV or VTS text fetched here and is a recorded gap.) This is the only L1 core class Switzerland genuinely lacks."
|
|
329
|
+
- "TAXI PLATES DO NOT EXIST. Professional passenger transport is authorised on the driving licence (VZV Art. 25), not on the plate."
|
|
330
|
+
- "CANTONAL NUMBER AUCTIONS AND CHOSEN NUMBERS are cantonal law, outside the federal instruments read here, and are not modelled (PRD-PLATES §2.5 scope discipline)."
|
|
331
|
+
|
|
332
|
+
region_encoding_tables:
|
|
333
|
+
cantons:
|
|
334
|
+
reference: "plates/_decode/ch-cantons.yml"
|
|
335
|
+
inline_codes: [AG, AI, AR, BE, BL, BS, FR, GE, GL, GR, JU, LU, NE, NW, OW, SG, SH, SO, SZ, TG, TI, UR, VD, VS, ZG, ZH]
|
|
336
|
+
note: >-
|
|
337
|
+
26 rows, closed, primary, and small enough for PRD-PLATES §2.4's "inline
|
|
338
|
+
table" branch — the codes are inlined here for regex derivation and the full
|
|
339
|
+
table with German/French/Italian names and the Jura period row lives in the
|
|
340
|
+
decode file. Two decode traps a parse API must carry: (1) the two-letter
|
|
341
|
+
canton code is fixed-width, so there is no maximal-munch problem of the
|
|
342
|
+
Spanish kind; (2) the code identifies the canton of the KEEPER's Standort
|
|
343
|
+
(VZV Art. 77), not where the vehicle is, and it follows the keeper on a
|
|
344
|
+
move — VZV Art. 120 (Standortwechsel) sends the annulled certificate and the
|
|
345
|
+
plates back to the former canton when a vehicle is admitted in another, and
|
|
346
|
+
VZV Art. 95 Abs. 2 states the moped equivalent expressly ("Wird der Standort
|
|
347
|
+
eines Motorfahrrads in einen andern Kanton verlegt, so ist beim neuen
|
|
348
|
+
Standortkanton ein neues Kontrollschild einzuholen").
|
|
349
|
+
source: "https://www.fedlex.admin.ch/eli/cc/1976/2423_2423_2423/de # Art. 84 Abs. 1"
|
|
350
|
+
|
|
351
|
+
series:
|
|
352
|
+
|
|
353
|
+
# =========================================================================
|
|
354
|
+
# THE STANDARD SERIES — white ground, black script, canton letters + number.
|
|
355
|
+
# =========================================================================
|
|
356
|
+
- id: ch-standard
|
|
357
|
+
class: standard
|
|
358
|
+
categories: [car, van, truck, bus]
|
|
359
|
+
period: { start: 1977 }
|
|
360
|
+
period_evidence: instrument-in-force
|
|
361
|
+
matching: strict
|
|
362
|
+
format:
|
|
363
|
+
pattern: "LL 999999"
|
|
364
|
+
regex: '\A[A-Z]{2}[- ]?\d{1,6}\z'
|
|
365
|
+
regex_strict: '\A(?:AG|AI|AR|BE|BL|BS|FR|GE|GL|GR|JU|LU|NE|NW|OW|SG|SH|SO|SZ|TG|TI|UR|VD|VS|ZG|ZH)[- ]?[1-9]\d{0,5}\z'
|
|
366
|
+
regex_statutory: '\A[A-Z]{2}[- ]?\d+\z'
|
|
367
|
+
charset:
|
|
368
|
+
letters: "exactly two, and only the 26 canton codes of Art. 84 Abs. 1 VZV"
|
|
369
|
+
notes: >-
|
|
370
|
+
The letter pair is NOT a free alphabet: Art. 84 Abs. 1 enumerates the 26
|
|
371
|
+
codes and nothing else may appear. regex keeps [A-Z]{2} only because the
|
|
372
|
+
lint round-trips it against the pattern's L placeholders; regex_strict
|
|
373
|
+
carries the enumeration, which is the sourced grammar.
|
|
374
|
+
progression: >-
|
|
375
|
+
Art. 84 Abs. 2: numbering starts at 1 per canton, per background colour,
|
|
376
|
+
per special marking, and separately for the motorcar/single-axle/trailer
|
|
377
|
+
family. Consequence for era inference: a Swiss plate encodes NO date
|
|
378
|
+
whatsoever — only the keeper's canton — and a low number means an early
|
|
379
|
+
allocation only within one canton's one colour, never nationally.
|
|
380
|
+
separator_note: >-
|
|
381
|
+
Printed as "ein Punkt auf halber Höhe" (Art. 85 Abs. 1) on the front and
|
|
382
|
+
long-format plates, and as a LINE BREAK on the Hochformat rear plate. The
|
|
383
|
+
pattern spells a space; the regex accepts hyphen, space or nothing. See
|
|
384
|
+
structural fact 6.
|
|
385
|
+
design:
|
|
386
|
+
plate: { w: 300, h: 80, unit: mm, note: "FRONT plate, corners rounded r=10 mm" }
|
|
387
|
+
plate_variants:
|
|
388
|
+
- { w: 300, h: 160, unit: mm, note: "REAR Hochformat (two-line)" }
|
|
389
|
+
- { w: 500, h: 110, unit: mm, note: "REAR Langformat (single-line)" }
|
|
390
|
+
background: { color: "#FFFFFF", finish: retroreflective-optional, hex_basis: observed, spec_note: "Art. 82 Abs. 1 lit. a names 'weissem Grund und schwarzer Schrift' with no RAL/RGB value; Art. 87a leaves retroreflection to the cantons" }
|
|
391
|
+
foreground: "#000000"
|
|
392
|
+
band: { side: none }
|
|
393
|
+
band_note: "no Euro band, no national strip — see structural fact 5; the 'CH' oval is a separate sticker under VTS Art. 45 Abs. 1 and is required only for journeys abroad"
|
|
394
|
+
emblem:
|
|
395
|
+
present: true
|
|
396
|
+
rendered: placeholder
|
|
397
|
+
note: "federal arms + the arms of the allocating canton, on the REAR plate only; WSchG Art. 8 Abs. 3 makes them unlicensable, so the placeholder rule is mandatory (structural fact 4)"
|
|
398
|
+
layout_front: "left to right: canton letters, a point at half height, the number. NO ARMS (Art. 85 Abs. 1)."
|
|
399
|
+
layout_rear: "Hochformat — upper part left to right: federal arms, canton letters, canton arms; lower part: the number. Langformat — left to right: federal arms, canton letters, point at half height, number, canton arms (Art. 85 Abs. 2)."
|
|
400
|
+
rear_differs: true
|
|
401
|
+
rear_differs_note: >-
|
|
402
|
+
TRUE, and structurally so: the Swiss front plate is 300x80 mm with no arms
|
|
403
|
+
at all, the rear plate is 300x160 or 500x110 mm and carries two coats of
|
|
404
|
+
arms. This is the UK-style asymmetry PRD-PLATES §2.2 introduced
|
|
405
|
+
`rear_differs` for, arriving in a stronger form than in the UK — there the
|
|
406
|
+
difference is colour, here it is size, layout and emblem content.
|
|
407
|
+
display: "front and rear (VTS Art. 96)"
|
|
408
|
+
region_encoding: "plates/_decode/ch-cantons.yml"
|
|
409
|
+
region_encoding_mechanism: >-
|
|
410
|
+
The two letters are the canton of the keeper's Standort — "der Ort, wo das
|
|
411
|
+
Fahrzeug nach Gebrauch in der Regel für die Nacht abgestellt wird"
|
|
412
|
+
(VZV Art. 77 Abs. 1), with the keeper's domicile deemed the Standort in the
|
|
413
|
+
three cases of Art. 77 Abs. 2. Closed 26-row table, primary, in Art. 84
|
|
414
|
+
Abs. 1 itself. Because the plate binds to the keeper, the code decodes the
|
|
415
|
+
KEEPER's canton and not the vehicle's location or origin.
|
|
416
|
+
variants:
|
|
417
|
+
- class: standard
|
|
418
|
+
note: >-
|
|
419
|
+
WECHSELSCHILDER (interchangeable plates, VVV Art. 13-15). One plate or
|
|
420
|
+
plate pair serves TWO vehicles of the same keeper with Standort in the
|
|
421
|
+
same canton — "Wechselschilder werden für höchstens zwei Fahrzeuge
|
|
422
|
+
erteilt. Diese Einschränkung gilt nicht für Arbeitsmotorwagen und
|
|
423
|
+
Anhänger" (Art. 13 Abs. 2) — and only that vehicle currently carrying the
|
|
424
|
+
plate may be used on public roads (Art. 14 Abs. 1). Motor vehicles pair
|
|
425
|
+
only with motor vehicles and trailers only with trailers, and both must
|
|
426
|
+
be able to carry the same KIND of plate (Art. 13 Abs. 3). A SUB-ENTRY and
|
|
427
|
+
not a series because the plate is ordinary and unmarked: Art. 82 Abs. 2's
|
|
428
|
+
list of specially-marked plates does not include it. Each vehicle still
|
|
429
|
+
gets its own Fahrzeugausweis (Art. 13 Abs. 4).
|
|
430
|
+
sources:
|
|
431
|
+
- "https://www.fedlex.admin.ch/eli/cc/1959/1271_1321_1317/de # VVV Art. 13 Abs. 2-4 (same keeper, same canton, at most two vehicles, motor-with-motor / trailer-with-trailer, separate Fahrzeugausweis), Art. 14 Abs. 1 (only the vehicle carrying the plate may run), Art. 15 (separate insurance proof per vehicle)"
|
|
432
|
+
- class: temporary
|
|
433
|
+
note: >-
|
|
434
|
+
TAGESSCHILDER (day plates, VVV Art. 20-21). Plates issued with a
|
|
435
|
+
Tagesausweis "für eine Gültigkeitsdauer von 24, 48, 72 oder 96 Stunden"
|
|
436
|
+
(Art. 20 Abs. 4), returnable at expiry (Abs. 5), for unpaid journeys only
|
|
437
|
+
with at most eight occupants besides the driver (Art. 20a Abs. 1). A
|
|
438
|
+
SUB-ENTRY and not a series, on the same sourced negative: Art. 82 Abs. 2
|
|
439
|
+
does not mark them, so they are ordinary plates from the canton's
|
|
440
|
+
ordinary number space.
|
|
441
|
+
sources:
|
|
442
|
+
- "https://www.fedlex.admin.ch/eli/cc/1959/1271_1321_1317/de # VVV Art. 20 Abs. 4-5 (24/48/72/96 hours, return at expiry), Art. 20a (unpaid journeys, occupant limit, dangerous-goods and heavy-goods exclusions), Art. 21 (collective liability insurance, surcharge for late return)"
|
|
443
|
+
- class: government
|
|
444
|
+
note: >-
|
|
445
|
+
POLICE, CANTONAL AND FEDERAL FLEETS carry ordinary cantonal plates.
|
|
446
|
+
Art. 82 Abs. 2 marks no government series, and the VFBF says so
|
|
447
|
+
affirmatively for the Confederation: "Verwaltungsfahrzeuge werden mit
|
|
448
|
+
kantonalen Kontrollschildern immatrikuliert" (Art. 24 Abs. 1). Only
|
|
449
|
+
ARMY vehicles get their own plates (ch-military-m). A sub-entry recording
|
|
450
|
+
a negative, so that a consumer does not go looking for a Swiss government
|
|
451
|
+
series that does not exist.
|
|
452
|
+
sources:
|
|
453
|
+
- "https://www.fedlex.admin.ch/eli/cc/2005/163/20240401/de # VFBF Art. 24 Abs. 1 (federal administration vehicles on cantonal plates), Art. 28 (only military vehicles, NDB and Armasuisse vehicles get Militärkontrollschilder)"
|
|
454
|
+
sources:
|
|
455
|
+
- "https://www.fedlex.admin.ch/eli/cc/1976/2423_2423_2423/de # VZV Art. 82 Abs. 1 lit. a (white ground, black script, for Motorwagen etc.); Art. 83 Abs. 1-3 (metal, 1.5 mm embossing, the four formats, 10 mm corner radius); Art. 84 Abs. 1-2 (the 26 canton codes; numbering per colour/marking/family from 1); Art. 85 Abs. 1-2 (front layout without arms, rear layouts with federal and cantonal arms); Art. 87 Abs. 1 and 5 (number reserved for the keeper; plates stay the authority's property); Art. 87a (cantonal discretion on retroreflective plates)"
|
|
456
|
+
- "https://www.fedlex.admin.ch/eli/cc/1995/4425_4425_4425/de # VTS Art. 96 (front and rear on Motorwagen); Art. 45 Abs. 2 (placement geometry)"
|
|
457
|
+
notes: >-
|
|
458
|
+
THE SWISS STANDARD SERIES. period.start 1977 is the VZV's own entry into
|
|
459
|
+
force (1 January 1977) and is marked `instrument-in-force` for the reason
|
|
460
|
+
de.yml marks its German equivalent: the canton-letters-plus-number system is
|
|
461
|
+
far older than the VZV — the federal Motorfahrzeuggesetz of 1932 is the
|
|
462
|
+
usual attribution — and NO PRIMARY for that origin date was secured in this
|
|
463
|
+
pass, so it is not asserted. What the consolidated ordinance does date is the
|
|
464
|
+
surrounding regime: Art. 83 Abs. 1-2 and Art. 85 Abs. 2's long-format layout
|
|
465
|
+
sentence take their present wording from the amendment of 15 April 1987, in
|
|
466
|
+
force 1 May 1987 (AS 1987 628), and the same amendment INSERTED Art. 87a
|
|
467
|
+
(cantons must make retroreflective plates available) and restated Art. 151
|
|
468
|
+
Abs. 5 ("Kontrollschilder früherer Formate sind zu ersetzen, wenn die
|
|
469
|
+
zuständige Behörde den Fahrzeughalter dazu auffordert"). So 1 May 1987 is a
|
|
470
|
+
real design boundary — before it there was no reflective-plate duty at all —
|
|
471
|
+
but the pre-1987 TEXT was not retrievable (fedlex publishes no machine-
|
|
472
|
+
readable consolidation before 2000 and the AS 1987 628 scan was unreachable),
|
|
473
|
+
so no pre-1987 design is described here and no separate pre-1987 series is
|
|
474
|
+
invented. That boundary is the single highest-value item on the verifier's
|
|
475
|
+
list. FORMAT STABILITY, stated plainly: unlike NL sidecodes or the Spanish
|
|
476
|
+
2000 cutover, the Swiss STRING has not changed shape since at least 1977, so
|
|
477
|
+
a Swiss plate carries no era signal at all.
|
|
478
|
+
|
|
479
|
+
- id: ch-standard-trailer
|
|
480
|
+
class: trailer
|
|
481
|
+
categories: [trailer, semitrailer]
|
|
482
|
+
period: { start: 1977 }
|
|
483
|
+
period_evidence: instrument-in-force
|
|
484
|
+
matching: strict
|
|
485
|
+
format:
|
|
486
|
+
pattern: "LL 999999"
|
|
487
|
+
regex: '\A[A-Z]{2}[- ]?\d{1,6}\z'
|
|
488
|
+
regex_strict: '\A(?:AG|AI|AR|BE|BL|BS|FR|GE|GL|GR|JU|LU|NE|NW|OW|SG|SH|SO|SZ|TG|TI|UR|VD|VS|ZG|ZH)[- ]?[1-9]\d{0,5}\z'
|
|
489
|
+
regex_statutory: '\A[A-Z]{2}[- ]?\d+\z'
|
|
490
|
+
charset: { notes: "identical grammar to ch-standard — and, per Art. 84 Abs. 2, drawn from the SAME number space as motorcars" }
|
|
491
|
+
design:
|
|
492
|
+
plate: { w: 300, h: 160, unit: mm, note: "Transportanhänger an Motorwagen — Hochformat, or 500x110 Langformat" }
|
|
493
|
+
plate_variants:
|
|
494
|
+
- { w: 500, h: 110, unit: mm, note: "Transportanhänger, Langformat" }
|
|
495
|
+
- { w: 300, h: 80, unit: mm, note: "ARBEITSANHÄNGER take the front-plate format and the front-plate layout: letters, point, number, no arms (Art. 83 Abs. 3 lit. a + Art. 85 Abs. 1)" }
|
|
496
|
+
background: { color: "#FFFFFF", finish: retroreflective-optional, hex_basis: observed }
|
|
497
|
+
foreground: "#000000"
|
|
498
|
+
band: { side: none }
|
|
499
|
+
emblem: { present: true, rendered: placeholder, note: "federal + cantonal arms on Transport- und Ausnahmeanhänger plates (Art. 85 Abs. 2); ABSENT on Arbeitsanhänger plates (Art. 85 Abs. 1)" }
|
|
500
|
+
layout_rear: "Transport- und Ausnahmeanhänger: upper part federal arms, canton letters, canton arms; lower part the number (Art. 85 Abs. 2). Arbeitsanhänger: letters, point, number, no arms (Art. 85 Abs. 1)."
|
|
501
|
+
rear_differs: false
|
|
502
|
+
display: "one plate, at the rear"
|
|
503
|
+
region_encoding: "plates/_decode/ch-cantons.yml"
|
|
504
|
+
sources:
|
|
505
|
+
- "https://www.fedlex.admin.ch/eli/cc/1976/2423_2423_2423/de # VZV Art. 82 Abs. 1 lit. a (Anhänger take the white plate); Art. 83 Abs. 3 lit. a-b (Arbeitsanhänger 30x8, Transportanhänger 30x16 or 50x11); Art. 84 Abs. 2 (trailers share the motorcar number space); Art. 85 Abs. 1-2 (the two different layouts)"
|
|
506
|
+
- "https://www.fedlex.admin.ch/eli/cc/1959/1271_1321_1317/de # VVV Art. 13 Abs. 2 (Wechselschilder for trailers are not capped at two vehicles); Art. 22 Abs. 2bis (a towing vehicle's rear dealer plate may serve as the trailer's plate)"
|
|
507
|
+
notes: >-
|
|
508
|
+
SWISS TRAILER PLATES. Its own series rather than a variant of ch-standard for
|
|
509
|
+
one reason and one only: the DESIGN differs by trailer type — an
|
|
510
|
+
Arbeitsanhänger carries the armless 300x80 front-plate form while a
|
|
511
|
+
Transportanhänger carries the armed rear-plate form — which is exactly the
|
|
512
|
+
PRD-PLATES §2.3 test. The STRING, by contrast, is indistinguishable from a
|
|
513
|
+
car's: Art. 84 Abs. 2 puts "Motorwagen, Motoreinachser und Anhänger" in ONE
|
|
514
|
+
number space, so no consumer can tell a Swiss trailer registration from a car
|
|
515
|
+
registration by parsing it. Recorded here because a parse API that scores
|
|
516
|
+
ch-standard and ch-standard-trailer must return BOTH with equal confidence
|
|
517
|
+
and say why. Trailers up to and including 750 kg still need their own plate
|
|
518
|
+
in Switzerland — the Dutch "repeat the tractor's number on a white plate"
|
|
519
|
+
rule has no Swiss equivalent — except that VZV Art. 72 Abs. 1 lit. c exempts
|
|
520
|
+
certain agricultural and works trailers from registration altogether.
|
|
521
|
+
|
|
522
|
+
# =========================================================================
|
|
523
|
+
# MOTORCYCLES — same white plate, its own number space, 180x140 mm.
|
|
524
|
+
# =========================================================================
|
|
525
|
+
- id: ch-motorcycle
|
|
526
|
+
class: motorcycle
|
|
527
|
+
categories: [motorcycle, quadricycle]
|
|
528
|
+
period: { start: 1977 }
|
|
529
|
+
period_evidence: instrument-in-force
|
|
530
|
+
matching: strict
|
|
531
|
+
format:
|
|
532
|
+
pattern: "LL 999999"
|
|
533
|
+
regex: '\A[A-Z]{2}[- ]?\d{1,6}\z'
|
|
534
|
+
regex_strict: '\A(?:AG|AI|AR|BE|BL|BS|FR|GE|GL|GR|JU|LU|NE|NW|OW|SG|SH|SO|SZ|TG|TI|UR|VD|VS|ZG|ZH)[- ]?[1-9]\d{0,5}\z'
|
|
535
|
+
regex_statutory: '\A[A-Z]{2}[- ]?\d+\z'
|
|
536
|
+
progression: >-
|
|
537
|
+
SEPARATE NUMBER SPACE, and this is the one Swiss fact that partially
|
|
538
|
+
rescues plate-string disambiguation: Art. 84 Abs. 2 numbers "Motorräder,
|
|
539
|
+
Klein- und dreirädrige Motorfahrzeuge" apart from the motorcar family, so
|
|
540
|
+
the same canton runs two independent counters. A string alone still cannot
|
|
541
|
+
say which counter it came from — only the plate's SIZE can.
|
|
542
|
+
separator_note: "on the two-line motorcycle plate the letters and the number are on different lines (Art. 85 Abs. 2), so there is no printed point at all"
|
|
543
|
+
design:
|
|
544
|
+
plate: { w: 180, h: 140, unit: mm, corner_radius_mm: 10 }
|
|
545
|
+
background: { color: "#FFFFFF", finish: retroreflective-optional, hex_basis: observed }
|
|
546
|
+
foreground: "#000000"
|
|
547
|
+
band: { side: none }
|
|
548
|
+
emblem: { present: true, rendered: placeholder, note: "federal arms, canton letters, canton arms across the upper part (Art. 85 Abs. 2)" }
|
|
549
|
+
layout_rear: "upper part left to right: federal arms, canton letters, canton arms; lower part: the number (Art. 85 Abs. 2)"
|
|
550
|
+
rear_differs: false
|
|
551
|
+
display: "rear only, one plate (VTS Art. 136 Abs. 4)"
|
|
552
|
+
region_encoding: "plates/_decode/ch-cantons.yml"
|
|
553
|
+
sources:
|
|
554
|
+
- "https://www.fedlex.admin.ch/eli/cc/1976/2423_2423_2423/de # VZV Art. 82 Abs. 1 lit. a (Motorräder, Klein- und dreirädrige Motorfahrzeuge on the white plate); Art. 83 Abs. 3 lit. c (18 cm x 14 cm, also for their trailers); Art. 84 Abs. 2 (separate number space); Art. 85 Abs. 2 (two-line layout with both arms)"
|
|
555
|
+
- "https://www.fedlex.admin.ch/eli/cc/1995/4425_4425_4425/de # VTS Art. 136 Abs. 4 (rear plate only on Motorräder, Leicht-, Klein- und dreirädrige Motorfahrzeuge)"
|
|
556
|
+
notes: >-
|
|
557
|
+
MOTORCYCLE AND SMALL/THREE-WHEELER PLATES. Covers Motorräder, Kleinmotorfahrzeuge
|
|
558
|
+
and dreirädrige Motorfahrzeuge (the last two being the Swiss quadricycle and
|
|
559
|
+
trike categories), plus their trailers, all on the 180x140 mm two-line white
|
|
560
|
+
plate. NOT covered here: Kleinmotorräder and Leichtmotorfahrzeuge, which
|
|
561
|
+
Art. 82 Abs. 1 lit. e puts on the YELLOW plate — see ch-lightmotor-yellow.
|
|
562
|
+
The Swiss category boundary is genuinely counter-intuitive: "Kleinmotorrad"
|
|
563
|
+
(yellow) and "Klein- und dreirädriges Motorfahrzeug" (white) are different
|
|
564
|
+
legal animals whose names differ by two words.
|
|
565
|
+
|
|
566
|
+
# =========================================================================
|
|
567
|
+
# YELLOW — Kleinmotorräder and Leichtmotorfahrzeuge.
|
|
568
|
+
# =========================================================================
|
|
569
|
+
- id: ch-lightmotor-yellow
|
|
570
|
+
class: moped
|
|
571
|
+
categories: [moped, quadricycle]
|
|
572
|
+
period: { start: 1977 }
|
|
573
|
+
period_evidence: instrument-in-force
|
|
574
|
+
matching: strict
|
|
575
|
+
format:
|
|
576
|
+
pattern: "LL 999999"
|
|
577
|
+
regex: '\A[A-Z]{2}[- ]?\d{1,6}\z'
|
|
578
|
+
regex_strict: '\A(?:AG|AI|AR|BE|BL|BS|FR|GE|GL|GR|JU|LU|NE|NW|OW|SG|SH|SO|SZ|TG|TI|UR|VD|VS|ZG|ZH)[- ]?[1-9]\d{0,5}\z'
|
|
579
|
+
regex_statutory: '\A[A-Z]{2}[- ]?\d+\z'
|
|
580
|
+
charset: { notes: "same canton-plus-number grammar; the distinguishing feature is the yellow ground, not the string" }
|
|
581
|
+
design:
|
|
582
|
+
plate: { w: 100, h: 140, unit: mm, corner_radius_mm: 10 }
|
|
583
|
+
background: { color: "#FFFF00", finish: retroreflective-optional, hex_basis: observed, spec_note: "Art. 82 Abs. 1 lit. e names 'gelbem Grund und schwarzer Schrift'; no RAL/RGB in the ordinance" }
|
|
584
|
+
foreground: "#000000"
|
|
585
|
+
band: { side: none }
|
|
586
|
+
emblem: { present: true, rendered: placeholder, note: "Art. 85 Abs. 2 lists Kleinmotorräder and Leichtmotorfahrzeuge among the two-line plates carrying federal arms, canton letters and canton arms in the upper part" }
|
|
587
|
+
layout_rear: "upper part left to right: federal arms, canton letters, canton arms; lower part: the number (Art. 85 Abs. 2)"
|
|
588
|
+
rear_differs: false
|
|
589
|
+
display: "rear only (VTS Art. 136 Abs. 4)"
|
|
590
|
+
region_encoding: "plates/_decode/ch-cantons.yml"
|
|
591
|
+
sources:
|
|
592
|
+
- "https://www.fedlex.admin.ch/eli/cc/1976/2423_2423_2423/de # VZV Art. 82 Abs. 1 lit. e (yellow ground, black script, for Kleinmotorräder und Leichtmotorfahrzeuge — 'Fassung gemäss Anhang 1 Ziff. II 10 der V vom 19. Juni 1995 ..., in Kraft seit 1. Okt. 1995 (AS 1995 4425)'); Art. 83 Abs. 3 lit. d (10 cm x 14 cm, also for their trailers — 'Fassung gemäss Ziff. I der V vom 30. Nov. 2012, in Kraft seit 1. Juli 2013 (AS 2012 7149)'); Art. 84 Abs. 2 (own number space per colour); Art. 85 Abs. 2"
|
|
593
|
+
notes: >-
|
|
594
|
+
THE YELLOW PLATE FOR KLEINMOTORRÄDER AND LEICHTMOTORFAHRZEUGE. period.start
|
|
595
|
+
1977 is the VZV's entry into force, because Art. 82 Abs. 1's structure is
|
|
596
|
+
original 1976 text; what IS separately dated is lit. e's present WORDING
|
|
597
|
+
(in force 1 October 1995, AS 1995 4425) and the 100x140 mm format of Art. 83
|
|
598
|
+
Abs. 3 lit. d (in force 1 July 2013, AS 2012 7149). Neither predecessor
|
|
599
|
+
wording was retrievable, so neither is described and no earlier series is
|
|
600
|
+
invented — the 2013 dimension change in particular is a candidate for a
|
|
601
|
+
pre-2013 series once AS 2012 7149's own text is read. DO NOT CONFUSE with
|
|
602
|
+
ch-motorfahrrad: both plates are yellow and both are 100x140 mm, but the
|
|
603
|
+
Motorfahrrad plate carries a mandatory reflective coating and an annual
|
|
604
|
+
insurance vignette and the Kleinmotorrad plate carries the two coats of arms.
|
|
605
|
+
|
|
606
|
+
# =========================================================================
|
|
607
|
+
# MOTORFAHRRÄDER — the yellow moped plate with the insurance vignette.
|
|
608
|
+
# =========================================================================
|
|
609
|
+
- id: ch-motorfahrrad
|
|
610
|
+
class: moped
|
|
611
|
+
categories: [moped]
|
|
612
|
+
period: { start: 1978 }
|
|
613
|
+
period_evidence: transitional-provision
|
|
614
|
+
matching: strict
|
|
615
|
+
format:
|
|
616
|
+
pattern: "LL 999999"
|
|
617
|
+
regex: '\A[A-Z]{2}[- ]?\d{1,6}\z'
|
|
618
|
+
regex_strict: '\A(?:AG|AI|AR|BE|BL|BS|FR|GE|GL|GR|JU|LU|NE|NW|OW|SG|SH|SO|SZ|TG|TI|UR|VD|VS|ZG|ZH)[- ]?[1-9]\d{0,5}\z'
|
|
619
|
+
regex_statutory: '\A[A-Z]{2}[- ]?\d+\z'
|
|
620
|
+
separator_note: "letters in the upper third, number in the lower part (Art. 94 Abs. 6) — a line break, not a printed point"
|
|
621
|
+
design:
|
|
622
|
+
plate: { w: 100, h: 140, unit: mm }
|
|
623
|
+
background: { color: "#FFFF00", finish: retroreflective, hex_basis: observed, spec_note: "Art. 94 Abs. 6: 'weisen einen gelb reflektierenden Belag auf' — the ONE Swiss plate where retroreflection is mandatory rather than cantonal" }
|
|
624
|
+
foreground: "#000000"
|
|
625
|
+
band: { side: none }
|
|
626
|
+
emblem: { present: false, note: "Art. 94 Abs. 6 places only the canton letters and the number; no arms are prescribed for cantonal moped plates. Federal moped plates DO carry a mark — see the variant." }
|
|
627
|
+
layout_rear: "upper third, left: the letters allocated to the canton; lower part: the number — both black and raised (Art. 94 Abs. 6). The insurance vignette goes in the upper third beside the letters (VVV Art. 35 Abs. 3)."
|
|
628
|
+
extra_field:
|
|
629
|
+
name: Versicherungsvignette
|
|
630
|
+
position: "upper third of the plate"
|
|
631
|
+
content: "the last two digits of the issue year plus an individual number"
|
|
632
|
+
validity: "1 January of the printed year to 31 May of the following year (VVV Art. 36 Abs. 1)"
|
|
633
|
+
note: >-
|
|
634
|
+
The Swiss moped plate is the only plate in this file that carries a
|
|
635
|
+
DATE, and it carries it on a sticker rather than in the serial: VVV
|
|
636
|
+
Art. 35 Abs. 1-3 makes the vignette the proof of liability insurance and
|
|
637
|
+
requires it to "die beiden letzten Ziffern des Abgabejahres sowie eine
|
|
638
|
+
individuelle Nummer tragen". A parse API cannot read it from the string;
|
|
639
|
+
an image pipeline can, and it dates the vehicle's insurance year exactly.
|
|
640
|
+
rear_differs: false
|
|
641
|
+
display: "one plate"
|
|
642
|
+
region_encoding: "plates/_decode/ch-cantons.yml"
|
|
643
|
+
variants:
|
|
644
|
+
- class: government
|
|
645
|
+
note: >-
|
|
646
|
+
FEDERAL MOPEDS carry a different mark: VZV Art. 96 Abs. 1 lit. a — the
|
|
647
|
+
plates are issued by the office competent under the VFBF, "sind
|
|
648
|
+
unbefristet gültig und tragen im obern Drittel von links nach rechts ein
|
|
649
|
+
weisses Schweizer Kreuz und die Buchstaben gemäss der VFBF", and no proof
|
|
650
|
+
of insurance is required. The VFBF calls them "Post- und Regie-
|
|
651
|
+
Kontrollschilder (PR-Schilder)" (Art. 27) but does NOT publish the letter
|
|
652
|
+
set, which is a RECORDED GAP — the letters are therefore not modelled and
|
|
653
|
+
no pattern is guessed. Cantonal mopeds for which no liability insurance
|
|
654
|
+
is taken out get "ordentliche kantonale Kontrollschilder einer besonderen
|
|
655
|
+
vom Kanton zu bestimmenden Nummernserie" (Art. 96 Abs. 2) — a cantonal
|
|
656
|
+
sub-series with no federal grammar.
|
|
657
|
+
sources:
|
|
658
|
+
- "https://www.fedlex.admin.ch/eli/cc/1976/2423_2423_2423/de # VZV Art. 96 Abs. 1 lit. a-c and Abs. 2"
|
|
659
|
+
- "https://www.fedlex.admin.ch/eli/cc/2005/163/20240401/de # VFBF Art. 27 (mopeds of the Confederation on PR-Schilder)"
|
|
660
|
+
sources:
|
|
661
|
+
- "https://www.fedlex.admin.ch/eli/cc/1976/2423_2423_2423/de # VZV Art. 90 (a moped is admitted with its Fahrzeugausweis, the plate named in it and a valid insurance vignette); Art. 94 Abs. 1-6 (issuing canton, one number reusable across several mopeds of the same keeper, 30-day substitute rule, transfer on vehicle change, and the 14x10 cm yellow reflective plate with the letters in the upper third left and the number below); Art. 95 Abs. 2 (a new plate from the new canton when the Standort moves); Art. 151 Abs. 6 (mopeds imported or made in Switzerland FROM 1 JANUARY 1978 must carry a Fahrzeugausweis and Kontrollschild under this ordinance; earlier ones ran on the old-law Etikette and transferable insurance mark until 31 December 1983)"
|
|
662
|
+
- "https://www.fedlex.admin.ch/eli/cc/1959/1271_1321_1317/de # VVV Art. 35 Abs. 1-4 (the vignette IS the insurance proof; design per Anhang 3; last two digits of the issue year plus an individual number; placed in the upper third of the plate; minimum cover CHF 2 million), Art. 36 Abs. 1 (valid 1 January of the printed year to 31 May of the following year)"
|
|
663
|
+
notes: >-
|
|
664
|
+
THE MOPED PLATE — and the one Swiss series with a genuinely dated start.
|
|
665
|
+
period.start 1978 is not an instrument date but a rule: VZV Art. 151 Abs. 6
|
|
666
|
+
requires mopeds imported or manufactured in Switzerland from 1 January 1978
|
|
667
|
+
to carry a Fahrzeugausweis and a Kontrollschild under the VZV, while mopeds
|
|
668
|
+
imported before that date stayed on the OLD regime — "Etikette,
|
|
669
|
+
übertragbares Versicherungskennzeichen" — until 31 December 1983. That old
|
|
670
|
+
regime is the true "one series back" for this class, and it is deliberately
|
|
671
|
+
NOT modelled as a series: a label and a transferable insurance mark have no
|
|
672
|
+
serial grammar to write a pattern for, and the instrument that created them
|
|
673
|
+
was repealed by VZV Art. 152 and not retrieved. Art. 94's present wording
|
|
674
|
+
dates from 1 January 2012 (AS 2011 4941). THE OWNER-BINDING IS SHARPEST
|
|
675
|
+
HERE: Art. 94 Abs. 3 lets the SAME plate number be entered in the
|
|
676
|
+
Fahrzeugausweise of several mopeds of the same keeper in the same canton,
|
|
677
|
+
and Abs. 4 lets it move to a substitute moped for up to 30 days without any
|
|
678
|
+
authorisation at all.
|
|
679
|
+
|
|
680
|
+
# =========================================================================
|
|
681
|
+
# LIGHT BLUE — Arbeitsfahrzeuge (work vehicles).
|
|
682
|
+
# =========================================================================
|
|
683
|
+
- id: ch-workvehicle-blue
|
|
684
|
+
class: standard
|
|
685
|
+
categories: [machine, truck]
|
|
686
|
+
period: { start: 1977 }
|
|
687
|
+
period_evidence: instrument-in-force
|
|
688
|
+
matching: strict
|
|
689
|
+
format:
|
|
690
|
+
pattern: "LL 999999"
|
|
691
|
+
regex: '\A[A-Z]{2}[- ]?\d{1,6}\z'
|
|
692
|
+
regex_strict: '\A(?:AG|AI|AR|BE|BL|BS|FR|GE|GL|GR|JU|LU|NE|NW|OW|SG|SH|SO|SZ|TG|TI|UR|VD|VS|ZG|ZH)[- ]?[1-9]\d{0,5}\z'
|
|
693
|
+
regex_statutory: '\A[A-Z]{2}[- ]?\d+\z'
|
|
694
|
+
charset: { notes: "same grammar; own number space per Art. 84 Abs. 2's per-colour split" }
|
|
695
|
+
design:
|
|
696
|
+
plate: { w: 300, h: 80, unit: mm, note: "front; rear 300x160 or 500x110 as for ch-standard" }
|
|
697
|
+
plate_variants:
|
|
698
|
+
- { w: 300, h: 160, unit: mm }
|
|
699
|
+
- { w: 500, h: 110, unit: mm }
|
|
700
|
+
background: { color: "#ADD8E6", finish: retroreflective-optional, hex_basis: observed, spec_note: "Art. 82 Abs. 1 lit. b names 'hellblauem Grund und schwarzer Schrift'; the hex is the standard web colour for the German colour word, NOT a spec value" }
|
|
701
|
+
foreground: "#000000"
|
|
702
|
+
band: { side: none }
|
|
703
|
+
emblem: { present: true, rendered: placeholder }
|
|
704
|
+
layout_front: "letters, point at half height, number; no arms (Art. 85 Abs. 1)"
|
|
705
|
+
layout_rear: "as ch-standard (Art. 85 Abs. 2)"
|
|
706
|
+
rear_differs: true
|
|
707
|
+
display: "front and rear on Motorwagen (VTS Art. 96)"
|
|
708
|
+
region_encoding: "plates/_decode/ch-cantons.yml"
|
|
709
|
+
sources:
|
|
710
|
+
- "https://www.fedlex.admin.ch/eli/cc/1976/2423_2423_2423/de # VZV Art. 82 Abs. 1 lit. b (light-blue ground, black script, for Arbeitsfahrzeuge — original 1976 text, no amending footnote); Art. 82 Abs. 3 (a plate change is required when the vehicle's classification changes, except for classification changes lasting at most six months on vehicles up to 3500 kg or three months on others); Art. 84 Abs. 2 (own number space per background colour)"
|
|
711
|
+
notes: >-
|
|
712
|
+
THE LIGHT-BLUE WORK-VEHICLE PLATE. CLASS CAVEAT, and it is a real one:
|
|
713
|
+
_meta/classes.yml has no value for a work vehicle (mobile crane, concrete
|
|
714
|
+
pump, construction machine), so `standard` is recorded as the least-wrong fit
|
|
715
|
+
and a VOCABULARY GAP is flagged for the L1 report — the natural additions are
|
|
716
|
+
`work-vehicle` for this series and `oversize` for ch-exceptional-brown.
|
|
717
|
+
Art. 82 Abs. 3 is worth a claims model's attention: the plate follows the
|
|
718
|
+
vehicle's CLASSIFICATION, so a vehicle that changes class must change plates
|
|
719
|
+
— with an explicit six-month (up to 3500 kg) or three-month (heavier)
|
|
720
|
+
tolerance. This is a Swiss series in the fullest sense: distinct colour,
|
|
721
|
+
distinct number space, same string grammar.
|
|
722
|
+
|
|
723
|
+
# =========================================================================
|
|
724
|
+
# LIGHT BROWN — Ausnahmefahrzeuge (vehicles exceeding the general limits).
|
|
725
|
+
# =========================================================================
|
|
726
|
+
- id: ch-exceptional-brown
|
|
727
|
+
class: standard
|
|
728
|
+
categories: [truck, machine, trailer]
|
|
729
|
+
period: { start: 1977 }
|
|
730
|
+
period_evidence: instrument-in-force
|
|
731
|
+
matching: strict
|
|
732
|
+
format:
|
|
733
|
+
pattern: "LL 999999"
|
|
734
|
+
regex: '\A[A-Z]{2}[- ]?\d{1,6}\z'
|
|
735
|
+
regex_strict: '\A(?:AG|AI|AR|BE|BL|BS|FR|GE|GL|GR|JU|LU|NE|NW|OW|SG|SH|SO|SZ|TG|TI|UR|VD|VS|ZG|ZH)[- ]?[1-9]\d{0,5}\z'
|
|
736
|
+
regex_statutory: '\A[A-Z]{2}[- ]?\d+\z'
|
|
737
|
+
design:
|
|
738
|
+
plate: { w: 300, h: 80, unit: mm, note: "front; rear 300x160 or 500x110" }
|
|
739
|
+
plate_variants:
|
|
740
|
+
- { w: 300, h: 160, unit: mm }
|
|
741
|
+
- { w: 500, h: 110, unit: mm }
|
|
742
|
+
background: { color: "#D2B48C", finish: retroreflective-optional, hex_basis: observed, spec_note: "Art. 82 Abs. 1 lit. c names 'hellbraunem Grund und schwarzer Schrift'; the hex is the standard web tone for the colour word, NOT a spec value" }
|
|
743
|
+
foreground: "#000000"
|
|
744
|
+
band: { side: none }
|
|
745
|
+
emblem: { present: true, rendered: placeholder }
|
|
746
|
+
layout_rear: "as ch-standard; Ausnahmeanhänger take the two-line layout with both arms (Art. 85 Abs. 2)"
|
|
747
|
+
rear_differs: true
|
|
748
|
+
region_encoding: "plates/_decode/ch-cantons.yml"
|
|
749
|
+
sources:
|
|
750
|
+
- "https://www.fedlex.admin.ch/eli/cc/1976/2423_2423_2423/de # VZV Art. 82 Abs. 1 lit. c (light-brown ground, black script, for Ausnahmefahrzeuge — original 1976 text); Art. 85 Abs. 2 (Ausnahmeanhänger among the two-line plates); Art. 84 Abs. 2"
|
|
751
|
+
- "https://www.fedlex.admin.ch/eli/cc/1959/1271_1321_1317/de # VVV Art. 22 Abs. 3 (a special authorisation is still required for Ausnahmefahrzeuge even when running on dealer plates)"
|
|
752
|
+
notes: >-
|
|
753
|
+
THE LIGHT-BROWN EXCEPTIONAL-VEHICLE PLATE. An "Ausnahmefahrzeug" is a vehicle
|
|
754
|
+
that exceeds the general dimension or weight limits and runs on a special
|
|
755
|
+
authorisation. SAME CLASS CAVEAT as ch-workvehicle-blue: `standard` is a
|
|
756
|
+
least-wrong fit for a vocabulary that has no `oversize` value, and the gap is
|
|
757
|
+
flagged rather than papered over. The colour is the whole identification —
|
|
758
|
+
the string is the ordinary canton-plus-number, from its own per-colour number
|
|
759
|
+
space.
|
|
760
|
+
|
|
761
|
+
# =========================================================================
|
|
762
|
+
# LIGHT GREEN — land- und forstwirtschaftliche Fahrzeuge.
|
|
763
|
+
# =========================================================================
|
|
764
|
+
- id: ch-agricultural-green
|
|
765
|
+
class: agricultural
|
|
766
|
+
categories: [tractor, machine, trailer]
|
|
767
|
+
period: { start: 1977 }
|
|
768
|
+
period_evidence: instrument-in-force
|
|
769
|
+
matching: strict
|
|
770
|
+
format:
|
|
771
|
+
pattern: "LL 999999"
|
|
772
|
+
regex: '\A[A-Z]{2}[- ]?\d{1,6}\z'
|
|
773
|
+
regex_strict: '\A(?:AG|AI|AR|BE|BL|BS|FR|GE|GL|GR|JU|LU|NE|NW|OW|SG|SH|SO|SZ|TG|TI|UR|VD|VS|ZG|ZH)[- ]?[1-9]\d{0,5}\z'
|
|
774
|
+
regex_statutory: '\A[A-Z]{2}[- ]?\d+\z'
|
|
775
|
+
design:
|
|
776
|
+
plate: { w: 300, h: 80, unit: mm, note: "Art. 83 Abs. 3 lit. a puts land- und forstwirtschaftliche Fahrzeuge on the 30x8 single-line form" }
|
|
777
|
+
background: { color: "#90EE90", finish: retroreflective-optional, hex_basis: observed, spec_note: "Art. 82 Abs. 1 lit. d names 'hellgrünem Grund und schwarzer Schrift'; no RAL/RGB in the ordinance" }
|
|
778
|
+
foreground: "#000000"
|
|
779
|
+
band: { side: none }
|
|
780
|
+
emblem: { present: false, note: "Art. 85 Abs. 1 puts agricultural and forestry vehicles on the ARMLESS layout — letters, point, number" }
|
|
781
|
+
layout_front: "left to right: canton letters, point at half height, number. No arms (Art. 85 Abs. 1)."
|
|
782
|
+
rear_differs: false
|
|
783
|
+
display: "ONE plate, front or rear at the operator's convenience; agricultural EXCEPTIONAL vehicles must carry one at each end (VTS Art. 162 Abs. 1)"
|
|
784
|
+
region_encoding: "plates/_decode/ch-cantons.yml"
|
|
785
|
+
sources:
|
|
786
|
+
- "https://www.fedlex.admin.ch/eli/cc/1976/2423_2423_2423/de # VZV Art. 82 Abs. 1 lit. d (light-green ground, black script, for land- und forstwirtschaftliche Fahrzeuge — 'Fassung gemäss Anhang 1 Ziff. II 10 der V vom 19. Juni 1995 ..., in Kraft seit 1. Okt. 1995 (AS 1995 4425)'); Art. 83 Abs. 3 lit. a (30 cm x 8 cm); Art. 85 Abs. 1 (armless layout); Art. 84 Abs. 2"
|
|
787
|
+
- "https://www.fedlex.admin.ch/eli/cc/1995/4425_4425_4425/de # VTS Art. 162 Abs. 1 (one plate, front or rear; two for agricultural exceptional vehicles)"
|
|
788
|
+
notes: >-
|
|
789
|
+
THE LIGHT-GREEN AGRICULTURAL PLATE — the only Swiss colour whose class maps
|
|
790
|
+
cleanly onto _meta/classes.yml. Two design facts set it apart from every other
|
|
791
|
+
colour: it is a 300x80 mm SINGLE plate (not a front/rear pair), and Art. 85
|
|
792
|
+
Abs. 1 groups it with the front plate, so it carries NO coats of arms at all.
|
|
793
|
+
lit. d took its present wording on 1 October 1995 (AS 1995 4425); the earlier
|
|
794
|
+
wording was not retrieved and no pre-1995 series is invented. Note the sharp
|
|
795
|
+
contrast with Germany's green plate, which is a TAX-EXEMPTION marker with an
|
|
796
|
+
agricultural majority — the Swiss green plate really is about agriculture and
|
|
797
|
+
forestry, and the VZV says so in those words.
|
|
798
|
+
|
|
799
|
+
# =========================================================================
|
|
800
|
+
# MILITARY — schattenschwarz ground, white script, the letter M.
|
|
801
|
+
# =========================================================================
|
|
802
|
+
- id: ch-military-m
|
|
803
|
+
class: military
|
|
804
|
+
categories: [car, van, truck, bus, motorcycle, trailer]
|
|
805
|
+
period: { start: 1977 }
|
|
806
|
+
period_evidence: instrument-in-force
|
|
807
|
+
matching: strict
|
|
808
|
+
format:
|
|
809
|
+
pattern: "M 999999"
|
|
810
|
+
regex: '\AM[- ]?\d{1,6}\z'
|
|
811
|
+
regex_strict: '\AM[- ]?[1-9]\d{0,5}\z'
|
|
812
|
+
regex_statutory: '\AM[- ]?\d+\z'
|
|
813
|
+
charset:
|
|
814
|
+
fixed_letters: "M"
|
|
815
|
+
notes: >-
|
|
816
|
+
Art. 84 Abs. 3 VZV, verbatim: "Die Kontrollschilder des Bundes tragen nur
|
|
817
|
+
das eidgenössische Wappen und erhalten den Buchstaben M für
|
|
818
|
+
Militärkontrollschilder." One letter, not two — the only Swiss series
|
|
819
|
+
whose prefix is not a canton code, which makes it the single most
|
|
820
|
+
reliable string-level identification in this file.
|
|
821
|
+
group_note: >-
|
|
822
|
+
Art. 85 Abs. 3 gives a real grouping rule for MILITARY TRAILERS: on the
|
|
823
|
+
two-line plate "werden die ersten zwei Zahlen im oberen Teil neben dem
|
|
824
|
+
zugeteilten Buchstaben aufgeführt"; on the single-line plate "wird ein
|
|
825
|
+
grösserer Abstand zwischen der zweiten und dritten Zahl gemacht". A 2+n
|
|
826
|
+
digit grouping the single-`pattern` schema cannot express.
|
|
827
|
+
design:
|
|
828
|
+
plate: { w: 300, h: 80, unit: mm, note: "single-line form; two-line military trailer plates take the motorcycle format (Art. 83 Abs. 5)" }
|
|
829
|
+
plate_variants:
|
|
830
|
+
- { w: 180, h: 140, unit: mm, note: "two-line military trailer plate (Art. 83 Abs. 5)" }
|
|
831
|
+
background: { color: "#1C1C1C", finish: painted, hex_basis: observed, spec_note: "Art. 82 Abs. 1 lit. f names 'schattenschwarzem Grund und weisser Schrift'; 'schattenschwarz' has no RAL or RGB value in the ordinance and the hex is a reading of the word, not a spec" }
|
|
832
|
+
foreground: "#FFFFFF"
|
|
833
|
+
band: { side: none }
|
|
834
|
+
emblem: { present: true, rendered: placeholder, note: "the federal arms ONLY — Art. 84 Abs. 3; no cantonal arms, because the plate is federal. On military TRAILER plates 'das Wappen fällt weg' entirely (Art. 85 Abs. 3)." }
|
|
835
|
+
painted_on_body: >-
|
|
836
|
+
Art. 82 Abs. 1 lit. f carries a provision no other European plate law in
|
|
837
|
+
this dataset has: "lassen sich diese Kontrollschilder nicht zweckmässig
|
|
838
|
+
anbringen, so werden Wappen, Buchstabe und Nummer in einem schattenschwarzen
|
|
839
|
+
Feld auf die Karosserie aufgemalt" — where a physical plate cannot sensibly
|
|
840
|
+
be fitted, the arms, letter and number are PAINTED ON THE BODYWORK in a
|
|
841
|
+
shadow-black field. A render layer must be able to emit a plate that is not
|
|
842
|
+
a plate.
|
|
843
|
+
rear_differs: false
|
|
844
|
+
binding: government
|
|
845
|
+
region_encoding: none
|
|
846
|
+
sources:
|
|
847
|
+
- "https://www.fedlex.admin.ch/eli/cc/1976/2423_2423_2423/de # VZV Art. 82 Abs. 1 lit. f (shadow-black ground, white script, army vehicles, and the paint-on-bodywork fallback); Art. 83 Abs. 5 (military trailer formats); Art. 84 Abs. 3 (federal plates carry only the federal arms and the letter M); Art. 85 Abs. 3 (military trailer digit grouping; no arms)"
|
|
848
|
+
- "https://www.fedlex.admin.ch/eli/cc/2005/163/20240401/de # VFBF Art. 28 (military vehicles and the vehicles of the Federal Intelligence Service and Armasuisse are registered by the SVSAA on Militärkontrollschilder); Art. 24 Abs. 1 (ordinary administration vehicles use CANTONAL plates instead); Art. 29 Übergangsbestimmung ('Fahrzeuge des Grenzwachtkorps und der Zolluntersuchungsbehörden dürfen noch bis spätestens am 31. Dezember 2023 mit militärischen Fahrzeugausweisen und Militärkontrollschildern verkehren')"
|
|
849
|
+
notes: >-
|
|
850
|
+
MILITÄRKONTROLLSCHILDER. `binding: government` overrides the file-level
|
|
851
|
+
`owner`: these plates are neither keeper-reserved nor cantonal — they are
|
|
852
|
+
issued and administered federally by the SVSAA under the VFBF. Two
|
|
853
|
+
boundaries a consumer must not blur: VFBF Art. 24 Abs. 1 puts ordinary
|
|
854
|
+
federal ADMINISTRATION vehicles on cantonal plates, so "federal vehicle" does
|
|
855
|
+
not imply an M plate; and VFBF Art. 29 required Grenzwachtkorps and customs
|
|
856
|
+
investigation vehicles to leave the military registers by 31 December 2023,
|
|
857
|
+
which is an ENDED sub-population inside a live series and exactly the kind of
|
|
858
|
+
row-level period discipline PRD-PLATES §2.4 warns about.
|
|
859
|
+
|
|
860
|
+
# =========================================================================
|
|
861
|
+
# DIPLOMATIC AND CONSULAR — CD, CC, AT on a dark green or dark blue field.
|
|
862
|
+
# =========================================================================
|
|
863
|
+
- id: ch-diplomatic-cd
|
|
864
|
+
class: diplomatic
|
|
865
|
+
categories: [car, van, motorcycle]
|
|
866
|
+
period: { start: 1977 }
|
|
867
|
+
period_evidence: instrument-in-force
|
|
868
|
+
matching: strict
|
|
869
|
+
format:
|
|
870
|
+
pattern: "CD LL 999-999"
|
|
871
|
+
regex: '\ACD[- ]?[A-Z]{2}[- ]?\d{1,4}[- ]\d{1,4}\z'
|
|
872
|
+
regex_strict: '\ACD[- ]?(?:AG|AI|AR|BE|BL|BS|FR|GE|GL|GR|JU|LU|NE|NW|OW|SG|SH|SO|SZ|TG|TI|UR|VD|VS|ZG|ZH)[- ]?\d{1,4}[- ]\d{1,4}\z'
|
|
873
|
+
regex_statutory: '\ACD[- ]?[A-Z]{2}[- ]?\d+[- ]\d+\z'
|
|
874
|
+
fields:
|
|
875
|
+
- { name: sign, value: "CD", note: "on a dark green or dark blue field (Art. 82 Abs. 2 lit. d)" }
|
|
876
|
+
- { name: canton, note: "the two canton letters, in BLACK — Art. 84 Abs. 4" }
|
|
877
|
+
- { name: mission_serial, note: "first number group: 'Ordnungsnummer innerhalb der Mission, des Postens, der Delegation oder der Organisation'; the LOWEST numbers are reserved for the head of mission and the deputies (Art. 84 Abs. 4)" }
|
|
878
|
+
- { name: state_code, note: "second number group: 'bezeichnet den einzelnen Staat oder die Organisation' — the country/organisation code. The code TABLE is an FDFA allocation and is NOT published in the VZV: recorded gap, deliberately not guessed (PRD-PLATES puts diplomatic decode tables at L4)." }
|
|
879
|
+
separator_note: >-
|
|
880
|
+
Art. 84 Abs. 4 prescribes "die Zahlen und der Punkt" and Art. 85 Abs. 4
|
|
881
|
+
"die durch einen Punkt getrennten zwei Zahlengruppen" — the group
|
|
882
|
+
separator is again a point the dataset cannot emit, spelled here as a
|
|
883
|
+
hyphen in the pattern and as an emitted-separator class in the regex.
|
|
884
|
+
digit_bound_note: "the ordinance caps NEITHER group; \\d{1,4} is a practical bound and regex_statutory drops it"
|
|
885
|
+
design:
|
|
886
|
+
plate: { w: 300, h: 80, unit: mm, note: "front; Art. 83 Abs. 4 lets the ASTRA set deviating formats for these plates" }
|
|
887
|
+
plate_variants:
|
|
888
|
+
- { w: 500, h: 110, unit: mm, note: "rear Langformat" }
|
|
889
|
+
- { w: 300, h: 160, unit: mm, note: "rear Hochformat" }
|
|
890
|
+
background: { color: "#FFFFFF", finish: retroreflective-optional, hex_basis: observed }
|
|
891
|
+
foreground: "#000000"
|
|
892
|
+
sign_field: { color: "#006400", alt_color: "#00008B", foreground: "#FFFFFF", hex_basis: observed, note: "Art. 82 Abs. 2 lit. d requires the CD/CC/AT sign to sit 'auf dunkelgrünem oder dunkelblauem Feld' but does NOT say which sign takes which colour — RECORDED GAP; the widely repeated green-for-CD / blue-for-CC-and-AT split is NOT sourced here and is flagged as folklore" }
|
|
893
|
+
band: { side: none }
|
|
894
|
+
emblem: { present: false, note: "Art. 84 Abs. 4, verbatim: the plates 'enthalten keine Wappen, jedoch Kantonsbuchstaben in schwarzer Farbe' — the ONLY Swiss road plates with no coat of arms at all" }
|
|
895
|
+
layout_front: "left to right: the field bearing the sign, the canton letters, then the two number groups separated by a point (Art. 85 Abs. 4)"
|
|
896
|
+
layout_rear: "Langformat as the front; Hochformat — upper part the sign field and the canton letters, lower part the two number groups (Art. 85 Abs. 4)"
|
|
897
|
+
manufacture: "Art. 84 Abs. 4: the sign and letters may be photographically and indelibly set into the metal; the numbers and the point in black may be applied the same way OR consist of stamped aluminium pieces riveted onto the plate — the only Swiss plate that is not necessarily embossed"
|
|
898
|
+
rear_differs: true
|
|
899
|
+
binding: owner
|
|
900
|
+
region_encoding: "plates/_decode/ch-cantons.yml"
|
|
901
|
+
sources:
|
|
902
|
+
- "https://www.fedlex.admin.ch/eli/cc/1976/2423_2423_2423/de # VZV Art. 82 Abs. 2 lit. d (CD/CC/AT on a dark green or dark blue field — 'Eingefügt durch Anhang 1 Ziff. II 10 der V vom 19. Juni 1995 ..., in Kraft seit 1. Okt. 1995 (AS 1995 4425)'); Art. 83 Abs. 4 (ASTRA may set deviating formats); Art. 84 Abs. 4 (no arms, black canton letters, the two dot-separated number groups and what each means, photographic or riveted manufacture); Art. 85 Abs. 4 (front / long-rear / high-rear layouts); Art. 86 Abs. 1 (who gets CD); Art. 87 Abs. 4 (issued in agreement with the FDFA)"
|
|
903
|
+
- "https://www.fedlex.admin.ch/eli/cc/1995/4425_4425_4425/de # VTS Art. 33 Abs. 6 (vehicles of keepers with diplomatic or consular privileges are exempt from periodic inspection)"
|
|
904
|
+
notes: >-
|
|
905
|
+
THE CD SERIES. Art. 86 Abs. 1 defines eligibility exactly: service cars of
|
|
906
|
+
diplomatic missions and the private vehicles of their diplomatic staff; the
|
|
907
|
+
same for permanent missions to intergovernmental organisations; and service
|
|
908
|
+
cars of institutional beneficiaries under Art. 2 Abs. 1 lit. a, b, i, j, k, l
|
|
909
|
+
and m of the Gaststaatgesetz (SR 192.12) plus the vehicles of their most
|
|
910
|
+
senior officials who enjoy diplomatic status in Switzerland. Art. 86 Abs. 4
|
|
911
|
+
forbids the use of a SEPARATE "CD" or "AT" sign (a loose badge) outright.
|
|
912
|
+
TWO RECORDED GAPS, both deliberate: the country/organisation code table
|
|
913
|
+
behind the second number group is an FDFA allocation and is not in the VZV;
|
|
914
|
+
and the ordinance does not assign the dark-green and dark-blue fields to
|
|
915
|
+
particular signs. Neither was guessed. The Swiss design choice is the mirror
|
|
916
|
+
image of Germany's: Germany hides diplomatic status in an ordinary-looking
|
|
917
|
+
plate, Switzerland puts a coloured sign field on the plate and takes the
|
|
918
|
+
coats of arms off.
|
|
919
|
+
|
|
920
|
+
- id: ch-consular-cc
|
|
921
|
+
class: consular
|
|
922
|
+
categories: [car, van, motorcycle]
|
|
923
|
+
period: { start: 1977 }
|
|
924
|
+
period_evidence: instrument-in-force
|
|
925
|
+
matching: strict
|
|
926
|
+
format:
|
|
927
|
+
pattern: "CC LL 999-999"
|
|
928
|
+
regex: '\ACC[- ]?[A-Z]{2}[- ]?\d{1,4}[- ]\d{1,4}\z'
|
|
929
|
+
regex_strict: '\ACC[- ]?(?:AG|AI|AR|BE|BL|BS|FR|GE|GL|GR|JU|LU|NE|NW|OW|SG|SH|SO|SZ|TG|TI|UR|VD|VS|ZG|ZH)[- ]?\d{1,4}[- ]\d{1,4}\z'
|
|
930
|
+
regex_statutory: '\ACC[- ]?[A-Z]{2}[- ]?\d+[- ]\d+\z'
|
|
931
|
+
charset: { notes: "identical structure to ch-diplomatic-cd; only the sign differs" }
|
|
932
|
+
design:
|
|
933
|
+
plate: { w: 300, h: 80, unit: mm }
|
|
934
|
+
plate_variants:
|
|
935
|
+
- { w: 500, h: 110, unit: mm }
|
|
936
|
+
- { w: 300, h: 160, unit: mm }
|
|
937
|
+
background: { color: "#FFFFFF", finish: retroreflective-optional, hex_basis: observed }
|
|
938
|
+
foreground: "#000000"
|
|
939
|
+
sign_field: { color: "#00008B", alt_color: "#006400", foreground: "#FFFFFF", hex_basis: observed, note: "dark blue OR dark green per Art. 82 Abs. 2 lit. d; the assignment is a recorded gap — see ch-diplomatic-cd" }
|
|
940
|
+
band: { side: none }
|
|
941
|
+
emblem: { present: false, note: "no arms (Art. 84 Abs. 4)" }
|
|
942
|
+
layout_front: "sign field, canton letters, two dot-separated number groups (Art. 85 Abs. 4)"
|
|
943
|
+
rear_differs: true
|
|
944
|
+
binding: owner
|
|
945
|
+
region_encoding: "plates/_decode/ch-cantons.yml"
|
|
946
|
+
sources:
|
|
947
|
+
- "https://www.fedlex.admin.ch/eli/cc/1976/2423_2423_2423/de # VZV Art. 86 Abs. 2 ('Das Zeichen «CC» ist für Dienstwagen der von einem Berufsbeamten geleiteten konsularischen Posten und für Motorfahrzeuge von Berufskonsularbeamten bestimmt'); Art. 86 Abs. 4 (separate CC signs allowed for at most one car of each honorary head of post holding the Federal Council's exequatur, with 'CC-Zeichen bewilligt' entered in the Fahrzeugausweis); Art. 82 Abs. 2 lit. d; Art. 84 Abs. 4; Art. 85 Abs. 4"
|
|
948
|
+
notes: >-
|
|
949
|
+
THE CC SERIES — career consular posts and career consular officers. Its own
|
|
950
|
+
series rather than a variant of CD because the printed sign is part of the
|
|
951
|
+
string. The one asymmetry worth recording: Art. 86 Abs. 4 bans separate
|
|
952
|
+
(loose) "CD" and "AT" signs absolutely, but permits a separate "CC" sign for
|
|
953
|
+
at most one car of each HONORARY head of post who has been granted the
|
|
954
|
+
exequatur — with the permission noted in the Fahrzeugausweis. So a Swiss "CC"
|
|
955
|
+
badge on a car is not necessarily a CC PLATE, which is a distinction an image
|
|
956
|
+
pipeline will meet before a string parser does.
|
|
957
|
+
|
|
958
|
+
- id: ch-diplomatic-at
|
|
959
|
+
class: diplomatic
|
|
960
|
+
categories: [car, van, motorcycle]
|
|
961
|
+
period: { start: 1977 }
|
|
962
|
+
period_evidence: instrument-in-force
|
|
963
|
+
matching: strict
|
|
964
|
+
format:
|
|
965
|
+
pattern: "AT LL 999-999"
|
|
966
|
+
regex: '\AAT[- ]?[A-Z]{2}[- ]?\d{1,4}[- ]\d{1,4}\z'
|
|
967
|
+
regex_strict: '\AAT[- ]?(?:AG|AI|AR|BE|BL|BS|FR|GE|GL|GR|JU|LU|NE|NW|OW|SG|SH|SO|SZ|TG|TI|UR|VD|VS|ZG|ZH)[- ]?\d{1,4}[- ]\d{1,4}\z'
|
|
968
|
+
regex_statutory: '\AAT[- ]?[A-Z]{2}[- ]?\d+[- ]\d+\z'
|
|
969
|
+
design:
|
|
970
|
+
plate: { w: 300, h: 80, unit: mm }
|
|
971
|
+
plate_variants:
|
|
972
|
+
- { w: 500, h: 110, unit: mm }
|
|
973
|
+
- { w: 300, h: 160, unit: mm }
|
|
974
|
+
background: { color: "#FFFFFF", finish: retroreflective-optional, hex_basis: observed }
|
|
975
|
+
foreground: "#000000"
|
|
976
|
+
sign_field: { color: "#00008B", alt_color: "#006400", foreground: "#FFFFFF", hex_basis: observed, note: "dark blue OR dark green per Art. 82 Abs. 2 lit. d; assignment is a recorded gap" }
|
|
977
|
+
band: { side: none }
|
|
978
|
+
emblem: { present: false }
|
|
979
|
+
layout_front: "sign field, canton letters, two dot-separated number groups (Art. 85 Abs. 4)"
|
|
980
|
+
rear_differs: true
|
|
981
|
+
binding: owner
|
|
982
|
+
region_encoding: "plates/_decode/ch-cantons.yml"
|
|
983
|
+
sources:
|
|
984
|
+
- "https://www.fedlex.admin.ch/eli/cc/1976/2423_2423_2423/de # VZV Art. 86 Abs. 3 ('Das Zeichen «AT» ist für Motorfahrzeuge der Mitglieder des Verwaltungs- und technischen Personals der diplomatischen Missionen bestimmt'); Art. 86 Abs. 4 (separate AT signs forbidden); Art. 82 Abs. 2 lit. d; Art. 84 Abs. 4; Art. 85 Abs. 4"
|
|
985
|
+
notes: >-
|
|
986
|
+
THE AT SERIES — administrative and technical staff of diplomatic missions.
|
|
987
|
+
Recorded as `class: diplomatic` because _meta/classes.yml has no finer value;
|
|
988
|
+
the legal category is narrower than CD and sits below it in the privileges
|
|
989
|
+
hierarchy, which the sign itself is designed to show. Switzerland is unusual
|
|
990
|
+
in giving A&T staff their own SIGN at all: most jurisdictions fold them into
|
|
991
|
+
the diplomatic or the ordinary series.
|
|
992
|
+
|
|
993
|
+
# =========================================================================
|
|
994
|
+
# PROVISIONAL REGISTRATION — the red bar, the control sticker, and "Z".
|
|
995
|
+
# =========================================================================
|
|
996
|
+
- id: ch-provisional
|
|
997
|
+
class: temporary
|
|
998
|
+
categories: [car, van, truck, bus, motorcycle, trailer]
|
|
999
|
+
period: { start: 1977 }
|
|
1000
|
+
period_evidence: instrument-in-force
|
|
1001
|
+
matching: strict
|
|
1002
|
+
format:
|
|
1003
|
+
pattern: "LL 999999"
|
|
1004
|
+
regex: '\A[A-Z]{2}[- ]?\d{1,6}\z'
|
|
1005
|
+
regex_strict: '\A(?:AG|AI|AR|BE|BL|BS|FR|GE|GL|GR|JU|LU|NE|NW|OW|SG|SH|SO|SZ|TG|TI|UR|VD|VS|ZG|ZH)[- ]?[1-9]\d{0,5}\z'
|
|
1006
|
+
regex_statutory: '\A[A-Z]{2}[- ]?\d+\z'
|
|
1007
|
+
charset:
|
|
1008
|
+
notes: >-
|
|
1009
|
+
Same string grammar as an ordinary plate — the special marking is the RED
|
|
1010
|
+
BAR, which is a design element and not a character. VVV Anhang 2 A Ziff. 1:
|
|
1011
|
+
"Die Schilder für provisorisch immatrikulierte Motorfahrzeuge werden
|
|
1012
|
+
unabhängig von den übrigen Kontrollschildern nummeriert. Mit der
|
|
1013
|
+
Nummerierung kann von vorne begonnen werden, wenn Gewähr besteht, dass
|
|
1014
|
+
sich nicht gleichzeitig zwei verschiedene provisorisch immatrikulierte
|
|
1015
|
+
Motorwagen oder Motorräder mit gültigen Kontrollschildern gleicher Nummer
|
|
1016
|
+
in Verkehr befinden." — an independently restartable number space, the
|
|
1017
|
+
only one in this file that may legally REUSE a number.
|
|
1018
|
+
design:
|
|
1019
|
+
plate: { w: 300, h: 80, unit: mm, note: "VVV Anhang 2 A Ziff. 2: these plates are of THIN SHEET METAL and otherwise follow VZV Art. 83 and 85" }
|
|
1020
|
+
plate_variants:
|
|
1021
|
+
- { w: 500, h: 110, unit: mm }
|
|
1022
|
+
- { w: 300, h: 160, unit: mm }
|
|
1023
|
+
- { w: 180, h: 140, unit: mm, note: "motorcycle" }
|
|
1024
|
+
background: { color: "#FFFFFF", finish: retroreflective-optional, hex_basis: observed }
|
|
1025
|
+
foreground: "#000000"
|
|
1026
|
+
band: { side: none }
|
|
1027
|
+
emblem: { present: true, rendered: placeholder, note: "as the ordinary plates — VVV Anhang 2 A Ziff. 2 applies VZV Art. 83 and 85 unchanged" }
|
|
1028
|
+
extra_field:
|
|
1029
|
+
name: "roter Balken"
|
|
1030
|
+
position: "immediately after the control number"
|
|
1031
|
+
color: "#FF0000"
|
|
1032
|
+
hex_basis: observed
|
|
1033
|
+
raised: true
|
|
1034
|
+
dimensions: { front_and_motorcycle: { w: 33, h: 67, unit: mm }, rear_motorcar: { w: 36, h: 75, unit: mm } }
|
|
1035
|
+
content: "the year BEFORE the year of expiry, impressed into the bar (VVV Anhang 2 A Ziff. 4)"
|
|
1036
|
+
note: >-
|
|
1037
|
+
VVV Anhang 2 A Ziff. 3, verbatim: "Die Schilder für provisorisch
|
|
1038
|
+
immatrikulierte Motorfahrzeuge tragen anschliessend an die Kontrollnummer
|
|
1039
|
+
einen erhaben gepressten, senkrechten roten Balken ... Auf den vorderen
|
|
1040
|
+
Schildern für Motorwagen und den Schildern für Motorräder und für
|
|
1041
|
+
Kleinmotorräder ist der rote Balken 33 mm breit und 67 mm hoch, auf den
|
|
1042
|
+
hinteren Schildern für Motorwagen 36 mm breit und 75 mm hoch."
|
|
1043
|
+
control_sticker:
|
|
1044
|
+
name: Kontrollmarke
|
|
1045
|
+
placement: "stuck onto the red bar"
|
|
1046
|
+
dimensions: { w: 30, h: 50, unit: mm, corner_radius_mm: 2 }
|
|
1047
|
+
background: "#FF0000"
|
|
1048
|
+
content: "the expiry MONTH in black, 33 mm high with a 4.5 mm stroke, centred; the last two digits of the expiry YEAR in white"
|
|
1049
|
+
note: "VVV Art. 18 Abs. 2 and Anhang 2 B Ziff. 1-2; the stickers are procured by the cantons (B Ziff. 3)"
|
|
1050
|
+
rear_differs: true
|
|
1051
|
+
validity:
|
|
1052
|
+
max_months: 12
|
|
1053
|
+
note: >-
|
|
1054
|
+
VVV Art. 17 Abs. 1-2: the Fahrzeugausweis for a provisionally registered
|
|
1055
|
+
vehicle is time-limited so that it expires at latest on the day given in
|
|
1056
|
+
the insurance proof and ALWAYS at the end of a month; validity must end at
|
|
1057
|
+
latest in the twelfth month following issue, except that certificates
|
|
1058
|
+
issued in October or November may run to the end of the FOLLOWING year.
|
|
1059
|
+
The plates lose validity with the certificate (Art. 18 Abs. 1) and,
|
|
1060
|
+
uniquely, need not be handed back — VZV Art. 87 Abs. 5 excludes exactly
|
|
1061
|
+
these plates from the rule that plates stay the authority's property.
|
|
1062
|
+
region_encoding: "plates/_decode/ch-cantons.yml"
|
|
1063
|
+
sources:
|
|
1064
|
+
- "https://www.fedlex.admin.ch/eli/cc/1959/1271_1321_1317/de # VVV Art. 16 (a vehicle is provisionally registered when its Standort is in Switzerland only, or only still, for a limited time; uncleared vehicles only provisionally and only with customs consent); Art. 17 Abs. 1-5 (validity, extension, Standort, fees); Art. 18 Abs. 1-2 (special plates per Anhang 2 A; the control sticker per Anhang 2 B); Art. 19 (insurance); Anhang 2 A Ziff. 1-4 and B Ziff. 1-3 (independent numbering, thin sheet metal, the red bar and its dimensions, the impressed year, the sticker)"
|
|
1065
|
+
- "https://www.fedlex.admin.ch/eli/cc/1976/2423_2423_2423/de # VZV Art. 82 Abs. 2 lit. a (plates for provisional registration are specially marked); Art. 87 Abs. 5 (provisional plates are the exception to authority ownership); Art. 79 Abs. 2-3 (validity governed by the VVV)"
|
|
1066
|
+
notes: >-
|
|
1067
|
+
PROVISORISCHE IMMATRIKULATION. Switzerland's answer to the export and transit
|
|
1068
|
+
plate — and it is deliberately NOT either: the criterion is that the vehicle's
|
|
1069
|
+
Standort is in Switzerland only temporarily (VVV Art. 16 Abs. 1), whether it
|
|
1070
|
+
is arriving or leaving. The plate is an ordinary cantonal plate with a raised
|
|
1071
|
+
vertical RED BAR after the number, a year impressed into the bar and a
|
|
1072
|
+
month/year sticker on top of it, so a Swiss provisional plate carries a date
|
|
1073
|
+
that no string parser can see. Its number space may be restarted from 1,
|
|
1074
|
+
which no other Swiss series may do. period.start 1977 is the VZV/VVV regime
|
|
1075
|
+
date; Anhang 2 took its present form from the amendment of 15 April 1987
|
|
1076
|
+
(AS 1987 628) and was last revised with effect from 1 February 2019
|
|
1077
|
+
(AS 2019 249) — neither earlier text was retrieved.
|
|
1078
|
+
|
|
1079
|
+
- id: ch-provisional-z
|
|
1080
|
+
class: temporary
|
|
1081
|
+
categories: [car, van, truck, bus, motorcycle]
|
|
1082
|
+
period: { start: 1987 }
|
|
1083
|
+
period_evidence: instrument-in-force
|
|
1084
|
+
matching: strict
|
|
1085
|
+
format:
|
|
1086
|
+
pattern: "LL 999999Z"
|
|
1087
|
+
regex: '\A[A-Z]{2}[- ]?\d{1,6}[- ]?Z\z'
|
|
1088
|
+
regex_strict: '\A(?:AG|AI|AR|BE|BL|BS|FR|GE|GL|GR|JU|LU|NE|NW|OW|SG|SH|SO|SZ|TG|TI|UR|VD|VS|ZG|ZH)[- ]?[1-9]\d{0,5}[- ]?Z\z'
|
|
1089
|
+
regex_statutory: '\A(?:Z[- ]?[A-Z]{2}[- ]?\d+|[A-Z]{2}[- ]?Z[- ]?\d+|[A-Z]{2}[- ]?\d+[- ]?Z)\z'
|
|
1090
|
+
charset:
|
|
1091
|
+
fixed_letters: "Z"
|
|
1092
|
+
notes: >-
|
|
1093
|
+
VVV Anhang 2 A Ziff. 3, second half: "Schilder unverzollter Fahrzeuge
|
|
1094
|
+
tragen zusätzlich den Buchstaben «Z»." The letter is prescribed; its
|
|
1095
|
+
POSITION is not, anywhere in the VVV or the VZV. `regex` writes the
|
|
1096
|
+
trailing position, which is the observed printed form; `regex_statutory`
|
|
1097
|
+
admits every position the text leaves open. Recorded gap.
|
|
1098
|
+
design:
|
|
1099
|
+
plate: { w: 300, h: 80, unit: mm }
|
|
1100
|
+
plate_variants:
|
|
1101
|
+
- { w: 500, h: 110, unit: mm }
|
|
1102
|
+
- { w: 300, h: 160, unit: mm }
|
|
1103
|
+
- { w: 180, h: 140, unit: mm, note: "motorcycle" }
|
|
1104
|
+
background: { color: "#FFFFFF", finish: retroreflective-optional, hex_basis: observed }
|
|
1105
|
+
foreground: "#000000"
|
|
1106
|
+
band: { side: none }
|
|
1107
|
+
emblem: { present: true, rendered: placeholder }
|
|
1108
|
+
extra_field:
|
|
1109
|
+
name: "roter Balken"
|
|
1110
|
+
color: "#FF0000"
|
|
1111
|
+
hex_basis: observed
|
|
1112
|
+
note: "as ch-provisional — the Z is ADDITIONAL to the red bar, not instead of it"
|
|
1113
|
+
rear_differs: true
|
|
1114
|
+
validity: { max_months: 12, note: "as ch-provisional; VVV Art. 17 Abs. 3 additionally lets customs authorise up to 48 hours' use on re-entry after the provisional registration expired abroad, against a frontier insurance under Art. 44" }
|
|
1115
|
+
region_encoding: "plates/_decode/ch-cantons.yml"
|
|
1116
|
+
sources:
|
|
1117
|
+
- "https://www.fedlex.admin.ch/eli/cc/1959/1271_1321_1317/de # VVV Anhang 2 A Ziff. 3 (the red bar, its dimensions, and 'Schilder unverzollter Fahrzeuge tragen zusätzlich den Buchstaben «Z»' — footnoted AS 1987 1350); Art. 16 Abs. 2 (uncleared vehicles may be registered only provisionally and only with the customs authorities' consent); Art. 17 Abs. 3 (the 48-hour customs tolerance)"
|
|
1118
|
+
- "https://www.fedlex.admin.ch/eli/cc/1976/2423_2423_2423/de # VZV Art. 79 Abs. 3 (a provisional certificate for an uncleared vehicle may exceed the customs authorisation only where the authorisation expressly says so)"
|
|
1119
|
+
notes: >-
|
|
1120
|
+
THE "Z" PLATE — provisional registration of an UNCLEARED (unverzollt) vehicle,
|
|
1121
|
+
the Swiss plate every plate-spotter asks about. Its own series and not a
|
|
1122
|
+
variant of ch-provisional because the printed string differs by a character.
|
|
1123
|
+
period.start 1987 follows Anhang 2's footnoted amendment (AS 1987 1350); the
|
|
1124
|
+
Anhang as a whole took its present form from the amendment of 15 April 1987
|
|
1125
|
+
(AS 1987 628). THE POSITION OF THE Z IS A RECORDED GAP: the ordinance
|
|
1126
|
+
prescribes the letter and is silent on where it goes, so `regex` carries the
|
|
1127
|
+
observed trailing form and `regex_statutory` carries the full legal latitude
|
|
1128
|
+
— the honest use of the §2.7 tier that the German file uses for statutes that
|
|
1129
|
+
are wider than practice.
|
|
1130
|
+
|
|
1131
|
+
# =========================================================================
|
|
1132
|
+
# DEALER — Händlerschilder with the letter "U", and their 1977 predecessors.
|
|
1133
|
+
# =========================================================================
|
|
1134
|
+
- id: ch-dealer-u
|
|
1135
|
+
class: dealer
|
|
1136
|
+
categories: [car, van, truck, bus, motorcycle, moped, trailer, tractor, machine]
|
|
1137
|
+
period: { start: 1977 }
|
|
1138
|
+
period_evidence: transitional-provision
|
|
1139
|
+
matching: strict
|
|
1140
|
+
format:
|
|
1141
|
+
pattern: "LL 999999U"
|
|
1142
|
+
regex: '\A[A-Z]{2}[- ]?\d{1,6}[- ]?U\z'
|
|
1143
|
+
regex_strict: '\A(?:AG|AI|AR|BE|BL|BS|FR|GE|GL|GR|JU|LU|NE|NW|OW|SG|SH|SO|SZ|TG|TI|UR|VD|VS|ZG|ZH)[- ]?[1-9]\d{0,5}[- ]?U\z'
|
|
1144
|
+
regex_statutory: '\A(?:U[- ]?[A-Z]{2}[- ]?\d+|[A-Z]{2}[- ]?U[- ]?\d+|[A-Z]{2}[- ]?\d+[- ]?U)\z'
|
|
1145
|
+
charset:
|
|
1146
|
+
fixed_letters: "U"
|
|
1147
|
+
notes: >-
|
|
1148
|
+
VZV Art. 82 Abs. 2 lit. c, verbatim and in full: "die Händlerschilder mit
|
|
1149
|
+
dem Buchstaben «U»". That is the entire federal rule — the letter is
|
|
1150
|
+
mandated and its POSITION is not stated in the VZV, the VVV or the VTS.
|
|
1151
|
+
Same treatment as ch-provisional-z: `regex` writes the observed trailing
|
|
1152
|
+
U, `regex_statutory` admits the three positions the text leaves open, and
|
|
1153
|
+
the position is a recorded gap for the verifier.
|
|
1154
|
+
progression: "own number space: Art. 84 Abs. 2 splits numbering by SPECIAL MARKING as well as by colour, so the U series counts from 1 independently in each canton"
|
|
1155
|
+
design:
|
|
1156
|
+
plate: { w: 300, h: 80, unit: mm, note: "front; rear 300x160 or 500x110" }
|
|
1157
|
+
plate_variants:
|
|
1158
|
+
- { w: 500, h: 110, unit: mm }
|
|
1159
|
+
- { w: 300, h: 160, unit: mm }
|
|
1160
|
+
- { w: 180, h: 140, unit: mm, note: "motorcycle dealer plate" }
|
|
1161
|
+
- { w: 100, h: 140, unit: mm, note: "Kleinmotorrad dealer plate" }
|
|
1162
|
+
background: { color: "#FFFFFF", finish: retroreflective-optional, hex_basis: observed, spec_note: "the ground colour follows the vehicle family the Kollektiv-Fahrzeugausweis covers — light green for land- und forstwirtschaftliche Motorfahrzeuge, light blue for Arbeitsmotorfahrzeuge (VVV Art. 22 Abs. 1 lit. d-e read with VZV Art. 82 Abs. 1)" }
|
|
1163
|
+
foreground: "#000000"
|
|
1164
|
+
band: { side: none }
|
|
1165
|
+
emblem: { present: true, rendered: placeholder }
|
|
1166
|
+
rear_differs: true
|
|
1167
|
+
binding: business
|
|
1168
|
+
binding_note: >-
|
|
1169
|
+
OVERRIDES the file-level `owner`. A Händlerschild hangs on a KOLLEKTIV-
|
|
1170
|
+
FAHRZEUGAUSWEIS issued to a BUSINESS (VVV Art. 23 Abs. 1) and is fitted to
|
|
1171
|
+
whatever qualifying vehicle the business needs to move — "Der Kollektiv-
|
|
1172
|
+
Fahrzeugausweis berechtigt zum Anbringen der darin genannten Händlerschilder
|
|
1173
|
+
an geprüften und nichtgeprüften ... Fahrzeugen der im Ausweis genannten Art"
|
|
1174
|
+
(Art. 24 Abs. 1). Neither vehicle-keyed nor keeper-keyed consumers may join
|
|
1175
|
+
on it.
|
|
1176
|
+
validity: { note: "VZV Art. 79 Abs. 1: the Kollektiv-Fahrzeugausweis is valid for an indefinite period, unlike the Tagesausweis and the provisional certificate" }
|
|
1177
|
+
region_encoding: "plates/_decode/ch-cantons.yml"
|
|
1178
|
+
sources:
|
|
1179
|
+
- "https://www.fedlex.admin.ch/eli/cc/1976/2423_2423_2423/de # VZV Art. 82 Abs. 2 lit. c (Händlerschilder carry the letter U); Art. 84 Abs. 2 (separate numbering per special marking); Art. 79 Abs. 1 (indefinite validity); Art. 151 Abs. 4 ('Kontrollschilder mit besonderer Kennzeichnung nach Artikel 82 Absatz 2 Buchstaben b und c werden ab 1. Juli 1977 abgegeben.')"
|
|
1180
|
+
- "https://www.fedlex.admin.ch/eli/cc/1959/1271_1321_1317/de # VVV Art. 22 (dealer plates are issued for Motorwagen, Motorräder, Kleinmotorräder, agricultural and forestry motor vehicles, work motor vehicles and trailers, with the cross-use table of Abs. 2 and the towing-vehicle rear-plate rule of Abs. 2bis); Art. 23 (issued to businesses meeting the Anhang 4 conditions); Art. 23a (withdrawal); Art. 24 Abs. 1-6 (permitted uses, the 3.5 t goods-transport restrictions, documentation); Art. 25 (who may drive; the two-year log for unaccompanied test drives by prospective buyers); Art. 26 (insurance)"
|
|
1181
|
+
notes: >-
|
|
1182
|
+
HÄNDLERSCHILDER — the Swiss dealer plate, and the ONLY series in this file
|
|
1183
|
+
with a start date that is a real issuance date rather than an instrument
|
|
1184
|
+
date. VZV Art. 151 Abs. 4 says it in terms: specially-marked plates under
|
|
1185
|
+
Art. 82 Abs. 2 lit. b and c "werden ab 1. Juli 1977 abgegeben", so 1 July
|
|
1186
|
+
1977 is the earliest possible U plate and `period_evidence` is
|
|
1187
|
+
`transitional-provision`, not `instrument-in-force`. The compensating audit
|
|
1188
|
+
trail Germany builds into its 06 plate has a Swiss analogue in VVV Art. 25
|
|
1189
|
+
Abs. 3: a business that lets a prospective buyer take an unaccompanied test
|
|
1190
|
+
drive must keep a register of those journeys for TWO YEARS and show it to
|
|
1191
|
+
the enforcement authorities on demand.
|
|
1192
|
+
|
|
1193
|
+
- id: ch-dealer-pre1977
|
|
1194
|
+
class: dealer
|
|
1195
|
+
categories: [car, van, truck, bus, motorcycle, trailer]
|
|
1196
|
+
period: { start: 1977, end: 1980 }
|
|
1197
|
+
period_evidence: transitional-window
|
|
1198
|
+
matching: recall-only
|
|
1199
|
+
format:
|
|
1200
|
+
pattern: "LL 999999"
|
|
1201
|
+
regex: '\A[A-Z]{2}[- ]?\d{1,6}\z'
|
|
1202
|
+
pattern_note: >-
|
|
1203
|
+
RECALL-ONLY, and for the §2.7 reason exactly: these are the pre-VZV dealer
|
|
1204
|
+
and test plates, which by definition carried NO special marking, so their
|
|
1205
|
+
printed form is the ordinary canton-letters-plus-number shape and the regex
|
|
1206
|
+
is the ordinary standard-series regex. A match says only "this string has
|
|
1207
|
+
the shape of a Swiss cantonal registration" — never that it is a pre-1977
|
|
1208
|
+
dealer plate. There is no narrowing available and, per §2.7, a recall-only
|
|
1209
|
+
series may not carry a regex_strict.
|
|
1210
|
+
design:
|
|
1211
|
+
plate: { w: 300, h: 80, unit: mm, note: "format not separately sourced; the VZV's own transitional rule (Art. 151 Abs. 5) contemplates 'Kontrollschilder früherer Formate' still in circulation" }
|
|
1212
|
+
background: { color: "#FFFFFF", finish: unspecified, hex_basis: observed }
|
|
1213
|
+
foreground: "#000000"
|
|
1214
|
+
band: { side: none }
|
|
1215
|
+
emblem: { present: true, rendered: placeholder }
|
|
1216
|
+
rear_differs: true
|
|
1217
|
+
binding: business
|
|
1218
|
+
region_encoding: "plates/_decode/ch-cantons.yml"
|
|
1219
|
+
sources:
|
|
1220
|
+
- "https://www.fedlex.admin.ch/eli/cc/1976/2423_2423_2423/de # VZV Art. 151 Abs. 4, verbatim: 'Die bisherigen Schilder für Mietwagen, Händler- und Versuchsschilder sind innerhalb dreier Jahre seit Inkrafttreten dieser Verordnung gegen Schilder mit besonderer Kennzeichnung auszutauschen.'; Art. 151 Abs. 5 ('Kontrollschilder früherer Formate sind zu ersetzen, wenn die zuständige Behörde den Fahrzeughalter dazu auffordert'); Art. 152 (repealing the pre-VZV Bundesratsbeschlüsse, including the BRB of 22 January 1969 on diplomatic and consular plates)"
|
|
1221
|
+
notes: >-
|
|
1222
|
+
THE ONE SERIES BACK, for the dealer class — and the honest limits of it.
|
|
1223
|
+
PERIOD SEMANTICS, stated plainly: `start: 1977` is NOT this series' start.
|
|
1224
|
+
These plates ("die bisherigen Schilder für Mietwagen, Händler- und
|
|
1225
|
+
Versuchsschilder") predate the VZV and their own start date is unsourced,
|
|
1226
|
+
because the instruments that created them were repealed by VZV Art. 152 and
|
|
1227
|
+
their texts were not retrievable from fedlex in this pass. What the period
|
|
1228
|
+
records is the WINDOW in which they remained lawfully on Swiss roads under
|
|
1229
|
+
the VZV's own transitional rule: from the VZV's entry into force on 1 January
|
|
1230
|
+
1977 until the three-year exchange deadline expired on 1 January 1980. That
|
|
1231
|
+
is a hard, primary, dated close — `end: 1980` is sourced, `start: 1977` is a
|
|
1232
|
+
floor. A verifier who reaches AS 1976 2423's printed original, or the
|
|
1233
|
+
pre-1977 Bundesratsbeschlüsse listed in Art. 152, can replace the floor with
|
|
1234
|
+
a real start and should.
|
|
1235
|
+
|
|
1236
|
+
- id: ch-rental-1977
|
|
1237
|
+
class: dealer
|
|
1238
|
+
categories: [car, van, bus]
|
|
1239
|
+
period: { start: 1977, end: 2001 }
|
|
1240
|
+
period_evidence: transitional-provision
|
|
1241
|
+
matching: recall-only
|
|
1242
|
+
format:
|
|
1243
|
+
pattern: "LL 999999"
|
|
1244
|
+
regex: '\A[A-Z]{2}[- ]?\d{1,6}\z'
|
|
1245
|
+
pattern_note: >-
|
|
1246
|
+
RECALL-ONLY. Art. 82 Abs. 2 lit. b required rental-car plates to be
|
|
1247
|
+
specially marked but the repealing amendment took the DESCRIPTION of the
|
|
1248
|
+
marking out with the letter, so the consolidated text now reads "b. …" and
|
|
1249
|
+
no primary in reach says what the mark was. The regex is therefore the
|
|
1250
|
+
ordinary cantonal shape and a match is a shape hit only. Guessing the
|
|
1251
|
+
marking letter was declined.
|
|
1252
|
+
design:
|
|
1253
|
+
plate: { w: 300, h: 80, unit: mm }
|
|
1254
|
+
background: { color: "#FFFFFF", finish: retroreflective-optional, hex_basis: observed }
|
|
1255
|
+
foreground: "#000000"
|
|
1256
|
+
band: { side: none }
|
|
1257
|
+
emblem: { present: true, rendered: placeholder }
|
|
1258
|
+
rear_differs: true
|
|
1259
|
+
region_encoding: "plates/_decode/ch-cantons.yml"
|
|
1260
|
+
sources:
|
|
1261
|
+
- "https://www.fedlex.admin.ch/eli/cc/1976/2423_2423_2423/de # VZV Art. 82 Abs. 2 lit. b, now shown as repealed with the footnote 'Aufgehoben durch Ziff. I der V vom 11. April 2001, mit Wirkung seit 1. Juni 2001 (AS 2001 1387)'; Art. 151 Abs. 4 (specially-marked plates under Abs. 2 lit. b and c issued from 1 July 1977)"
|
|
1262
|
+
notes: >-
|
|
1263
|
+
THE MIETWAGEN (RENTAL-CAR) SERIES — ENDED, and the cleanest dated pair of
|
|
1264
|
+
brackets in this file: it begins on 1 July 1977 with Art. 151 Abs. 4's
|
|
1265
|
+
issuance date for specially-marked plates under Art. 82 Abs. 2 lit. b, and it
|
|
1266
|
+
ends on 1 June 2001 with lit. b's repeal (AS 2001 1387). Both dates come from
|
|
1267
|
+
the consolidated ordinance's own apparatus. CLASS CAVEAT: recorded as
|
|
1268
|
+
`dealer` because the VZV itself grouped rental plates with dealer and test
|
|
1269
|
+
plates in Art. 151 Abs. 4 and because the marking attached to a BUSINESS, but
|
|
1270
|
+
a rental car's plate was vehicle-fitted, not floating like a Händlerschild —
|
|
1271
|
+
a vocabulary gap worth a `rental` value if another jurisdiction produces one.
|
|
1272
|
+
Since 1 June 2001 Swiss rental cars have carried ordinary plates, which is
|
|
1273
|
+
why no live successor series exists.
|