QGIS URL Labels

Beste mensen,

Ik heb een MapServer (7.6.4) die GeoJSON input verwerkt. Deze map laad ik in QGIS (3.22.4) als WMS layer. De data die getoond wordt heeft ook zogenaamde labels (tekst). Dat werkt allemaal goed maar ik wil die tekst graag aanklikbaar maken zodat er naar een URL gegaan wordt als men er op klikt. Ik gebruik Kubuntu 22.04.

Is dat mogelijk met WMS layers in QGIS? Ik kan er niet zoveel over vinden op het internet.

Alvast bedankt.

Hallo Arthur,

Welkom!

Om je vraag enigszins te beantwoorden: Nee, dat is niet rechtstreeks mogelijk. WMS serveert een plaatje, en je kunt de labels die je daarop ziet dus niet rechtstreeks klikbaar maken. Je kunt ze in QGis zelfs niet aanpassen qua font en dergelijke, omdat het een plaatje is.

Wat wel kan, is gebruik maken van de GetFeatureInfo die WMS ondersteund. Dat kun je doen door aan je GeoJSON input een attribuut toe te voegen waarin je de URL stopt die je wilt aanbieden. Als QGis ziet dat een attribuut begint met http en/of https, dan maakt QGis dat attribuut meestal aanklikbaar zodat de url in je default browser word geopend (je kunt dat ook in de eigenshcappen van de laag aangeven als ik me goed herinner). Het betekent wel dat de eindgebruiker eerst de attribuutinformatie moet opvragen van een locatie voordat zij of hij naar die url kan gaan, maar dat lijkt me niet zo’n probleem.

Een andere oplossing is om je MapServer geen WMS te laten serveren, maar WFS. Dan heb je wel de mogelijkheid in QGis om labels aan te maken en zo, omdat je dan vector-informatie ophaalt. Voor de performance is deze oplossing wel wat afhankelijk van de hoeveelheid data die je wilt serveren, als dat bijvoorbeeld de hele BAG van heel NL is zou ik niet voor de WFS oplossing gaan.

2 likes

Bedankt voor je antwoord.

Ik zat zelf later ook al te denken dat WMS afbeeldingen serveert.

Ik ga met je antwoorden (GetFeatureInfo attribuut en WFS protocol) aan de gang. Het klinkt interessant.

De data van de layer betreft ongeveer 200 line strings met hooguit 15 punten.

Het is de bedoeling dat de layer later in GeoVisia gebruikt wordt maar dat programma heb ik zelf niet.

Ik laat wel even weten als ik er naar gekeken heb.

Ik heb er naar gekeken.

Dat met “GetFeatureInfo”, WMS en QGIS is me niet helemaal duidelijk geworden.

Ik heb me daarna meer geconcentreerd op de WFS interface. Dat is wat mij betreft (zo op het eerste gezicht) een veel mooiere manier om data te publiceren.
Daarmee heeft de client (in mijn geval met QGIS) veel meer controle over wat men wel en niet wil zien maar ook over de styling. Helaas is het me niet gelukt om clickable URL’s te maken in QGIS. Wel had ik de mogelijkheid om HTML labels ("<a href='http://google.com'>Test</a>") te maken. Dan zie ik wel alleen Test als label maar dat is niet clickable.

Ik zal mijn bevindingen delen met de gebruikers van GeoVisia, misschien is het daarmee wel mogelijk. Het lijkt er op dat WFS niet een standaard heeft voor URL’s maar het staat de client natuurlijk vrij om er mee te doen wat die wil.

Nogmaals bedankt voor het meedenken.

Hoi Arthur,

Voor de output van WFS is een url niets anders dan een stukje tekst. WFS doet daar dus inderdaad niets mee, het is aan de client die de output consumeert om iets met die tekst te doen. QGis, als je de attributen van een object raadpleegt door middel van de i-knop, herkent dat dat stukje tekst begint met https:// en maakt er dan vervolgens een link van. Althans, dat doet het in mijn ervaring (in een database view zet ik een url voor een unieke identifier - als je daar dan op klikt, opent een interne website in de default browser met meer info en context - in 1 specifiek geval opent Sharepoint online met alle documenten horend bij dat object, bijvoorbeeld).

Maar misschien heb je wat meer aan deze Stack Exchange post, waarvan het eerste antwoord de zaak goed uitlegt. Hoewel in mijn ervaring QGis daar dus zelf al een en ander van doet, maar misschien hangt dat ook van de versie af.

1 like

Aha, er gaat een wereld voor me open met die i-knop in QGIS.

Inderdaad kan ik in een WFS layer na de i-knop op routes klikken en dan verschijnt rechts een tabel met attributen van die routes. De URL waarde van een attribuut is dan clickable en opent met mijn default browser, zoals jij al beschreef. Het is iets anders dan ik in eerste instantie in gedachten had maar ik kan hier prima mee leven.

Overigens werkt dit niet met een WMS layer (logisch natuurlijk). De i-knop blijft bij mij dan grijs.

Nee, da’s niet logisch, maar afhankelijk van de configuratie van de WMS-service. Het GetFeatureInfo request is een legitiem request voor een WMS-service, maar dan moet dat wel op de server aangezet worden. Dat zal bij jouw WMS dan niet het geval zijn denk ik. Of een WMS GetFeatureInfo ondersteund, word gepubliceerd in de Capabilities van de service (zodoende weet QGis ook of ie dat i-knopje beschikbaar moet maken of niet).

Stuur eens het volgende request naar jouw WMS:

?Request=GetCapabilities&Service=WMS

Dan moet je een xml terug krijgen, waarin staat of GetFeatureInfo ondersteund word of niet. Als voorbeeld een stukje uit de Capabilities van de BAG WMS:

<Capability>
  <Request>
    <GetCapabilities>
    ...
    </GetCapabilities>
    <GetMap>
    ...
    </GetMap>
    <GetFeatureInfo>
    ...
    </GetFeatureInfo>
</Request>

In jouw geval zul je waarschijnlijk het stukje GetFeatureInfo missen. Maar dat moet in je MapServer te configureren zijn. Hoe en waar durf ik niet te zeggen, daar ken ik MapServer niet goed genoeg voor.

1 like

Mijn MapServer heeft GetFeatureInfo wel. Het is denk ik een probleem met de WMS layer configuratie.

Ik ben er nog eens voor gaan zitten en heb MapServer inderdaad zo ver gekregen dat hij alle informatie die ik wil geeft als ik in QGIS in een WMS layer met de GetFeatureInfo-tool op een lijn klik.
De GetFeatureInfo data serveert MapServer in text/html mime type. Met behulp van een template maak ik URL’s klikbaar. <p>URL: <a href = "[url]"> Google</a></p>

Het WMS “protocol” is geavanceerder dan ik gedacht had. Goed dat je me even corrigeerde.

Nu nog wat meer lijnen en punten aan de .json toevoegen. Eventueel iconen aan de elementen toevoegen waarop men kan klikken om de GetFeatureInfo data op te vragen (de lijnen zijn moeilijk te raken), als dat mogelijk is.

1 like