DTU-CAS / casmaps

Septima Widget opsætning af DTU kort
0 stars 0 forks source link

Hjælp til WFS featureinfo på linie og punkter fra WMS #4

Open DTU-CAS opened 7 months ago

DTU-CAS commented 7 months ago

Jeg har brug for hjælp til at få featureinfo fra WFS på linier og punkter i filen confg/llyn_ler.json

Kan du komme med et eksempel så der også er lidt buffer på geometrien så man kan "fange" dem med musen?

karstenpihl commented 7 months ago

Normalt kan man blot bruge bbox i stil med dette:

        "features_infohost": {
          "dataType": "json",
          "host": "https://demo-qgis-server.test.septima.dk/ows/?map=ejendomskort-02&service=WFS&outputformat=GeoJSON&REQUEST=getFeature&TYPENAME=Ejendom&BBOX=<%= bbox %>"
        },

Den tager det punkt, hvor der er klikket og tilføjer 3 pixels og konverterer det til meter og danner en bbox ud fra det. Det burde være nok for både punkter og linjer.

Men hvis du tegner punkter som en cirkel, der har en større radius end 3 pixels, så kan man klikke på noget, der ligger længere væk fra punktet end tre pixels og derved ikke ramme noget. Her kan man lave sin egen bbox beregning i stil med dette:

...&BBOX=<%= x - 3 * buffer %>,<%= y - 3 * buffer %>,<%= x + 3 * buffer %>,<%= y + 3 * buffer %>

hvor et er 9 (3x3) pixels som buffer.

Ulempen ved at benytte BBOX, er at det er en firkant der søges med. Derfor er det nemmere med en Geoserver, hvor man kan bruge CQL_FILTER, hvor man kan bruge DWITHIN som her: https://septima.dk/widget/examples/info24.html.

Man kan også lave et OGC filter i URL'en, men det er lidt bøvlet og jeg kan ikke huske hvordan, da det er meget sjældent at det er et behov.

DTU-CAS commented 7 months ago

Super. Jeg har prøvet at sætte det ind på laget afloebskomponent, men kan ikke helt få det til at virke. Har du mulighed for at kigge i koden?

karstenpihl commented 7 months ago

Grunden til at det ikke virker med features_infohost, skyldes flere ting. Bl.a. at servicen returnerer i EPSG:4326 selvom man beder om EPSG:25832. Dette sker når man får GeoJSON ud. Hvis man i stedet bruger "gml", så kommer det rigtigt ud.

Jeg har dog lavet laget afloebskomponent om, så den henter vektorfeatures fra WFS ud i stedet for WMS. Herved kan du style meget nemmere. Det håber jeg er ok. Ellers sig til.

DTU-CAS commented 7 months ago

Kan du hjælpe mig med en demo på featureinfo på WMS baggrund på elkomponentlaget i llyn_ler.json config'en? Jeg kan ikke få det til at virke

karstenpihl commented 7 months ago

Her har du en konfiguration, du kan bruge:

      {
        "visible": true,
        "id": "elkomponent",
        "name": "Elkomponent",
        "type": "WMS",
        "host": "https://qgis.cas.dtu.dk/qgisserver/test/ows",
        "layername": "elkomponent",
        "features_infohost": {
          "type": "gml",
          "dataType":"xml",
          "host":"https://qgis.cas.dtu.dk/qgisserver/test/ows?version=1.0.0&service=WFS&REQUEST=getFeature&TYPENAME=elkomponent&srsName=EPSG:25832&BBOX=<%= x-0.25 %>,<%= y-0.25 %>,<%= x+0.25 %>,<%= y+0.25 %>,EPSG:25832"
        },
        "features_style": {
          "namedstyle": "#000",
          "radius_selected": "<%= 0.25 / _currentMap.resolution %>",
          "symbol_selected": "circle",
          "strokewidth_selected": 2,
          "strokecolor_selected": "rgba(200, 0, 0, 1)",
          "fillcolor_selected": "rgba(0, 0, 0, 0)"
        },
        "template_info": "<div class='widget-hoverbox-title'>Elkomponent</div><div class='widget-hoverbox-sub'><div>Driftsstatus: <%= driftsstatus %></div><div>Type: <%= type %></div><div>Armaturtype: <%= armaturtype %></div></div>",
        "singleTile": true
      },

Dette lag er måske lidt specielt fordi cirklen for en elkomponent har en fast størrelse på 0,5 meter. Derfor har jeg lavet BBOX og "radius_selected" afhængig af at cirklen denne størrelse.