Publiceret: 7. marts 2023 Læsetid: 10 min.
Egne expressions – en overset mulighed i QGIS?
Ét af QGIS’ særkender er den ekstreme fleksibilitet og de uanede muligheder for at tilpasse og udvide funktionaliteten. Selv den mest nystartede bruger kender QGIS’ over 1.000 plugins, og de fleste har også stiftet bekendtskab med de mange datadefinerede opsætningsmuligheder.
Expressions (udtryk) i QGIS
Men det er blot et par af eksemplerne på fleksibiliteten. Som bruger lærer man også hurtigt de indbyggede funktioner eller udtryk at kende. I mange tilfælde anvendes disse i udtryksdialogen eller feltberegneren.
Hvad færre tilsyneladende ved – eller ser ud til at udnytte – er, at det er meget simpelt at udvide QGIS’ udtrykssamling med egne, tilpassede udtryk!
“Men hvad kan det bruges til?”, tænker du måske… Lad os belyse det med et par eksempler!
Opslag af nærmeste adresse
Ofte ønsker man, når man opretter nye objekter, at indsætte nærmeste adresse i forhold til objektets placering som en attribut på objektet. Det kan f.eks. være, at du har et lag med brandstandere og ønsker at registrere den nærmeste adresse, således at en brandstander også kan lokaliseres relativt nemt uden anvendelse af kortet. Måske skal du udskrive en liste over brandstandere, der skal tilses, og vil her gerne kunne angive nærmeste adresse? Eller måske er det bare bekvemt at kunne referere til “brandstanderen udfor Vestergade 17”?
Så er et brugerdefineret udtryk en god vej at gå! Det betyder, at du indlægger din egen funktion, f.eks. getClosestAddress(x,y), som giver dig adressen tættest på de angivne koordinater.
Ovenstående ser nok en anelse “kinesisk” ud, hvis du ikke kender til Python sproget og QGIS’ måde at håndtere udtryk på. Men det vigtigste her er budskabet om, at det er en MEGET overskuelig opgave (som du nok også kan se af det meget begrænsede antal kodelinjer) at udarbejde et sådant script.
Autorotation af symboler
Hvis vi tager funktionaliteten et skridt videre, så er det også muligt at lave et udtryk, som beregner et underliggende linjesegments retning i forhold til et punktobjekt på linjen. Og hvad skal det så bruges til? Jo, det er ganske snildt, hvis du har punktobjekter, som du ønsker at rotere, så de følger den linje, de ligger på. Det kan f.eks. være ventiler i et vandledningsnet eller stoppesteder langs en vejmidte.
Du kender muligvis allerede den manuelle tilgang til dette: Du sætter dit punktlags symbolik op, så symbolets rotation er baseret på et attributfelt. Når du så indsætter nye objekter, anvender du tool’et “Rotér punktsymbol” til manuelt at rotere symbolet med den ønskede vinkel. Denne vinkel gemmes så i det attributfelt, som du har udpeget.
Men hvad nu hvis du havde en funktion/udtryk, som selv kunne beregne denne vinkel ved at kigge på det linjesegment, som punktet ligger på? Så kunne det foregå automatisk som vist nedenfor, og du slap for sidstnævnte manuelle proces.
Savner du en funktion?
Mulighederne er mange, og dette var blot et par eksempler! Har du behov for at slå en terrænkote op i Datafordelerens højdemodel for et givet punkt, så har jeg også allerede en funktion til dette.
Men savner du en helt anden funktion, så kontakt mig og lad os i fællesskab se, om vi ikke kan finde ud af noget!