Datadefineret tilsidesættelse

Dette ikke særligt mundrette begreb (på engelsk "data-defined overrides") dækker over én af de mest betydningsfulde funktionaliteter i QGIS, når det handler om at tilføje fleksibilitet og ekstreme muligheder.

Overalt i QGIS kan man som bruger angive værdier for det ene eller det andet. Hvis vi blot skal nævne nogle få eksempler, så kunne det være størrelsen eller rotationen af et punktsymbol, målforholdet på et printet kort og tekststørrelsen på en label.

I mange tilfælde fungerer det fint blot at angive en fast værdi - "denne markør skal være 6 millimeter stor", "dette kort skal printes i 1:5.000" eller "denne tekst skal skrives med en tekststørrelse 12 punkter".

Men når det ikke er tilstrækkeligt, når f.eks. markøren skal have en størrelse, der er afhængig af en attribut på objekter, så kommer datadefineret tilsidesættelse ind i billedet.

Hvor finder du så disse datadefinerede tilsidesættelser? Det gør du overalt i QGIS, hvor du ser denne knap: - og det gør du rigtig mange steder! Knappen fortæller, at her kan du - som alternativ til en fast værdi - angive en værdi, som varierer med de underliggende data eller på baggrund af et udtryk. Det er selve grundtanken bag datadefineret tilsidesættelse.

Lad os se på et eksempel: Vi har et punktlag, som viser byer i Danmark. Disse punkter har en attribut, som indeholder den pågældende bys indbyggertal. Vi ønsker nu at visualisere punktlaget på en sådan måde, at punkt-symbolets størrelse afspejler indbyggertallet i den enkelte by.

Vi indlæser laget på vanlig vis og opsætter det med røde cirkler som symbol. Under 'Størrelse' på 'Symbologi' fanen i lagets egenskabsdialogboks trykker vi på knappen for datadefineret tilsidesættelse:

Vi vælger 'Redigér...' og indtaster udtrykket "indb_antal" / 1000 i Feltberegneren. Det betyder, at QGIS i stedet for en statisk/fast værdi for størrelsen, beregner det enkelte punkts størrelse ved at hente værdien i feltet "indb_antal" i attributtabellen og dividere denne med 1000 - resultatet er så punktsymbolets størrelse (i millimeter - for det er i dette tilfælde den enhed, der er valgt).

Vi kan samtidig bemærke, at knappen til datadefineret tilsidesættelse nu er blevet gul. Den kommer i to former:

: Som indikerer, at der nu er indsat en datadefineret tilsidesættelse, som f.eks. er en attributværdi. : Som indikerer, at den datadefinerede tilsidesættelse består af et udtryk (som i ovenstående eksempel)

Hvordan anvender jeg datadefineret tilsidesættelse?

Lad os starte med at tage et nærmere kig på menuen, som åbnes, når man klikker på knappen for datadefineret tilsidesættelse:

Den nemmeste anvendelse er, hvor vi blot ønsker, at en attributværdi skal bruges til at fastlægge en given størrelse. I så fald klikker vi blot på 'Felttype' og får så vist en undermenu med de potentielt anvendelige felter (d.v.s. dem, der opfylder datatype kravene for den pågældende størrelse).

Hvis vi f.eks. ville illustrere en fjernvarmeledning med dens aktuelle dimension, så vælger vi som størrelse den attribut, der indeholder ledningens dimension.

Hvis vi alternativt vil lave en mere eller mindre komplekst udtryk (som i eksemplet ovenfor), vælger vi 'Redigér...' og sammensætter udtrykket i Feltberegneren.

Anvendelse af Assistenten

For opsætning af lidt mere komplekse tilsidesættelse kan man anvende Assistenten (sidste punkt på ovenstående menu). Denne åbner en dialog som den nedenstående:

Her vælger man øverst hvilken attribut, der er kilde til ens opsætning. Hvis vi kigger på eksemplet med byer efter indbyggertal, vil det være feltet "indb_antal". Og herefter har man en række indstillingsmuligheder, bl.a. at anvende en transformeringskurve, så man kan lave mere sofistikerede transformeringer end den lineære, der blev anvendt i eksemplet ovenfor.

Hvilke værdier kan jeg anvende i en datadefineret tilsidesættelse?

Den værdi, som hentes i en attribut eller et udtryk, skal være af en type, som QGIS kan bruge i den givne kontekst. Hvordan finder man så ud af, hvad det er?

Det kan man gøre ved at vælge menupunktet 'Beskrivelse...' i den overfor viste dialogboks. Beskrivelsen indeholder følgende elementer:

Her kan man bl.a. se typen af det forventede input (i dette tilfælde en decimaltalsværdi (double) større end eller lig med 0), men også at de gyldige inputtyper udover double-værdier kan være strings og heltal. For førstnævntes vedkommende gælder selvfølgelig, at de her skal kunne konverteres til en decimaltalsværdi. Med andre ord er teksten '123,5' gyldig, mens teksten 'meget store' ikke er! 😉

Last updated