kein gfi result für layer mit "infoFormat": "application/vnd.ogc.gml", "text/plain" oder "application/json"

Issue #560 resolved
Dominik Fröhlich created an issue

Mit der MP v 2.6.1 erhalte ich kein gfi Ergebnis, wenn der Dienst mit "infoFormat": "application/vnd.ogc.gml" abgefragt wird (entspricht "infoFormat": "text/xml" auf mapserver). Die Dienste mit "infoFormat": "text/html" lassen sich normal abfragen. Hat sich da etwas geändert?

Das gfiFormat ist immer default. Verhalten lässt sich sowohl bei gfiWindow: "detached" als auch “attached” reproduzieren.

Ob "gfiAttributes": “showAll” oder bestimmte Felder ist, scheint keinen Unterschied zu machen.

Die abfrage wird dabei gesendet und erhält auch eine korrekte Antwort. Diese wird dann allerdings nicht dargestellt…

Beispielabfrage:

https://geoportal.freiburg.de/wms/gdm_address/gdm_address?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetFeatureInfo&FORMAT=image/png&TRANSPARENT=true&QUERY_LAYERS=addresses&CACHEID=1623798&LAYERS=addresses&INFO_FORMAT=application/vnd.ogc.gml&I=50&J=50&CRS=EPSG:25832&STYLES=&WIDTH=101&HEIGHT=101&BBOX=412532.9434312327,5315225.504816868,412666.5579424142,5315359.119328049

Liefert:

<?xml version="1.0" encoding="UTF-8"?>

<msGMLOutput 
     xmlns:gml="http://www.opengis.net/gml"
     xmlns:xlink="http://www.w3.org/1999/xlink"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <addresses_layer>
    <gml:name>Amtliches Adressverzeichnis</gml:name>
        <addresses_feature>
            <gml:boundedBy>
                <gml:Box srsName="EPSG:25832">
                    <gml:coordinates>412600.660000,5315290.100000 412600.660000,5315290.100000</gml:coordinates>
                </gml:Box>
            </gml:boundedBy>
            <id>82549</id>
            <hnr_v>3</hnr_v>
            <hnrz_v></hnrz_v>
            <str_strs_a>04480</str_strs_a>
            <hnr_a>3</hnr_a>
            <hnrz_a></hnrz_a>
            <str_bezl>Lörracher Straße</str_bezl>
            <str_bezk>LOERRACHERSTR</str_bezk>
            <x_coord>412600.66</x_coord>
            <y_coord>5315290.1</y_coord>
            <search_field>Lörracher Straße 3</search_field>
        </addresses_feature>
    </addresses_layer>
</msGMLOutput>

EDIT:

Das selbe verhalten lässt sich für Abfragen mit “text/plain” beobachten.

Hier ein Beispiellayer:

    {
        "id": "address_wms",
        "name": "Adresspunkte",
        "url": "https://geoportal.freiburg.de/wms/gdm_address/gdm_address",
        "typ": "WMS",
        "layers": "addresses",
        "format": "image/png",
        "version": "1.3.0",
        "singleTile": true,
        "transparent": true,
        "transparency": 0,
        "tilesize": "512",
        "gutter": "5",
        "minScale": "1",
        "maxScale": "250000",
        "infoFormat": "application/vnd.ogc.gml",
        "gfiAttributes": {
            "str_bezl": "Straße",
            "hnr_a": "Hausnummer",
            "hnrz_a": "Hausnummernzusatz"
        },
        "gfiTheme" : "default",
        "layerAttribution": "nicht vorhanden",
        "legendURL": "https://geoportal.freiburg.de/wms/gdm_address/gdm_address?version=1.3.0&service=WMS&request=GetLegendGraphic&sld_version=1.1.0&layer=addresses&format=image/png&STYLE=default&",
        "datasets": [
            {
                "md_id": "4a1dda6c-a1ff-43f9-a2b7-9ed97241e512"
            }
        ]
    }

EDIT2:

Auch WFS und geojson lässt sich problemlos abfragen. Öffentliches Beispiel.

{
        "id": "frelo_status",
        "name": "Frelo: Aktuelle Verfügbarkeit (Nextbike)",
        "url": "https://geoportal.freiburg.de/files/frelo/frelo_verf_geo.json",
        "typ": "GeoJSON",
        "layerAttribution": "Daten des <a href='https://www.frelo-freiburg.de' target='_new'>Fahrradleihs Frelo (https://www.frelo-freiburg.de)</a>",
        "gfiAttributes": {
            "name": "Station / Einzelrad",
            "station_nr": "Stationsnummer",
            "address": "Ort",
            "freie_raeder": "Freie Räder"
        },
        "cache": false,
        "legendURL": ""
    }

EDIT3: “application/json” scheint (zumindest wenn ein geojson returned wird) auch nicht zu funktionieren.

EDIT4:

in export function requestGfi (mimeType, url) { in wmsGetFeatureInfo.js 11ff landet der mimeType “text/html”. Das result wird somit nicht geparsed.

Comments (15)

  1. Dominik Fröhlich reporter

    Fix für “application/vnd.ogr.gml”:

    statt nur

    t.firstChild.tagName.includes("FeatureCollection") 
    

    muss

    t.firstChild.tagName.includes("FeatureCollection") || t.firstChild.tagName.includes("msGMLOutput")
    

    geprüft werden, da das Tag in der gml anders heißt. Schon funktionierts.

    Genaue Stelle im repo-code folgt…

    Gruß

    Dominik

    EDIT: masterportal/src/api/wmsGetFeatureInfo.js : 93

    state:

    if (doc.firstChild.tagName.includes("FeatureCollection")) {
    

    Patch:

    if (doc.firstChild.tagName.includes("FeatureCollection") || doc.firstChild.tagName.includes("msGMLOutput")) {
    

  2. Sven Junker-Beyel

    Die Beschreibung zum Attribute “infoFormat” ist zurzeit hier zu finden https://bitbucket.org/geowerkstatt-hamburg/masterportal/src/stable/doc/config.json.md#markdown-header-themenconfiglayerwms. Ich werde diese aber in der nächsten Version in die Dokumentation der services.json verschieben.

    Das infoFormat “Text/plain” kann von Openlayers nicht verarbeitet werden. Ich denke auch es ist nicht sinnvoll dies zu implementieren, da eine xml ja angefragt werden kann.

  3. Sven Junker-Beyel

    Der oben beschriebene Bug zu "infoFormat": "application/vnd.ogc.gml" wird in der nächsten Version 2.6.2 gefixt sein.

  4. Dominik Fröhlich reporter

    fix in nächster Version

    Danke! Ja, “text/plain” braucht man heute vermutlich nicht mehr unbedingt. Könnte man aber evtl abfangen und eine Warning werfen?

  5. Log in to comment