Wir haben folgende Anfrage aus Brandenburg erhalten:

Beim Test eines WMS bekomme ich noch folgenden 3 Fehlermeldungen:

  • A GetMap was requested using parameter 'TRANSPARENT' with an invalid value and the service did not throw an exception.
  • A GetMap was requested without mandatory parameter 'STYLES' and the service did not throw an exception.
  • A GetCapabilities was requested without mandatory parameter 'service' and the service did not throw an exception.

Gibt es Erfahrungen im Zusammenhang mit einem MapServer, dass dieser die Anforderungen erfüllt? Der MapServer ist entweder fehlertolerant oder liefert ein HTML (200, A GetMap was requested using parameter 'TRANSPARENT' with an invalid value and the service did not throw an exception.) zurück.

Kann jemand weiterhelfen?

Kommentar

  1. 1. „A GetMap was requested using parameter 'TRANSPARENT' with an invalid value and the service did not throw an exception.“

    Der Parameter „TRANSPARENT“ ist bei einem GetMap-Request laut OGC WMS 1.3.0-Spezifikation „optional“. Die INSPIRE-Anforderungen weichen hier also vom Standard ab. Mapserver hält sich hier, soweit ich sehe, an den Standard. (vgl. „OpenGIS® Web Map Server Implementation Specification“, https://portal.ogc.org/files/?artifact_id=14416). Zu bedenken ist dabei auch, dass manche Ausgabeformate prinzipiell keine Transparenz ermöglichen („image/jpeg“).

    2. A GetMap was requested without mandatory parameter 'STYLES' and the service did not throw an exception.

    Hier ist Mapserver tatsächlich (noch) fehlerhaft. Ab der für den 03.09.2021 angekündigten Version „Mapserver 8.0“ wird das korrigiert sein. Die bisherige Toleranz eines fehlenden STYLES-Parameters kann dann nur noch optional über eine Variable „wms_allow_getmap_without_styles“ erreicht werden.

    Auszug aus: https://mapserver.gis.umn.edu/de/ogc/wms_server.html:

    „Bemerkung

    As of the MapServer 8.0 release, MapServer will strictly require the „STYLES=“ parameter (unless SLD & SLD_BODY are specified). To avoid this requirement, version 8.0 will allow setting „wms_allow_getmap_without_styles“ „true“ in MAP.WEB.METADATA).

    wms_allow_getmap_without_styles

        Bemerkung

        wms_allow_getmap_without_styles will be included in the MapServer 8.0 release.

        Description: (Optional) „true“ or „false“. If true, the „STYLES=“ GetMap parameter will not be required in the request. If false (the default as of MapServer 8.0) the „STYLES=“ GetMap parameter will be required in the request.“

    Siehe auch https://github.com/mapserver/mapserver/wiki/MapServer-8.0-Release-Plan.

    3. „A GetCapabilities was requested without mandatory parameter 'service' and the service did not throw an exception.“

    Auch hier ist Mapserver defaultmäßig „toleranter“ als INSPIRE es erlaubt – nach dem Motto: wenn in der URL kein SERVICE-Parameter angeben ist, dann ist mit dem Aufruf etwas anderes gemeint ;-)

    Ich habe das mit „Bordmitteln“ wie folgt gelöst (zumindest kommt jetzt keine diesbezügliche Fehlermeldung mehr vom INSPIRE-Validator):

    -        Im WEB-Block des Mapfiles auf ein Template verweisen, z.B. mit  TEMPLATE '../Error_TemplateXML.xml'

    -        Ein Mapserver-Template erstellen, welches ggf. einen „OWS Exception Report erzeugt“ – hier ein simples Beispiel:

    <!-- MapServer Template -->
    <?xml version='1.0' encoding="UTF-8" standalone="no" ?>
    <ServiceExceptionReport version="1.3.0" xmlns="http://www.opengis.net/ogc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/ogc http://schemas.opengis.net/wms/1.3.0/exceptions_1_3_0.xsd">

    <ServiceException code="InvalidParameterValue">
    "[errmsg] - Ihr Aufruf/Ihre Datenabfrage ist fehlerhaft oder unvollständig!"
    </ServiceException>
    </ServiceExceptionReport>

    Jetzt sollte – wie von INSPIRE verlangt -  bei Aufruf mit fehlendem oder ungültigem „SERVICE“-Parameter ein OWS-Exception-Report erzeugt werden.

    -------------------

    martin.arimont@ble.de, 22.07.2021