Date: 2026-09-30 · Library: Urban Landscape Graphics (ulg) 0.1.0, house style "UrbanSens Ecological Vector Style"
How to read this#
Scope. This report states which laws, technical rules, official catalogues and de-facto conventions the library follows, how far, and where it deliberately does not. "Conformance" has three meanings here:
- Semantics: the library reads the codes of a scheme and draws each class as a catalog element (crosswalks).
- Convention: colours, textures, line styles and symbols respect what official maps and plans already use (themes, motifs, status symbols).
- Rules and numbers: where a regulation or technical rule fixes a number (a weighting factor, a buffer, a class limit), the library uses it and names the source.
Method. This is a synthesis. Every statement about a standard comes from the seven research streams of 2026-09-30 and their working notes; nothing was looked up again. Every statement about the library was checked against the code and data in src/ulg/. The library was still changing on the day of writing; library statements reflect the last check.
| Stream | Scope |
|---|---|
| 01 | PlanZV, XPlanung/XPlanGML, ALKIS/ATKIS and their signature catalogues, basemap.de, LBM-DE |
| 02 | BfN biotope list, BKompV, BayKompV, § 30 BNatSchG / Art. 23 BayNatSchG, FFH habitat types, BfN plan symbols, Bavarian and Berlin biotope maps |
| 03 | CORINE, Urban Atlas, CLC+ Backbone, Nature Restoration Regulation, EUNIS, MAES / EU ecosystem typology, INSPIRE, LUCAS/EAGLE, LCZ, ESA WorldCover |
| 04 | OSM tags and OSM Carto, NL BGT/IMGeo, Swiss AV, Austrian DKM, England's biodiversity metric and UKHab, prior-art legends |
| 05 | FLL OK FREI, DIN 276 KG 500, lawn and planting standards, green roofs and façades, surfaces and bonds, trees, HOAI scales |
| 06 | Berlin BFF and similar factors, runoff coefficients, sealing, albedo; ISO 11091, building-drawing standards, status colours, DIN 18920; VDI 3787, UTCI/PET; minimum sizes |
| 07 | QGIS formats, SLD/SE, GeoServer, INSPIRE view services, web map libraries, hand-drawn rendering, design tokens, accessibility |
| notes | page-image transcriptions behind streams 02 and 04 |
Evidence marks. Each stream defines its own marks; this report keeps them as given:
| Mark | Meaning |
|---|---|
| V | verified in a primary source during the research (streams 04 and 07 read web pages through a text-extraction tool) |
| V* | primary source read through a summarising extraction (02), or a colour sampled from an official legend swatch (03 §5.6) |
| V-img | verified on the page images of the primary source (04) |
| S | secondary source |
| R | recalled, not verified (a lead, not a fact) |
| A / D | author's assessment (03) / own derivation or design proposal (04, 07) |
| T | tested locally by the research agent (07) |
References in brackets point to stream and section: [01 §4.1] is stream 01, section 4.1. "Not verified" is written wherever a stream says so.
The library in brief. ulg holds 173 elements in src/ulg/data/elements/*.json, grouped as vegetation.*, blue_green, trees, water, ground, surface.*, landuse, built, furniture, ecology, boundary, relief, planning, analysis, context and other. An element has a fill and outline (by default the fill darkened by 10 %), texture recipes per level of detail, a line or point symbol, German and English aliases, and attributes documented in src/ulg/data/settings.json. External codes are attached at load time from the crosswalk files in src/ulg/data/crosswalks/ (format: crosswalk-format). The house palette is src/ulg/data/palette.json (theme "mellow"); six more themes live in src/ulg/data/themes/. Exporters are in src/ulg/export/, indicators in src/ulg/analysis.py, the legibility report in src/ulg/check.py.
Binding levels. Law (statute or ordinance) · technical rule (DIN, ISO, VDI, DWA, FLL; binding by contract or reference) · official standard (data model or signature catalogue of a public body) · recommendation · convention (de-facto practice).
1. Summary#
- Colour is almost never law. The Planzeichenverordnung (PlanZV; ordinance on plan symbols), the only statutory symbology found, names colours in words only, applies only to Bauleitpläne (statutory land-use plans), is a "soll" rule and tolerates deviations while the plan stays legible (§ 2 Abs. 1–5, V) [01 §1.2]. BKompV and the Bavarian value list prescribe no colours [02 §0]. ulg: the house style is free; the
planzvtheme uses the de-facto hex values of the XPlanung reference implementation xPlanBox. - Numeric official palettes exist for more than a dozen schemes: ALKIS-Signaturenkatalog 2.1, basemap.de 5.0.3, BfN 461/2, OSM Carto v6.1.0, BGT, Swiss AV, CORINE, Urban Atlas, CLC+ Backbone, HILUCS, LCZ, ESA WorldCover, the Berlin biotope map (V; Swiss AV V-img) [01 §4, 02 §7–8, 03 §11, 04 §2–4]. ulg: themes
alkis,basemap,bfn,osm,planzv,mono; crosswalk entries carry a scheme's own colour only where it was verified. - Pastel is the established look at parcel scale. ALKIS tints, basemap.de, the BfN "Kulisse" series, the BGT pastel and background sets, the OS "Outdoor style" and OSM Carto (Lch lightness 80–99) are all light and low in chroma [01 §7.2, 02 §7.4, 04 §8.4]. ulg: the mellow palette sits inside this convention; only
planzvis saturated, like the plans it imitates. - Only a small core of hue conventions is stable: water blue, woodland green, bright yellow-green shrubs and tree rows, pale yellow-green grassland including lawns, pale yellow/beige arable land, pink/magenta heath, grey traffic areas, a blue shift for wetness; reeds, ruderal vegetation, raw soil, parks and built-up areas vary [02 §8.4–8.6]. European legends add: red means sealed (A) [03 §11]. ulg: the house palette follows the core; the periphery is a documented house choice;
bfnis a ready preset. - One drawn element is not one code. Elements map to code families that differ by age, naturalness, species richness or sealing; code spaces cannot be converted by pattern; identical digits mean different things across editions and lists [01 §7.6, 02 §11.1, 05 §2.2]. ulg: one crosswalk file per scheme with version, fit grade (exact, narrower, broader, nearest, none) and evidence mark.
- XPlanung 6.1 is the machine form of the PlanZV. Published 15.04.2025 (V); its landscape-plan model names BKompV, Länder and FFH keys for biotopes, but those code lists were empty on 2026-09-30 (V) [01 §2]. ulg:
xplanungandplanzvcrosswalks. - ALKIS describes land use in depth, surface materials hardly at all. AAA 7.1.2 has the full Tatsächliche Nutzung (actual land use) and the 8-digit Nutzungsartkennung (NAK, land-use key of the area statistics), but only four road-surface materials (V) [01 §3, §7.4]. ulg:
alkis,alkis_nak,adv_lblncrosswalks; the material Pflaster reachesconcrete_paversonly asnarrower, and most other paving types and decking have no ALKIS code. - Biotope valuation runs in two code spaces: BKompV Anlage 2 (0–24, BfN codes, federal projects) and the Bavarian Biotopwertliste (biotope value list; 0–15, list of 2014) (V*/V) [02 §2–3]; neither has green roofs. ulg:
bkompvandbaykompvcrosswalks carry the values; green roofs stay without a biotope code. - Lawn, meadow and species-rich meadow share one hue in every scheme and are separated by management and species criteria (V) [02 §9]; in Europe only EUNIS separates them [03 §13.1]. ulg: eight lawn and meadow elements share the
grasscolour family and differ by texture (ticks, tufts, flower dots, mowing stripes); dry, wet and fallow grassland move to straw, marsh and fallow tones. - Legal protection is an overlay. § 30 BNatSchG and Art. 23 BayNatSchG protect biotopes of any type (V*); BfN labels them, the Bavarian viewer tints them magenta (V) [02 §5, §7.3, §8.1]. ulg:
protected_biotopeis an overlay hatch (in green, which departs from the red/magenta practice). - The Nature Restoration Regulation measures a land-cover mask. Art. 8 targets urban green space and canopy; the Commission/EEA note uses CLC+ Backbone 2023 (classes 2, 3, 4, 5, 6, 8, 10) and HRL Tree Cover Density 2024; green roofs are invisible to both (V) [03 §4]. ulg:
nrr_urban_green,canopy,tree_canopy,nrr_green_share,canopy_share. - European land-cover schemes do not know paving materials; lawn and meadow also collapse into one class [03 §13.1]. ulg: material stays a house-level distinction; European codes resolve to generic elements (CLC+ class 1 →
sealed), never to a paving type. - Coefficients disagree by design. Berlin's Biotopflächenfaktor (BFF, biotope area factor) 2021 has 16 types and changed 1990 factors (V); DIN 1986-100 runoff values are known from reproductions only (S); a water-bound path scores BFF 0.1 but Cs 0.9 [06 §A]. ulg: per-element coefficients with source and mark; never interpolated.
- Plan status follows three verified rules: ISO 11091 (existing thin, proposed thick, protected chain line, removal dashed hatch), PlanZV 13.2 (open centre = to plant, filled = to preserve), Bavarian Bauvorlagenverordnung (BauVorlV; grey existing, red planned, yellow removed) (V) [06 §B5, §B7; 01 §1.4]. ulg: tree and shrub symbols and
status_*overlays (the hatch motifs differ from the BauVorlV, see 3.9). - Tree protection has a fixed geometry. DIN 18920: root zone = crown drip line + 1.50 m (columnar + 5.00 m); trenches ≥ 4 × stem girth, at least 2.50 m (V for 2014-07; 2026-06 wording not verified) [06 §B8]. ulg:
root_protection_zone(). - Climate maps have no numeric colour standard yet; VDI 3787 Blatt 12 may appear 2027-03 (V) [06 §C10]. ulg:
klimatop,utci,petcategories in house colours. - Interoperable formats cannot carry the hand-drawn look. SLD 1.0 / SE 1.1 are the only widely implemented OGC encodings; converters drop random fills, tiles and seeds; MapLibre has no randomness (V) [07 §2–3]. ulg: native writers per target; seamless tiles; wobble only where supported.
- Pastel fills cannot carry class identity alone. WCAG 2.2 SC 1.4.1 and 1.4.11 (V); pastel pairs reach about 1.01–1.11:1 (T); ΔE00 = 10 is recommended (V) [07 §6]. ulg:
check.pyrequires texture or outline differences below ΔE00 10, also under simulated colour-vision deficiency;Options.accessible()gives 3:1.
2. Conformance matrix#
| Standard | Edition / version checked | Binding | Governs | How ulg implements it | Evidence |
|---|---|---|---|---|---|
| PlanZV, Anlage | 1990, last amended 12.08.2025 | law ("soll"), Bauleitpläne only | colour words, symbol geometry | planzv theme and crosswalk; motifs in compensation_area, planting_area, preservation_area, tree_planned, tree_protected, planning_boundary |
V [01 §1] |
| XPlanung / XPlanGML | 6.1 (15.04.2025) | data standard (binding force not researched in 01) | plan classes and enumerations | xplanung crosswalk |
V [01 §2] |
| xPlanBox default styles | tags 7.0 and 9.3 | convention (AGPL v3 code) | hex colours per XPlanung class | planzv theme; color in planzv, xplanung |
V [01 §2.6] |
| ALKIS AAA schema and NAK | 7.1.2 (Stand 01.11.2022) | official standard | actual land use, overlays, statistics key | alkis, alkis_nak crosswalks |
V [01 §3] |
| AdV Landbedeckung / Landnutzung | LB 1.0.1, LN 1.0.2 | official standard | separate cover and use schemas | adv_lbln crosswalk |
V [01 §3.6] |
| ALKIS-Signaturenkatalog | AAA-SK 2.1, Farbausgabe 2.1.0 (01.10.2024) | official standard | area fills, 33 colours | alkis theme; color in alkis, alkis_nak |
V [01 §4.1] |
| ATKIS-Signaturenkatalog | SK10 2.1.3 (30.11.2024) | official standard | CMYK colours | not implemented | V [01 §4.2] |
| basemap.de Web Vektor | bm_web_col 5.0.3 |
convention | web colours per klasse |
basemap theme; basemap_de crosswalk |
V [01 §4.3] |
| LBM-DE | 2021 (doc. 30.04.2025) | official product | cover × use, MMU 1 ha | lbm_de crosswalk |
V [01 §5] |
| BfN Rote Liste Biotoptypen | 3rd ed. 2017 (short list) | reference list | biotope code space | code space of bkompv |
V [02 §1] |
| BKompV Anlage 2 | 14.05.2020, amended 22.12.2025 | law (federal projects) | biotope values 0–24 | bkompv crosswalk |
V* [02 §2] |
| BayKompV Biotopwertliste | 28.02.2014; re-mapping 09/2021 | law (Bavaria; not Bauleitpläne) | BNT codes, 0–15 points | baykompv crosswalk |
V [02 §3] |
| § 30 BNatSchG / Art. 23 BayNatSchG | as read 2026-09-30 | law | protected biotopes | protected_biotope overlay |
V* [02 §5] |
| FFH Annex I | names of 13.05.2013 (BfN list) | law (EU) | habitat types | ffh_lrt crosswalk |
V [02 §6] |
| Berlin Umweltatlas 05.08 | Biotoptypen 2024 | official map | 24 legend classes and colours | berlin_biotope crosswalk |
V [02 §8.3] |
| BfN Planzeichen Landschaftsplanung | BfN-Skripten 461/2 (2017), 486 (2018) | recommendation | group colours, overlays, status | bfn theme; overlay textures |
V [02 §7] |
| FLL OK FREI | 2025 (codes not public) | technical rule | open-space object types | aliases, element split; no crosswalk | V/S [05 §1] |
| DIN 276 KG 500 | 2018-12 | technical rule | cost groups | din276 crosswalk (third level) |
S [05 §2] |
| DIN 18917 / RSM Rasen | 2018-07 / 48th ed. 2026 | technical rule | lawn types, seed mixtures | lawn, lawn_extensive, flower_lawn, sports_turf |
V, table S [05 §3] |
| FLL roof and façade greening rules | both 2018 | technical rule | greening types | green_roof_extensive, green_roof_intensive, green_facade |
V [05 §4] |
| FLL permeable surfaces; ZTV-Wegebau | 2018; 2022 | technical rule | permeable, water-bound surfaces | gravel_turf, grass_pavers, grass_joint_paving, waterbound |
V [05 §6] |
| HOAI Anlage 11 | HOAI 2013 as amended (date R) | law (fees) | scales per work stage | LOD breaks 1:750 / 1:2,500 / 1:10,000 | V [05 §8] |
| CORINE Land Cover | 1990–2018 nomenclature | official product | 44 classes, MMU 25 ha | clc crosswalk with colours |
V [03 §1] |
| Urban Atlas + Street Tree Layer | 2021 (PUM 1.0.2) | official product | urban classes, access | urban_atlas crosswalk with colours |
V [03 §2] |
| CLC+ Backbone | 2018, 2021, 2023 | official product | 11 land-cover classes | clcplus crosswalk, NRR flags |
V [03 §3] |
| Nature Restoration Regulation | (EU) 2024/1991; note v2.0 (07/2026) | law (EU) | urban green space, canopy | nrr_urban_green, canopy, tree_canopy, indicators() |
V [03 §4] |
| EUNIS | 2021/2022 + 2012 | reference classification | habitat types | eunis crosswalk |
V, colours V* [03 §5] |
| MAES / EU ecosystem typology | 2013; Eurostat 07/2026 | reference; level 1 by Reg. 2024/3024 | ecosystem types | no crosswalk | V [03 §6] |
| INSPIRE LU (HILUCS), LC, HB | guidelines 2024 | law (EU spatial data) | values, default styles | hilucs crosswalk with colours |
V [03 §7] |
| LUCAS / EAGLE | 2022 (C3 issue 3.0) | survey / concept | cover and use axes | lucas crosswalk |
V [03 §8] |
| Local Climate Zones | global map v3.0.0 | convention | 17 classes, colours | lcz crosswalk (palette A) |
V [03 §9.1] |
| ESA WorldCover | v200 (PUM v2.0) | official product | 11 classes, colours | esa_worldcover crosswalk |
V [03 §9.2] |
| OSM tags / OSM Carto | taginfo 2026-09-29; Carto v6.1.0 | convention | tags, default colours | osm crosswalk; osm theme |
V [04 §1–2] |
| BGT / IMGeo | visualisation rules 2.3 | official standard (NL) | materials, colour sets | bgt crosswalk |
V [04 §3] |
| Swiss AV | DM.01-AV-CH; DMAV 1.0 (2024) | official standard (CH) | land cover, RGB | swiss_av crosswalk |
V / V-img [04 §4] |
| Austrian DKM / BANU-V | BGBl. II 116/2010; SHP v2.9 | official standard (AT) | use classes, no fills | at_dkm crosswalk |
V-img [04 §5] |
| England metric / UKHab | tool v1.0.4; UKHab 2.01/2.1 | statutory metric / licensed | scored habitat list | uk_metric, ukhab crosswalks |
V / S [04 §6] |
| Berlin BFF | 02/2021; 1990 | Berlin planning instrument | weighting factors | bff, bff_1990, indicators() |
V [06 §A1] |
| DIN 1986-100 / DWA-A 138-1 | 2016-12 (draft 2025-06) / 10.2024 | technical rule | runoff coefficients | runoff_cs, runoff_cm |
S [06 §A2] |
| UBA, bdla, Berlin sealing classes | 26.03.2026; 07/2022; 2017 | definitions, guidance | sealing classes | sealing, bdla_class, belagsklasse |
V [06 §A3] |
| PALM lookup tables | 6.0 | model default | albedo, emissivity | albedo, emissivity |
V [06 §A4] |
| ISO 11091 | 1994; DIN EN ISO 11091:1999-10 | technical rule | landscape-drawing signs | tree symbols, mono theme |
V [06 §B5] |
| ISO 128 / DIN 1356-1 | ISO 128-2:2022 (S); E DIN 1356-1:2026-09 (V) | technical rule | line widths | settings.line_weights |
S/R [06 §B6] |
| BauVorlV Bayern, Anlage 1 | text valid from 01.01.2025 | law (Bavaria) | status colours and signs | signal.* tokens, status_*, tree_remove |
V [06 §B7] |
| DIN 18920 / R SBB | 2014-07 text; 2026-06 current; R SBB 2023 | technical rule | root zone, trench distance | root_protection_zone() |
V / S [06 §B8] |
| VDI 3787; UTCI; PET | Blatt 1:2026-10; Blatt 12 project | technical rule; convention | climate classes | categories.* |
V, PET S [06 §C10] |
| QGIS style formats | 3.44 LTR / 4.2; style "2" | software convention | QML, style XML | export/qgis.py |
V [07 §1] |
| OGC SLD / SE | 1.0.0 / 1.1.0 | OGC standard | portable styles | export/sld.py (SLD 1.0) |
V [07 §2] |
| INSPIRE view services | TG 3.3.0 | law (EU services) | default and extra styles | SLD as additional style | V [07 §2.5] |
| MapLibre style spec | GL JS 6.11.2 | software convention | patterns, sprites | export/web.py |
V [07 §3.1] |
| DTCG design tokens | 2025.10 | community specification | token and colour format | export/tokens.py |
V [07 §5] |
| WCAG 2.2 / EN 301 549 | WCAG 2.2; EN 301 549 V4.1.1 not yet cited | presumption of conformity (EAA, WAD) via EN 301 549 V3.2.1 (WCAG 2.1 AA) | non-colour cues, 3:1 | check.py, Options.accessible() |
V [07 §6.1] |
| ΔE00 threshold; CVD simulation | Brychtová & Çöltekin 2016; Machado 2009 | research recommendation | ΔE00 ≥ 10, CVD matrices | check.py, colormath.simulate_cvd |
V [07 §6.3–6.4] |
Crosswalk files. All 26 planned files are present at the time of writing: adv_lbln, alkis, alkis_nak, at_dkm, basemap_de, baykompv, berlin_biotope, bgt, bkompv, clc, clcplus, din276, esa_worldcover, eunis, ffh_lrt, hilucs, lbm_de, lcz, lucas, osm, planzv, swiss_av, uk_metric, ukhab, urban_atlas, xplanung. crosswalk.validate() reports no problems. Every file names title, publisher, version and source; every entry has a fit grade and, where given, an evidence mark.
3. Standards by domain#
3.1 German planning law and plan symbols#
What the standard says [01 §1–2, 06 §B9]
- The PlanZV of 18.12.1990 was last amended by Art. 6 of the act of 12.08.2025 (BGBl. 2025 I Nr. 189), which added no. 1.5 Beschleunigungsgebiete für die Windenergie an Land and renumbered the old 1.5 as 1.6, in force 15.08.2025 (V).
- § 2 (V): the Planzeichen (plan symbols) "sollen" be used in Bauleitpläne; they may be supplemented "sinngemäß"; hue, weight and density are adapted to the base map; a legend is required; a breach is harmless if the content is "hinreichend deutlich erkennbar". Black-and-white and colour are equally admissible. Colours are words only ("Grün mittel", "Blaugrün" …); values sampled from the JPEG scans are non-normative.
- Open-space motifs (V): Randsignaturen (border symbols): T-ticks inward for areas for nature measures (13.1), open circles for planting areas (13.2.1), filled dots for preservation areas (13.2.2), stroke groups for protected areas (13.3); point symbols: circle = tree, cloud = shrub, open centre = to plant, filled centre = to preserve (13.2); purpose pictograms; plan boundary = thick broken band (15.13).
- XPlanGML 6.1 was published 15.04.2025 (GML 3.2.2); no newer version on 2026-09-30; removals are announced for version 7 (V). Key enumerations:
XP_ZweckbestimmungGruen(35 values),nutzungsform(private/public),SO_KlassifizGewaesser,XP_SPEMassnahmenTypen(16),XP_ABEMassnahmenTypen(1000 = 13.2.2, 2000 = 13.2.1). The landscape-plan model names BKompV, Land and FFH keys, whose code lists were empty (V). - xPlanBox (tags 7.0 and 9.3, identical; AGPL v3):
BP_GruenFlaeche#7FC643,FP_Gruenpublic #80E41B,SO_Gewaesser#99D9E8, agriculture #CCE968, forest #34AB8F, roads #FFD92F, nature-measure band #4DAE38, plan boundary #80847A (V).
How ulg uses it
planzvtheme: xPlanBox colours, flat, no wobble, evidence notes on most element entries; elements without a Planzeichen take their plan category's colour.planzvcrosswalk keyed by Planzeichen number (1.1–1.4, 4.2, 5, 6, 9–13, 15.13); its licence note says the scan colours are deliberately not used.xplanungcrosswalk: class plus enumeration code.- PlanZV motifs in the house style:
compensation_area(T-ticks),planting_area(open circles),preservation_area(filled dots),tree_planned(open ring with cross),tree_protected(filled centre),planning_boundary(0.7 mm broken line).
Limits and open points
- The hex values are a convention; no Länder guide with numeric PlanZV colours was found [01 §6].
protection_zoneuses a dash-dot line instead of the 13.3 stroke groups,flood_zonea hatch instead of the 10.2 wavy border; 11.1/11.2 and 15.8 have no element.- The legal force of XPlanung was not researched in primary sources; BfN says it binds landscape planning since 02/2023 (V*) [02 §7.1]. Whether § 9 Abs. 1 Nr. 15a / § 5 Abs. 2 Nr. 5a BauGB are in force was not checked.
- The
planzvtheme gives wetland elements the water colour without an evidence mark.
3.2 Official cadastre and topography#
What the standard says [01 §3–5, §7]
- AAA-Anwendungsschema 7.1.2 (Stand 01.11.2022) plus separate Landbedeckung 1.0.1 and Landnutzung 1.0.2 schemas (V). The AdV reference-version statement (7.1 since 01.01.2024) was read through a summary and should be re-read.
- Tatsächliche Nutzung: object types 41001–44007, gap-free except overlays, capture threshold about 1,000 m² (V). The NAK is unique across object type and value list (41008 FKT 4400 Grünanlage = 18040000). LN codes differ from AAA codes.
- Surface materials: only four values on road axes plus LB loose-material classes (V). Light/dark paving, decking and wildflower meadow have no official code [01 §7.4].
- ALKIS-Signaturenkatalog 2.1 (Farbausgabe 2.1.0, 01.10.2024; 1:500–1:1,000): 33 colours with RGB, CMYK and hex (V). Recreation and cemeteries #DCE6C2, grassland #F3F5CC, arable #FFF8DC, woodland #CFE8D9, heath/bog/fallow #F3E3CA, water #C0E8FA with #0068A1 outline, vegetation symbols #008230; traffic areas unfilled.
- ATKIS-SK10 2.1.3 (30.11.2024) defines colours in CMYK only (V). basemap.de
bm_web_col5.0.3: background #FFFDEE, recreation #E6F7D2, grassland and cemetery #DFF0B6, woodland to #9AB66D, water #D2E8FA (V). - LBM-DE2021: 31 cover and 16 use classes, MMU 1 ha, made to derive CORINE (V); its cross table is S quality.
- All German sources keep green space, grassland and woodland as three distinct greens and water light blue with a darker outline; topographic sources leave traffic white or grey, planning sources colour it yellow-ochre [01 §7.2].
How ulg uses it
- Themes
alkisandbasemap(fills with evidence notes). - Crosswalks
alkis(Kennung plus one coded attribute, field aliases FKT, VEG …),alkis_nak(prefix fallback to group codes),adv_lbln,basemap_de(with colours),lbm_de.
Limits and open points
- No ATKIS/DTK theme (CMYK only; a documented conversion would be needed).
alkistheme building fill #CCCCCC is marked R in the theme.- The
basemaptheme uses #738D0B for tree outlines; the style gives rgb(115,141,0) = #738D00, as the theme's owntree_rowentry has. - Signature shapes not viewed; AAA 6.0.1 → 7.1.2 not compared; only the colour style of basemap.de read.
3.3 Biotopes, compensation and protected habitats#
What the standard says [02 §1–6, §8–9]
- BfN Rote Liste der gefährdeten Biotoptypen Deutschlands, 3rd ed. 2017: short list read (V), full book not accessible. Codes
GG.NN.NN; groups 51–54 cover settlements; parks, gardens and cemeteries are not separate types. - BKompV (14.05.2020; last amended 22.12.2025, BGBl. 2025 I Nr. 351, content not determined) applies to federal projects only (V*). Anlage 2 reuses BfN codes, adds splits and age classes J/M/A, values 0–24, ± 3 for condition (V*). Anchors: park lawn 34.09 = 8; intensive grassland 34.08a.01 = 8; species-rich hay meadow 34.07a.01 = 20; ruderal 39.06.x = 12–16; sealed surfaces 0; dry-stone wall 53.02.03a = 17 (V*). No roof or façade greening (checked). Four odd codes need a gazette check.
- BayKompV (07.08.2013, amended 23.06.2021; not for Bauleitpläne, V*) uses the Biotop- und Nutzungstypen (BNT) of the Biotopwertliste of 28.02.2014 (V): Grundwert 0–15 = G + W + N; mapping sub-types appended (
G214-GU651E); settlement types impact-side only except P1, P43, V23, V33, V5. LfU re-mapped sub-types in 09/2021 and announced an update (V). - Lawn to species-rich meadow (V): G4 (3) → G11 (3) → G211 (6) → G212 (8) → G213 (8) → G214 (12), by nutrient-poverty indicators, meadow forbs per 25 m² and mowing. The 2022 mapping key tests protected "GU" meadows differently (≥ 12 or 9 species on 3 m × 10 m); a freshly sown flower meadow is not GU.
- § 30 Abs. 2 BNatSchG (V*): seven groups; Nr. 7 adds lean hay meadows (Annex I), orchard meadows, stone ridges and dry-stone walls (date R). Art. 23 BayNatSchG (V*; valid from 01.04.2026; effect of the act of 26.03.2026 not determined) adds, among others, land reeds, thermophilous fringes, lean grassland, tall-stem orchards from 2,500 m² and species-rich permanent grassland.
- FFH Annex I (V): BfN list, names of 13.05.2013; 93 of 231 types occur in Germany (V*).
- Berlin: about 7,480 types with 5–8-digit codes; map 05.08 (2024) with 24 legend colours matching the SLD (V). Other Länder keys remained R.
How ulg uses it
bkompv(dotted fallback, values per age class),baykompv(points, "+1" flag, sub-types incl. 2021 re-mapping),ffh_lrt(41 types, priority flag),berlin_biotope(legend classes and colours).- Elements follow code families: grass family (
lawn…grassland_intensive),grassland_fallow,dry_grassland,meadow_wet,ruderal,tall_forbs,reed,sedge_marsh,bog,salt_marsh,aquatic_vegetation,hedge,hedge_clipped,wood_pasture, woodland variants, trees. Thebiodiversityattribute is declared "a rough house heuristic … not a valuation". protected_biotopeandcompensation_areaare overlays.
Limits and open points
protected_biotopeis green; verified practice is red/magenta (Bavarian viewer #D97EB0 / #EECACF / #FCEBFD, outline #EE5AC7; Berlin red cross-hatch) [02 §8.1, §8.3, §11.5].- No neophyte stand, pollard tree or native/non-native shrub split, although both lists split them.
- BKompV rows are V*; the 2014/2022 Bavarian thresholds are not aligned; the Art. 23 definition ordinance was not retrieved.
3.4 Landscape-planning symbols#
What the standard says [02 §7, notes/02 §C]
- BfN-Skripten 461/2 Planzeichenkatalog (Hoheisel et al. 2017, DOI 10.19217/skr4612) and 486 on GIS use (2018, DOI 10.19217/skr486) were read (V); 461/1 was not. A recommendation, not a statutory symbology.
- Rules (V): a pastel "Kulisse" (backdrop) series without outline for low–moderate value and a saturated series with black 2 pt outline for high value; objects below 1 ha (grassland, water) become 16 pt point symbols; overlays instead of new colours: wet = offset dashed blue lines, fallow = vertical dashed brown lines, orchards = red dot grid; protection by label; target areas at 50 % transparency; proposals without contour; no measure symbols. 1 pt = 0.35 mm; minimum outline 0.5 pt.
- Pastel values (V): grassland #D2F098, dry grassland #FFFFA1, shrubs and hedges #BEF583, coniferous forest #87BA78, reeds #FFAF5E, fringes and ruderal #DDC0EC, heath #FFB5C2, arable #F2DFB0, settlement green #ABF6B4, settlement #EBC1B0, standing water #C5E9FF. The deciduous-forest row repeats the grassland value (a probable misprint); take it from the BfN QGIS file.
- Licences: 461/2 CC BY-ND 4.0 (V*), 486 all rights reserved (V); values are citable, symbol files should not be bundled.
How ulg uses it
bfntheme: pastel series, flat, no area outlines except water, trees, buildings and the grey context layers.- House textures take the overlay idea:
grassland_fallowhas a vertical dashed hatch,meadow_wetandsedge_marsha blue wave texture. - All symbols are drawn by the library;
src/ulg/dataholds only JSON and Markdown.
Limits and open points
- The theme uses the coniferous value for all forests (documented) instead of the value from the BfN style file.
- Saturated series, area-to-point substitution and the contour rule are not implemented.
- Orchards use crowns, not the red dot grid; reeds use the grey-teal house
reedfamily, not BfN orange (a "periphery" class, 02 §8.6).
3.5 Open-space object catalogues and technical typologies#
What the standard says [05]
- FLL Objektartenkatalog Freianlagen (OK FREI; open-space object catalogue): the 2025 edition follows DIN 276:2018-12 with three service levels (V), but every public code is from the 2016/2018 numbering (S); no 2025 code was verified. SK FREI (2016, 1:500–1:200) exists (V).
- DIN 276:2018-12 KG 500 (S): 530 Oberbau, Deckschichten, 540 structures, 550 technical systems, 560 fittings, 570 Vegetationsflächen (573 planting, 574 lawn and seeding), 580 water; building greening moved to KG 335/353/363. The same digits mean different things in the 2008 edition.
- DIN 18917:2018-07 (V) distinguishes four Rasentypen (lawn types): ornamental, utility, hard-wearing, landscape (table S). RSM Rasen 2026 (48th ed.) lists the standard mixtures (V). No standard separates lawn from meadow; practice uses mowing frequency (utility lawn 8–20 cuts, meadow 1–3, S). § 40 BNatSchG requires regional seed in the open landscape since 1 March 2020 (V).
- DIN 18916:2016-06 and DIN 18919:2016-12 (V) govern planting and aftercare. FLL green-roof rules 2018 (intensive, simple-intensive, extensive) and façade rules 2018 (ground-based, wall-bound) (V).
- Surfaces: ZTV-Wegebau 2022, FLL water-bound paths 2007, FLL permeable surfaces 2018 (V); product-standard editions not verified. Bond geometry is mostly R; "Passe" is unverified. Tree-pit figures (12 m³, 1.5 m, 6 m²) were not confirmed (R).
- HOAI Anlage 11: design 1:500–1:100, construction drawings 1:200–1:50 (V); landscape plans have no prescribed scale (V).
How ulg uses it
din276crosswalk: third-level cost groups (S), with the 2008 renumbering noted; most non-area groups map tonone.- Names and aliases follow this vocabulary (
lawn= Gebrauchs-/Zierrasen,lawn_extensive= Landschaftsrasen,flower_lawn= Kräuterrasen,perennials,bedding,hedge_clipped,gravel_turf,grass_pavers,waterbound,swale,rain_garden,planter…). - Paving textures are lattices in metres: stretcher bond 10 × 20 cm (
concrete_pavers), 40 × 40 cm grid (slabs), herringbone (clinker,paving_light), random courses (natural_stone_paving,cobblestone), planks (wood_deck). - LOD breaks 1:750 / 1:2,500 / 1:10,000 bracket the HOAI and SK FREI scales.
Limits and open points
- No OK FREI crosswalk (2025 codes unknown).
- Missing: simple-intensive green roof, plastic grass grids, Baumrigole (tree trench); both façade types share
green_facade; containers exist only as the point symbolplanter. - Bond textures are illustrations, not specifications.
3.6 European and international classifications#
What the standard says [03]
- CORINE: 44 classes, MMU 25 ha, a context layer for cities (V); CLC 2024 announced for Q3 2026, not yet listed. Green urban areas are pink (#FFA6FF).
- Urban Atlas 2021 (790 FUAs, 3-year cycle, MMU 0.25 ha urban): urban fabric split only by sealing degree (five red steps); green urban areas split by access in 2021; Street Tree Layer = tree patches ≥ 500 m² (V).
- CLC+ Backbone: 10 m raster, 11 land-cover classes after EAGLE; class 1 includes vegetated roofs and railway tracks; grass pavers → 9; vines and hops → 5 (V).
- Regulation (EU) 2024/1991, Art. 8 (V, verbatim in the stream): no net loss of urban green space and canopy by 31.12.2030 against 2024; increasing trends from 2031, measured every six years; satisfactory levels by 2030; guiding framework by 31.12.2028. The non-binding note (v2.0, 07/2026): green space = CLC+ 2023 classes 2, 3, 4, 5, 6, 8, 10; canopy = HRL Tree Cover Density 2024, including street trees; green-roof inventories allowed as supplementary data.
- EUNIS: revised 2021/2022 except C, J and X (2012 codes current); 2012 codes have a dot (E2.64), revised codes none (V31); colours only for 2012 levels 1–2 (V*). Only EUNIS separates lawn, hay meadow and species-rich grassland.
- EU ecosystem typology (Eurostat 07/2026; level 1 by Reg. 2024/3024): urban greenspace excludes sealing above 30 %; no official colours (V).
- INSPIRE (V): Land Cover has no nomenclature and an informative 18-component colour map; Land Use prescribes six HILUCS level-1 colours; Habitats uses grey. Five relations for local vs reference types: congruent, includedIn, includes, overlaps, excludes.
- LUCAS 2022: separate cover and use axes, no colours (V). LCZ palette A declared official (V), palette B circulates (S). ESA WorldCover v200: urban green is not built-up (V).
How ulg uses it
- Crosswalks
clc,urban_atlas,clcplus,eunis(both generations),hilucs,lucas,lcz,esa_worldcover; colours viaulg.official_colors(). nrr_urban_greenfollows the CLC+ logic (vegetation and water true; arable, sealed, bare ground, green roofs false);tree_canopyand point trees count as canopy over any surface;indicators()returnsnrr_green_shareandcanopy_share.
Limits and open points
- No CORINE, Urban Atlas, CLC+, HILUCS, LCZ or WorldCover theme.
- NRR flags that conflict with CLC+:
vineyardfalse (vines are class 5, counted);green_tracktrue (tracks are class 1);retention_basinfalse (open water and vegetated basins count). Thesettings.jsonstatement that pools do not count is not in stream 03. - Missing: moss/lichen cover (CLC+ 8, counted; mapped to
dry_grasslandas nearest) and an urban-fabric sealing ramp. Ports, airports, salt marsh, mudflats, dunes, and snow and ice have elements. - Stream 03 recommends a red "sealed" rendering for sealing maps; the
sealingramp runs green → grey. - EUNIS 2012 → 2021 correspondences are name-based (A).
3.7 OpenStreetMap and national large-scale models#
What the standard says [04]
- OSM (V): cover from
landuse/natural/leisure, material fromsurface(45 documented values), detail fromleaf_type,diameter_crown,wetland,meadow,basin,green_roof. Hooks:meadow=wildflower,wetland=reedbed,surface=wood. Counts:natural=tree34.3 million,landuse=grass7.7 million,landuse=flowerbed159,370;landcover=*is marginal. Green roof =green_roof=yes,roof:materialgrass/plants/roof_greening orgarden:type=roof_garden. - OSM Carto v6.1.0 (V): @grass #CDEBB0, @forest #ADD19E, @park #C8FACC, water #AAD3DF; shrubbery, greenery and surfaces not rendered.
- BGT/IMGeo: the finest official material vocabulary; standaard, achtergrond and pastel colour sets (V); polygons stroked in their fill colour.
- Swiss AV: colour optional, black-and-white mandatory for the land-register plan; 2024 RGB (buildings #FFBFBF, water #B3E6FF, forest #9CFF9C at 50 %); soft covers dashed (V-img).
- Austrian DKM: 26 use classes as glyphs, no fills; the drawing key is "rechtlich nicht verbindlich" for DKM display (V-img).
- England: metric tool v1.0.4 scores 21 urban habitat types (V); the UKHab palette is licence-gated.
- Prior art: LBP-Musterlegendenkatalog (12/2021; 35 % transparency over aerials; hatch in the target colour for new planting) and OS "Outdoor style" (V-img/V). Lessons: few hues, many textures; paving rarely coloured; state modifiers; function as overlay [04 §8.4].
How ulg uses it
osmcrosswalk (tag combinations before single tags);osmtheme (derived values marked D).bgt,swiss_av,at_dkm,uk_metric,ukhabcrosswalks; colours only for BGT and Swiss AV.- Elements close the gaps stream 04 lists:
hedge,tree_row,wall,fence, furniture,garden,permeable_paving,waterbound,clinker,artificial_turf,swale,rain_garden, green roofs,unknown. - Soft vegetation meets without dark lines (outline = fill darkened 10 %); paving differs by texture in a narrow grey-warm range.
Limits and open points
- The
osmtheme's outlines #B5CF9B, #A6D9AA, #90B983, #89B8C6, #D5CBC1 are not in stream 04, though the theme says "Hex values V". - No UKHab colours (licence); UKHab codes partly S.
- No "over orthophoto" variant and no line-plus-glyph cadastral theme (04 §8.4).
3.8 Coefficients#
What the standard says [06 §A]
- Berlin BFF = ecologically effective area ÷ plot area (V). 2021 list (16 types): sealed 0.0; partly sealed 0.1 (setts, clinker, water-bound); permeable 0.2 (drainage pavers, sand, crushed stone); vegetated paving 0.4; vegetation on soil 1.0 (down to 0.5 for plain ornamental lawn); over structures 0.5–0.9 by depth; infiltration 0.2; water 0.5; roofs 0.5/0.7/0.8; façades 0.5/0.7 (V). Worked examples: 0.04, 0.45, 0.45, 0.6. The 1990 list (9 types, partly sealed 0.3, roofs 0.7) still governs older plans (V).
- Comparable: London UGF (S), Seattle (V/R), Swedish GYF (S), Graz (V). In Bavaria municipalities may since 01.10.2025 only prohibit sealing and gravel gardens (Art. 81 BayBO; V/S), so a BFF is an indicator there, not a local rule.
- Abflussbeiwerte (runoff coefficients): DIN 1986-100:2016-12, Tabelle 9, Cs and Cm (values S); draft 2025-06 exists. DWA-A 138-1 (10/2024) adds rows (S); its sports rows differ.
- Versiegelung (sealing): no statutory classes (UBA, V); Berlin Belagsklassen 1–4 (V); bdla five classes (V). Albedo and emissivity: PALM 6.0 (V), with a 0.17 placeholder for most pavements.
- One texture is not one coefficient; BFF rewards vegetation, runoff permeability; never derive one from another.
How ulg uses it
settings.jsondocumentssealing,bdla_class,bff,bff_1990,runoff_cs,runoff_cm(S),albedo,emissivity,belagsklasse,nrr_urban_greenwith source and mark.- Values match stream 06's table: asphalt BFF 0, Cs/Cm 1.0/0.9; paving in sand 0.1 (1990: 0.3), 0.9/0.7; grass pavers 0.4, 0.4/0.2; water-bound 0.1, 0.9/0.7 ("Do not derive one from the other"); lawn 1.0, 0.2/0.1; extensive roof 0.5, 0.5/0.3. Notes name exceptions (water, track ballast from DWA-A 138-1).
indicators()returns sealing shares, BFF (ground plus roof credits over the plot), runoff, albedo and*_coveragewhere values are missing. Brochure example A is a unit test.
Limits and open points
- Runoff values are secondary; PALM pavement albedo is a placeholder.
- Only one of four brochure examples is tested; no UGF, GYF, Graz or DWA-A 102-2 attributes.
bdla_class3 for paving in sand is a documented house choice.
3.9 Drawing and graphic standards#
What the standard says [06 §B, §C11; 01 §1.4]
- ISO 11091:1994 / DIN EN ISO 11091:1999-10 (V): black-and-white only; existing thin, proposed thick; protected area thick chain line (square frame around a crown); removal thin dashed diagonal hatch; existing tree = thin crown and thick trunk, to scale; proposed tree = thick circle with thin centre cross, not to scale; grass light stipple; hedges thin zigzag / thick wavy; paving patterns "representational only".
- DIN 1356-1:2024-04 was withdrawn for DIN EN ISO 7519:2025-01; E DIN 1356-1:2026-09 would restore it (V). Line groups II (0.5/0.35/0.25 mm, text 3.5) and III (1.0/0.5/0.35, text 5.0) (S).
- BauVorlV Bayern, Anlage 1 (V): plot boundary violet long dash; existing grey (single hatch); planned red (cross-hatch); removal yellow (× on outline); setback areas brown; words only; signs or colours.
- DIN 18920:2014-07 (V): Wurzelbereich (root zone) = ground under the Kronentraufe (crown drip line) + 1.50 m, columnar + 5.00 m; trenches ≥ 4 × Stammumfang (girth at 1.00 m), ≥ 2.50 m for stems under 20 cm. The 2026-06 edition is current; secondaries give the same rule (S). BS 5837: 12 × stem diameter (S).
- Minimum sizes for map graphics were not verified (R).
How ulg uses it
tree(crown to scale, stem to scale when known);tree_planned(0.35 mm red outline, cross in an open ring) andshrub_planned(same motif);tree_protected(filled centre, chain-line square);tree_remove(pale yellow, dashed, crossed out).status_planned(single hatch, red) andstatus_removal(cross-hatch, yellow): colour always with a motif.root_protection_zone()buffers crowns by 1.5 m (5.0 m columnar) and addsmin_trench_distance_m = max(4 × girth, 2.5 m); tested.settings.line_weights: ISO 128 series 0.13–1.0 mm, outline default 0.18 mm;monotheme;embankmenthachures;lampafter the ISO luminaire.
Limits and open points
tree_plannedhas a nominal 6 m crown; ISO 11091 draws proposed trees not to scale.tree_removecites ISO 7518 (content R); the × is verified through the BauVorlV.analysis.pycites DIN 18920:2014; the girth field is used whatever its measuring height (DIN 1.00 m, OSM 1.3 m).- The status hatches do not follow the BauVorlV signs:
status_plannedhas a single hatch (BauVorlV: cross-hatch; the single hatch marks existing parts),status_removala cross-hatch (BauVorlV: × marks on the outline; ISO 11091: thin dashed hatch). site_boundaryis neutral solid, not violet long dash; setback areas are missing; the root-protection line is dashed, not chain.- Minimum sizes unverified; ulg only leaves polygons under 3 mm² on paper untextured.
3.10 Urban-climate map conventions#
What the standard says [06 §C10]
- VDI 3787 Blatt 1:2026-10 replaces Blatt 1:2015-09 and Blatt 9:2004-12 (V; content not read); Blatt 2:2022-06 covers PET (V); Blatt 12 on visualisation is a project, possible publication 2027-03 (V).
- Klimatope (climatopes) are verified from the Klimaatlas Region Stuttgart, which says it largely follows VDI 3787 Blatt 1: water, open land, forest, park, garden city, suburban, urban, city core (Stadtkern), commercial, industrial, railway; its colours are atlas defaults, not VDI values (V). LfU Rheinland-Pfalz derives 12 operational classes from ATKIS, sealing and height (V).
- UTCI limits −40/−27/−13/0/9/26/32/38/46 °C (V); PET 4/8/13/18/23/29/35/41 °C (S). No standard colour scale exists.
How ulg uses it
settings.categories:klimatop(11 classes in a house version of the usual hue order: water blue → pale mint → green → apricot → orange → light red → red → magenta/dark red);utci(10) andpet(9) in the housecoolandheatramp colours;ulg.category_of()classifies values.
Limits and open points
- "Class names follow VDI 3787 Blatt 1" rests on the atlases' statement. ulg says Innenstadt-Klimatop where Stuttgart has Stadtkern-Klimatop (RLP: Innenstadtklima).
- Cold-air hatches and air-flow arrows are not catalog elements; revisit colours when Blatt 12 appears.
3.11 Rendering, interoperability and accessibility#
What the standard says [07]
- QGIS (V): latest 4.2.3, LTR 3.44.15, LTR 4.4.0 scheduled 2026-10-30 (a 2025 blog had named 4.2 as the first 4.x LTR); no documented XML change between 3.x and 4.x;
<prop>and<Option>both read;RandomMarkerFillneeds a non-zero seed;wave_randomized(3.24) draws seeded waves; SVG can be embedded. Files were not loaded in QGIS during the research. - OGC (V): SLD 1.0 and SE 1.1 are the only widely implemented encodings; no standard spacing, randomness or hatching; GeoServer vendor options fill the gap. INSPIRE view services (TG 3.3.0): harmonised layers keep their default style; additional styles are recommended, with legends per language.
- Converters carry no random fills, SVG tiles, seeds or generators (V/S). MapLibre (V): power-of-two patterns; pattern fills need a separate outline layer; no random expression.
- Hand-drawn rendering: rough.js caps jitter at a tenth of a segment and can keep vertices (V); SVG displacement filters fail in Qt SVG and CairoSVG and move the fill edge, so use geometric wobble (V/D); a prototype showed shared edges drawn twice with different seeds read as double lines (T).
- DTCG 2025.10 is stable; colours are objects with colour space, components and optional hex; no pattern type (V).
- Accessibility (V): WCAG 2.2 SC 1.4.1 (G111 colour and pattern), SC 1.4.11 (3:1; G209 boundaries), SC 1.4.3 (text 4.5:1). EN 301 549 V4.1.1 adopts WCAG 2.2 but is not yet cited; V3.2.1 remains the reference. ΔE00 = 10 recommended (Brychtová & Çöltekin 2016); Machado et al. (2009) CVD matrices in linear RGB.
How ulg uses it
- QGIS: categorized or rule-based QML (
lod="auto": LOD child rules withscalemindenom/scalemaxdenom), style-library XML, GPL palette; each fill =SimpleFill+ embeddedSVGFilltile + outline; hand-drawn outline =GeometryGeneratorwithwave_randomized($geometry, 4, 12, 0.03, 0.09, $id + 1); crowns as SVG markers in map units.tools/qgis_render.pyloads and renders the styles in QGIS as a smoke test. - SLD 1.0.0: solid fill,
GraphicFilltile, outline, external SVG points. MapLibre: 128 px sprite plus@2x; fill → pattern (from z 15.5) → outline; tree circles sized in metres by base-2 zoom interpolation. Tokens: DTCG colour objects with aliases, CSS--ulg-<element>-<role>,catalog.json. - Renderer: exact fills; outline wobble from a ground-anchored noise field (shared edges wobble identically), amplitude 0.09 mm for the 0.18 mm line; hash-based randomness anchored to world coordinates.
check.pyat the time of writing: 112 land-cover elements; 2,162 pairs below ΔE00 10, none without a texture or outline difference; 3,438 / 3,436 / 3,171 close pairs under protanopia / deuteranopia / tritanopia, again none.Options.accessible()darkens outlines and marks to 3:1.
Limits and open points
- QML is written in
<Option>form only (stream 07 suggests the dual form); SLD has no SE 1.1 variant, vendor options or per-LOD scale limits. - Stream 07 proposes an amplitude strictly below half the stroke, capped at a tenth of each edge, with a Hausdorff test; ulg uses exactly half and bounds x and y separately, so a diagonal offset can reach about 0.13 mm.
check.pydoes not require texture ink ≥ 3:1 (weakest default mark 1.08:1,sports_turf) or test labels; no legend table for non-visual use.
4. Design decisions that follow from the research#
- Official colours only where published and verified. Official themes name source and evidence (a test enforces the source); crosswalk
colorfields hold only a publisher's own legend colours. The documented exception: EUNIS colours sampled from legend swatches (V*). - Law gives words, the convention gives numbers.
planzvuses xPlanBox values, never the scan samples. - Codes are never guessed. An element gets a code only through a crosswalk entry with a fit grade; classes without an equivalent are
nearestornone.crosswalk.validate()checks ids, grades, colours and duplicates. - Editions travel with codes. Every crosswalk carries its version; AAA, NAK and LB/LN are separate files; EUNIS entries name their generation;
din276flags the 2008 renumbering. - An element stands for a code family. Valuation crosswalks store values per age class and condition instead of multiplying elements.
- Coefficients are never interpolated. Missing values appear as coverage below 1 (
analysis.py; testtest_unknown_coefficients_are_reported_not_guessed). - Every coefficient names source, edition and evidence in
settings.json; BFF 2021 and 1990 sit side by side. - Indicators are not derived from each other. BFF and runoff stay separate where they disagree.
- Permeability, not paving colour, carries ecological meaning. Light and dark paving share coefficients;
sealing,bdla_class,belagsklasseandbffseparate sealed, permeable and vegetated surfaces. - The fill is the exact geometry. Wobble moves only the outline, by about half the default line width (0.09 mm for 0.18 mm, renderer and QGIS), so the ink stays on the true boundary and the data stay GIS-exact; official themes set
handdrawnto 0. - Randomness is deterministic and anchored to the ground, so neighbours share one texture, tiles do not change it, and QGIS gets non-zero seeds.
- Texture is the second channel. Fill pairs closer than ΔE00 10 (in normal vision and three simulated CVDs) must differ in texture or outline; an accessible option gives 3:1.
- Status uses motif and colour together: ISO 11091 weights, PlanZV centres, the BauVorlV colour triad; colour always comes with a hatch or symbol motif (the hatches differ from the BauVorlV signs, see 3.9).
- Overlays are not land cover; roof elements replace the building surface in indicators.
- Canopy is measured separately from ground cover, as the NRR does.
- Legal protection is an overlay, never a replacement fill.
- Scale drives detail: LOD breaks 1:750 / 1:2,500 / 1:10,000; marks in paper millimetres, paving modules in metres; tiny polygons stay flat.
- Line widths come from the ISO 128 series.
- Symbols are drawn by the library; no BfN, xPlanBox or UKHab symbol files are bundled.
- Each target is written natively; what a format cannot express degrades to fill, tile and plain outline.
5. Open points and licences#
5.1 Not verified#
- Planning and cadastre: numeric PlanZV colours in Länder guides; legal force of XPlanung; AdV reference version; ATKIS SK25–100; signature shapes; LBM-DE cross table [01 §6].
- Biotopes: content of the BKompV amendment of 22.12.2025; four odd BKompV codes; other Länder keys (R); Berlin class names; Art. 23 definition ordinance; date of the § 30 extension (R); BfN deciduous-forest value; BfN 461/1 [02 §10].
- Europe: CLC 2024 release; LCZ palette of other tools; official EUNIS crosswalks; newer LUCAS; WorldCover successors; EAGLE numbering; INSPIRE LU SLDs [03 §12].
- National models: UKHab palette and v2.1 status; DMAV files; Austrian drawing key; OSM values read through extraction [04 §9].
- Open space: OK FREI 2025 codes; DIN 276 notes; DIN 18917 table; product-standard editions; tree-pit figures; bond geometry; HOAI successor [05].
- Coefficients and drawing: DWA-A 138-1 original table; DIN 1986-100 successor; DWA-M 102-4 shares; climate colours; minimum sizes (R); DIN 18920:2026-06 wording; ISO 7518 content [06].
- Rendering: QGIS round trip not done in the research; QGIS 4 compatibility inferred; MapLibre pattern behaviour from issue threads; accessibility reading interpretive [07 §8].
5.2 Paywalled or purchase-only#
DIN 276, 18916, 18917, 18919, 18920:2026-06, 1986-100, 1356-1, ISO 11091 (preview only), DWA-A 138-1, VDI 3787 Blatt 1:2026-10, the FLL rules, the OK FREI 2025 file (10 €) and SK FREI (500 € per platform) [05, 06]. Values from reproductions are marked S.
5.3 Licences#
| Source | Licence as recorded in the streams | Consequence |
|---|---|---|
| PlanZV | official work (§ 5 UrhG) (V) [01 §1.2] | free to reuse |
| xPlanBox styles | GNU AGPL v3 (V) [01 §2.6] | hex values are facts; symbols not copied |
| basemap.de | "© 2026 basemap.de / BKG | Datenquellen: © GeoBasis-DE" (V) [01 §4.3] | attribute when using the theme |
| BfN-Skripten 461/2 / 486 | CC BY-ND 4.0 (V*) / all rights reserved (V); GIS package unclear (V*) [02 §7.1] | cite values; do not bundle symbols |
| Berlin biotope map | Datenlizenz Deutschland Zero 2.0 (V*) [02 §8.3] | free use |
| LfU Bayern biotope WMS; RLP and LfU climate data | CC BY 4.0 (V*; V) [02 §8.1, 06 §C10] | attribution |
| OS MasterMap style workbook | Open Government Licence 3.0 (V) [04 §7.1] | attribution |
| UKHab | licence-gated; no onward licence via the metric (V / V-img) [04 §6] | codes for reference only |
| Swiss "Cadastra" font | open source, may be modified if renamed (V-img) [04 §4.2] | not bundled |
The streams record no licence for the ALKIS/ATKIS catalogues, OSM Carto or the EEA/Copernicus legends; ulg uses only codes and colour values from them.
5.4 What to re-check when standards change#
| Watch | State on 2026-09-30 |
|---|---|
| PlanZV; XPlanung | amended 12.08.2025; 6.1, removals announced for 7 |
| AAA / LB / LN; ALKIS-SK; ATKIS-SK; basemap.de; LBM-DE | 7.1.2 / 1.0.1 / 1.0.2; 2.1.0; 2.1.3; style 5.0.3; 2021, 3-year cycle |
| BKompV; Biotopwertliste; Art. 23 BayNatSchG | amended 22.12.2025; 2014, update announced; changed 26.03.2026 |
| OK FREI; RSM Rasen; FLL roof rules; DIN 276; HOAI | 2025 codes unknown; annual; revision since 10/2025 (S); 2018-12; successor in preparation (S) |
| CORINE; Urban Atlas; CLC+; NRR | CLC 2024 due Q3 2026; UA 2021 (manual names 2024); biennial; framework due 31.12.2028 |
| EUNIS; LUCAS; WorldCover; LCZ | C, J, X unrevised; 2022; v200; v3.0.0 |
| OSM Carto; BGT; Swiss AV; UK metric; UKHab | v6.1.0; rules 2.3; DMAV 1.0; tool v1.0.4; v2.1 unclear |
| BFF; DIN 1986-100; DWA-A 138-1 | 02/2021; draft 2025-06; 10/2024 (M 138-2 draft 10/2025) |
| DIN 18920; DIN 1356-1; BS 5837; VDI 3787 | 2026-06; E 2026-09; revision 11/2026; Blatt 12 possible 2027-03 |
| QGIS; DTCG; EN 301 549 | LTR 4.4.0 due 2026-10-30; 2025.10; V4.1.1 awaiting OJEU citation |
6. Sources#
All sources are the research streams in streams/; primary URLs are listed there.
- Stream 01: 01_de_planning_cadastre.md: §1 PlanZV (1.1 version, 1.2 § 2, 1.4 open-space Planzeichen, 1.5 sampled colours); §2 XPlanung (2.1, 2.3 enumerations, 2.5 landscape-plan model, 2.6 xPlanBox); §3 ALKIS/ATKIS (3.2, 3.3b NAK, 3.6 LB/LN); §4 official colours (4.1 ALKIS-SK, 4.2 ATKIS-SK10, 4.3 basemap.de); §5 LBM-DE; §6 open points; §7 implications.
- Stream 02: 02_de_biotope_landscape_planning.md: §0 key findings; §1 Red List; §2 BKompV; §3 BayKompV; §4 other Länder; §5 protected biotopes; §6 FFH; §7 BfN Planzeichen; §8 official map conventions; §9 lawn–meadow criteria; §10 open points; §11 implications. Notes: 02_biotope_working_notes.md.
- Stream 03: 03_eu_classifications.md: §0.3 versions; §1 CORINE; §2 Urban Atlas; §3 CLC+; §4 NRR; §5 EUNIS; §6 ecosystem typologies; §7 INSPIRE; §8 LUCAS/EAGLE; §9 LCZ, WorldCover; §10 crosswalks; §11 portrayal; §12 open points; §13 implications.
- Stream 04: 04_osm_national_topo_prior_art.md: §0 versions; §1 OSM tags; §2 OSM Carto; §3 BGT; §4 Swiss AV; §5 DKM; §6 prior art; §7 other conventions; §8 implications; §9 open points. Notes: 04_osm_topo_working_notes.md.
- Stream 05: 05_de_freianlagen_typologies.md: §1 OK FREI; §2 DIN 276; §3 lawns; §4 planting and greening; §5 trees; §6 surfaces; §7 bonds; §8 HOAI; open points; implications.
- Stream 06: 06_coefficients_drawing_standards.md: watchlist; §A1–A4 coefficients; §B5–B9 drawing standards; §C10–C11 climate maps, minimum sizes; open points; implications.
- Stream 07: 07_rendering_interop.md: §0 versions; §1 QGIS; §2 OGC, GeoServer, INSPIRE; §3 web libraries; §4 hand-drawn rendering; §5 tokens; §6 accessibility; §8 open points; recommendations.
- Library:
src/ulg/data/elements/,settings.json,palette.json,themes/,crosswalks/(format, element list); code insrc/ulg/(analysis.py,check.py,colormath.py,crosswalk.py,export/,render/).