Die KI als Prüfingenieur - für Geowebdienste mit Qualitätsprädikat

Die meisten öffentlichen Geowebdienste in der Schweiz nutzen die Standards des OGC: Web Map (Tile) Service (WM(T)S), Web Feature Service (WFS), seit jüngerer Zeit auch Vector Tiles OGC API Features (OAPIF), vereinzelt auch Web Coverage Service (WCS) für Rasterdaten. Mit gängigen GIS-Servern wie MapServer, GeoServer oder QGIS Server ist die Einrichtung eines Geowebdienstes ein überschaubarer Aufwand.

Beim Kanton Schwyz werden je ein WFS, ein WMTS und ein WMS mit insgesamt über 1’900 Layern über MapServer gehostet, der grösste Teil der Daten ist öffentlich. Um die Konformität und Qualität seiner Geowebdienste sicherzustellen, hat uns der Kanton mit einem Compliance Check beauftragt.

Mit wenig Konfiguration lassen sich die Dienste im Alltag via (Desktop)-GIS oder Webanwendung bereits zuverlässig anzapfen.
Zu einem hundertprozentig OGC-konformen Webservice gehört aber noch deutlich mehr. Der Dienst soll auf eine Vielzahl von Request-Parametern korrekt reagieren und fehlerhafte Anfragen wollen mit einer spezifischen Fehlermeldung quittiert werden. Wer es genau wissen möchte, liest die Grundlagendokumente und stellt fest: Die Spezifikation geht zuweilen sehr tief ins Detail - wer sich dafür interessiert, stösst auf ein wahres rabbit hole! Beim OGC ist ein freies Tool verfügbar, das beliebige Webdienste via URL abfragen und auf Herz und Nieren prüfen kann: Die OGC Test, Evaluation, And Measurement (TEAM) Engine, die wir sogleich auf die Schwyzer Geowebdienste losgelassen haben.

Damit war die Arbeit aber noch nicht getan: Zum OGC-Prüfsiegel kommen zusätzliche Anforderungen, sozusagen ein Swiss finish für öffentliche Geodienste. Die Rede ist vom eCH-0056-Standard (Anwendungsprofil Geodienste). Das Anwendungsprofil Geodienste ist rechtsverbindlich (GeoIG) und soll die Interoperabilität aller öffentlichen Geowebdienste in der Schweiz sicherstellen. eCH-0056 versteht sich als Erweiterung zu den OGC-Spezifikationen, weshalb eine Konformitätsprüfung beide Aspekte umfassen sollte.

Zur Prüfung von Geowebdiensten auf eCH-0056 gibt es bislang keine Test-Suite. Da die Standards wohldefiniert und die Prüfarbeiten sehr repetitiver Natur sind, erkannten wir sofort einen 1A-Use Case für einen KI-basierten Ansatz.

Gesagt, getan: Wir haben eine ChatGPT-4o-Instanz (die Prüfung fand vor dem DeepSeek-Hype statt) auf die Prüfung der Geowebdienste trainiert (d.h. primär GetCapabilities XML auslesen sowie Testanfragen an den Server formulieren und die Antworten analysieren). Aufgrund der involvierten Datenmengen sind wir aber regelmässig auf “Gedächtnislücken” der KI, inkonsistente Antworten und Fehlinterpretationen gestossen. Auch eine Temperatureinstellung von 0.1 vermochte ChatGPT erst einmal nicht vom Flunkern und kreativer “Vervollständigung” abzuhalten. Ein erneuter Testdurchgang konnte ein anderes Resultat zutage fördern - das klassische Black Box-Problem.

Sicher ist sicher: Hat ChatGPT die relevanten Ausschnitte aus dem Normendokument verinnerlicht?

In einer zweiten Runde haben wir deshalb die Methodik leicht abgeändert. Die KI sollte uns einfache Python-Skripte generieren, die Serveranfragen und XML-Parsing automatisieren. Somit wurden die Resultate reproduzierbar und der Code konnte bei Bedarf jederzeit geändert oder ergänzt werden.

Einfaches KI-generiertes Python-Skript zur Überprüfung der Layer auf vorhandene Metadaten-URLs

Dieser Ansatz funktionierte für unsere Zwecke ausgezeichnet - pfeilschnell lieferten die Skripte einfach auswertbare Auflistungen, welche Layer der jeweils prüfungsrelevanten Richtlinie entsprachen. Nicht konforme Layer konnten wir daraufhin eingehender analysieren und die Ursachen identifizieren. Einige Stichproben später war auch die Qualitätssicherung abgeschlossen und die Ergebnisse wanderten in den Prüfbericht.

Auch bei der Auswertung der Ergebnisse aus der OGC TEAM Engine war ChatGPT ein wertvoller Sparringpartner.
Die zuweilen etwas kryptischen Fehlermeldungen der Test Suite konnten wir so schneller einordnen und ihre Ursache finden.

Fehlermeldung aus der OGC TEAM-Engine: Hier gibt der Server auf eine Testanfrage anstelle eines XML-Dokuments nur einen HTTP-400 Bad Request-Status zurück, was den XML-Parser verwirrt.

    <Layer>
      <ows:Title>ch_sz_a039_basisplan_farbig</ows:Title>
      <ows:Identifier>ch_sz_a039_basisplan_farbig</ows:Identifier>
      <Style isDefault="true">
        <ows:Identifier>default</ows:Identifier>
      </Style>
      <Format>image/png</Format>
      <Dimension>
        <ows:Identifier>DATE</ows:Identifier>
        <Default>202405</Default>
        <Value>202405</Value>
      </Dimension>
      <ResourceURL format="image/png" resourceType="tile"
                   template="https://map.geo.sz.ch/tiles/1.0.0/ch_sz_a039_basisplan_farbig/default/{DATE}/{TileMatrixSet}/{TileMatrix}/{TileRow}/{TileCol}.png" />
      <TileMatrixSetLink>
        <TileMatrixSet>swissgrid_2056</TileMatrixSet>
      </TileMatrixSetLink>
    </Layer>

Beispiel für ein feines Detail: Die eCH-0056 verlangt nach einem ISO-8601-kompatiblen Datum (YYYY-MM) - stattdessen liegt hier YYYYMM vor.

Der Kanton Schwyz ist übrigens auf gutem Weg - ein paar Details in der Konfiguration müssen noch bereinigt werden, und das Prüfsiegel ist in Griffweite!

Weiter
Weiter

STAC-Implementierungen in Geodateninfrastrukturen