Datenformat für Karte auf GeoJSON umgestellt

Ich habe neulich GeoJSON als Format entdeckt und nun meine Karte mit Blogeinträgen darauf umgestellt.

Für die Karte mit den Blogeinträgen hatte ich mit meinen Python-Skripten aus den Metadaten meiner Blogeinträge jeweils die Position ausgelesen und als JSON ausgegeben. So sah das Format bisher aus:

[
  {
    "board": null,
    "category": "Sport",
    "date": "2023-08-12",
    "lat": 50.77937,
    "lon": 7.43674,
    "path": "bumm-reifen-und-schlauch-verabschieden-sich-gleichzeitig",
    "previewimage": "2023-07-30_11-28-53.jpg",
    "title": "\u00bbBumm!\u00ab \u2014 Reifen und Schlauch verabschieden sich gleichzeitig"
  }
]

Das ist einfach eine Liste mit Dictionaries (Array mit Objekten). Dies habe ich dann wiederrum mit JavaScript eingelesen und daraus Punkte für meine Karte erstellt.

Die Leaflet-Bibliothek unterstützt aber auch GeoJSON. Das ist ein offener Standard um Geodaten zu kodieren. Ich habe mein Python-Skript mit der geojson-Bibliothek erweitert, sodass es nun GeoJSON erzeugt. Der eine Blogeintrag sieht dann so aus:

{
    "features": [
        {
            "geometry": {
                "coordinates": [
                    7.43674,
                    50.77937
                ],
                "type": "Point"
            },
            "properties": {
                "board": null,
                "category": "Sport",
                "date": "2023-08-12",
                "path": "bumm-reifen-und-schlauch-verabschieden-sich-gleichzeitig",
                "previewimage": "2023-07-30_11-28-53.jpg",
                "title": "»Bumm!« — Reifen und Schlauch verabschieden sich gleichzeitig",
                "updated": null
            },
            "type": "Feature"
        },
    ],
    "type": "FeatureCollection"
}

Auf der Webseite hat sich nicht wirklich etwas verändert, die Karte wird dargestellt wie vorher auch. Nur mein Code hat sich verändert.

Ein interessanter Nebeneffekt ist allerdings, dass ich diese GeoJSON-Datei dann auch in anderen Programmen direkt öffnen kann. So kann QGIS diese Datei direkt anzeigen:

Weil die Metadaten in einem standardisierten Format sind, kann man sich zum Beispiel die Kategorie farblich anzeigen lassen:

Dann sieht die Karte wie folgt aus. Natürlich sind die meisten Artikel mit Ortsbezug zum Thema Verkehr, daher ist das eher weniger spannend.

QGIS kann auch mehrere Punkte zu Clustern zusammenlegen, ähnlich wie das Leaflet mit dem Cluster-Plugin tut.

Ich kann auch die Beschriftungen aktivieren.

Es wird dann allerdings eher unübersichtlich.

Ich weiß noch nicht, was ich mit der Datei so anstellen möchte. Aber es vereinfacht den JavaScript-Code, weil ich nun in Leaflet einfach nur diese Datei laden muss und direkt eine Render-Funktion pro Punkt angeben kann. Das reduziert das händische Erzeugen der Punkte. Und vielleicht finde ich in Zukunft noch mehr Anwendungen für GeoJSON.