No description
  • Go 82.4%
  • HTML 17.6%
Find a file
2026-05-05 00:17:16 +02:00
.DS_Store README zugefügt, Layout angepasst. 2026-05-05 00:17:16 +02:00
.gitignore README zugefügt, Layout angepasst. 2026-05-05 00:17:16 +02:00
CLAUDE.md README zugefügt, Layout angepasst. 2026-05-05 00:17:16 +02:00
config.example.yaml README zugefügt, Layout angepasst. 2026-05-05 00:17:16 +02:00
config.yaml README zugefügt, Layout angepasst. 2026-05-05 00:17:16 +02:00
go.mod first commit 2026-05-04 22:47:41 +02:00
go.sum first commit 2026-05-04 22:47:41 +02:00
kfz_data.go erste funktionsfähige version 2026-05-04 23:43:39 +02:00
main.go README zugefügt, Layout angepasst. 2026-05-05 00:17:16 +02:00
README.md README zugefügt, Layout angepasst. 2026-05-05 00:17:16 +02:00
template.html README zugefügt, Layout angepasst. 2026-05-05 00:17:16 +02:00

Deutschlandkarte

Ein Go-CLI, das aus einer YAML-Konfiguration eine eigenständige interaktive Landkreis-Karte Deutschlands als HTML-Datei erzeugt. Jeder Eintrag in der Konfiguration bündelt mehrere KFZ-Kennzeichen unter einem gemeinsamen Titel, einer Beschreibung, einem Link und optional einem Logo. Beim Hovern eines markierten Landkreises erscheint ein Tooltip; ein Klick öffnet den Link in einem neuen Tab.

Die Ausgabe enthält D3.js, die GeoJSON-Daten und die Item-Daten inline und funktioniert daher ohne Internetverbindung.

Aufbau

GOTOOLCHAIN=local go build -o deutschlandkarte .
./deutschlandkarte config.example.yaml      # erzeugt map.html (~1,4 MB)
open map.html

GOTOOLCHAIN=local verhindert, dass Go beim Auflösen der Dependencies eine neuere Toolchain herunterlädt; die Module sind auf Go 1.24 abgestimmt (golang.org/x/text@v0.21, gopkg.in/yaml.v3).

YAML-Konfiguration

title: Beispielkarte
subtitle: Demo-Konfiguration

items:
  - title: Frankfurt-Rhein-Main
    description: Metropolregion am Main
    link: https://example.com
    logo: https://example.com/logo.png   # optional
    kfzKennzeichen: [HG, F, MTK, OF, WI]

  - title: Köln/Bonn
    description: Rheinland
    link: https://example.com
    kfzKennzeichen: [K, BN, SU, GL, LEV, GM]

items darf weggelassen werden eine reine Top-Level-Liste funktioniert ebenfalls. Pro Item wird ein Tooltip erzeugt; alle aufgelisteten Kennzeichen werden auf der Karte gemeinsam markiert und teilen sich diesen Tooltip.

Befehle

./deutschlandkarte config.yaml                      # Standard-Lauf
./deutschlandkarte -o out.html config.yaml          # eigener Ausgabepfad
./deutschlandkarte -t my_template.html config.yaml  # eigenes HTML-Template
./deutschlandkarte --kfz-data extras.yaml config.yaml  # KFZ-Tabelle erweitern
./deutschlandkarte --list-kfz                       # alle bekannten KFZ ausgeben
./deutschlandkarte --check-kfz                      # Tabelle gegen GeoJSON prüfen

KFZ-Kennzeichen

Eingebaut sind 407 Einträge (alle 16 Bundesländer, Hauptkennzeichen plus gängige Hilfskennzeichen) in kfz_data.go. Jedes Kennzeichen ist auf einen oder mehrere Suchbegriffe abgebildet, die per Substring-Match (oder Exakt-Match mit =-Präfix) gegen feature.properties.NAME_3 der GeoJSON geprüft werden diakritik- und groß-/kleinschreibungs-unabhängig.

Soll ein Kennzeichen hinzugefügt oder überschrieben werden, ohne das Programm neu zu kompilieren, wird eine eigene YAML-Datei mitgegeben:

# extras.yaml
XX: [Suchbegriff, =Genauer Begriff]
YY: [=Kreisname Städte]
./deutschlandkarte --kfz-data extras.yaml config.yaml

Geodaten

Die GeoJSON wird einmalig von isellsoap/deutschlandGeoJSON heruntergeladen und in .cache/4_niedrig.geo.json zwischengespeichert (~1,1 MB). Höhere Auflösungen (3_mittel, 2_hoch) sind über die Konstanten geojsonURL und geojsonName in main.go einstellbar.

Einbettung als Overlay

index.html zeigt eine Beispielseite, die die Karte per <iframe> als halbtransparentes Overlay über einem Hintergrundbild lädt. Die Transparenz steuert das body { background: rgba(15, 15, 15, ALPHA); } in template.html. Districts ohne Markierung verwenden --region-fill: transparent, damit die Seite hinter der Karte sichtbar bleibt.

Dateien

main.go              CLI: Flags, Fetch, Auflösung, Rendering
kfz_data.go          eingebaute KFZ → Suchbegriff-Tabelle (~400 Einträge)
template.html        HTML/CSS/JS-Template mit Platzhaltern
config.example.yaml  Beispielkonfiguration
index.html           Beispiel-Hostseite mit Overlay-Einbettung
.cache/              gecachte GeoJSON + D3

Die Platzhalter im Template:

Platzhalter Wird ersetzt durch
__TITLE__ HTML-escaped cfg.Title
__SUBTITLE__ HTML-escaped cfg.Subtitle
/*__D3__*/ inlined D3.js v7.8.5
/*__GEOJSON__*/ inlined Feature-Collection
/*__ITEMS__*/ JSON-Array der aufgelösten Items

Lizenz / Datenherkunft

Geodaten: GADM via isellsoap/deutschlandGeoJSON (archiviert, stabil). D3.js: BSD-3-Clause.