Menu
  • Hem
  • Dokument
  • Om Mig
Geosupportsystem

Skapa anpassade symboler

Posted on 2019-05-082019-04-06

När man skapar en stil för något, så är det ganska ofta en enstaka symbol som representerar det objekt som man vill presentera. Ett annat sätt är att skapa kategorier för ett attribut så att olika symboler kan representera en variant av det objekt som skall visas.

Men det händer då och då att man vill skapa en symbol baserad på flera olika attribut, och ändå göra detta begripligt. Det tänkte jag utforska lite i detta inlägg.

Jag använder Jordbruksverkets ”Produktionsplatser för djurhållning” som går att hämta från Geodata.se både som esri-shape och som online-tjänst via WFS, vilket jag använder i mina test för att inte behöva hantera data lokalt och potentiellt kunna skapa en uppdaterad karta när som helst.

Jag börjar med en symbol som jag har använt tidigare som är lite enklare ”geometrisk” som kanske inte är självförklarande, men enkel att förstå med en simpel förklaring.

Symbolen byggs upp av en cirkel med fyra sektorer som representerar nör, gris, får och get, samt en inre cirkel som representerar fjäderfä. Varje del av dessa symboler knyts mot värdet i ett specifikt attribut med ”Enable layer/Aktivera lager”. Detta görs med en enkel ”if” sats i uttrycksbyggaren. Om det står ”JA” i kolumnen ”gris” för ett objekt, så kommer symboldelen att visas. Annars är den dold.

Resultatet kompletteras med en skräddarsydd teckenförklaring vilket gör att användaren snabbt får en uppfattning om vilken typ av djurhållning som finns på en viss plats.

Ok, detta fungerar bra, men det vore trevligt om teckenförklaringen inte skulle behövas.

Varför inte försöka skapa en symbol som den i bilden ovan, men endast med de djur som finns på platsen? Det innebär dock lite problem…

Genom att bara tända och släcka symboldelar, så kommer de flesta att ha djur som svävar långt över den plats där de borde vara förankrade. Detta betyder att jag behöver justera vertikalt offset för de flesta delarna, beroende på om ”underliggande” djur finns på platsen eller ej.

Man får vara riktigt kreativ med ”if” satser i uttrycksbyggaren för att åsidosätta ”offset” för varje enskild symboldel på ett korrekt avstånd beroende på vilka djur som skall vara aktiva.

if("not_"='JA',
if("gris"='JA',
if("far"='JA',
if("get"='JA','-2,-30','-2,-25'),
if("get"='JA','-2,-25','-2,-18')),
if("far"='JA',
if("get"='JA','-2,-22','-2,-18'),
if("get"='JA','-2,-17','-2,-11'))),
if("gris"='JA',
if("far"='JA',
if("get"='JA','-2,-21','-2,-14'),
if("get"='JA','-2,-12','-2,-7')) ,
if("far"='JA',
if("get"='JA','-2,-12.5','-2,-7.5'),
if("get"='JA','-2,-6','-2,0'))))

Ovanstående är det mest komplicerade fallet, nämligen fjäderfä. Placeringen av denna symboldel är beroende av om nöt, gris, får och get är närvarande eller ej. Det blir därför många if-satser i if-satser och man måste hålla tungan rätt i mun för att det skall bli rätt.

Man skulle sannolikt kunna skriva en anpassad pythonfunktion för detta på ett enklare sätt, eller så finns det ytterligare något sätt i uttrycksbyggaren som kan förenkla.

Det blir en ”stor” och komplex symbol som lätt flyter ihop med närliggande symboler. Detta kan undvikas något genom att använda ”kantglöd” som realtidseffekt på alla symboldelarna. Om man dessutom kontrollerar utritningsordningen så att objekt som är längre söderut (närmare oss) ritas ut efter (ovanpå) de som är längre norrut (längre bort).

Mycket trixande med siffror och ändringar hit och dit, men resultatet blev ganska bra. Sedan får naturligtvis situationen avgöra när en enkel geometrisk symbol är lämpligare.

Hmm. Påminner om en saga av H.C. Andersen… tror jag..

Lämna ett svar Avbryt svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *

Translate with Google

GBR In English
GER Auf Deutch
FRA En Français
ESP En Español
Swedish is a hard language for a machine to translate. Nuance and detail will likely be lost.
     

Bok om QGIS på Svenska

Bok

Beställ Boken/E-bok genom att klicka på bilden (även förhandsgranskning).

Senaste kommentarer

  • klakar om Laga hål i höjddata
  • Per Ekström om Laga hål i höjddata
  • Sur om Mera verktyg i QGIS
  • Anton om ”Mobile *.Geodatabase”
  • Fredrik Ekberg om Ingen är oskyldig

Arkiv

Prenumerera på Geosupportsystem

Skriv in namn och epost för att prenumerera på meddelanden från denna blogg.
Loading

geosupport

TrueNAS bygge. @fractaldesignna Define R5 är rikt TrueNAS bygge. @fractaldesignna Define R5 är riktigt trevlig att bygga i, och den sväljer väldigt mycket disk. Här skall virtualiseras både PostGis, WebODM och Geonode så småningom.
Då har jag lite att bläddra i ett tag framöver. Då har jag lite att bläddra i ett tag framöver.
YouTube video to frames. Processed in OpenDroneMap YouTube video to frames. Processed in OpenDroneMap and visualized in QGIS 3.17.
Ladda mer...

Meta

  • Logga in
  • Flöde för inlägg
  • Flöde för kommentarer
  • WordPress.org
©2021 Geosupportsystem | WordPress Theme by Superbthemes.com