Viktigt

Översättning är en gemenskapsinsats du kan gå med i. Den här sidan är för närvarande översatt till 100.00%.

2.4. Lektion: Symbologi

Ett lagers symbologi är dess visuella utseende på kartan. Den grundläggande styrkan med GIS jämfört med andra sätt att representera data med rumsliga aspekter är att du med GIS har en dynamisk visuell representation av de data du arbetar med.

Därför är kartans visuella utseende (som beror på symbologin i de enskilda lagren) mycket viktigt. Slutanvändaren av de kartor som du producerar måste enkelt kunna se vad kartan representerar. Lika viktigt är det att du kan utforska data när du arbetar med dem, och en bra symbologi är till stor hjälp.

Att ha rätt symbologi är med andra ord inte en lyx eller bara trevligt att ha. Det är faktiskt nödvändigt för att du ska kunna använda ett GIS på rätt sätt och producera kartor och information som människor kan använda.

Målet för den här lektionen: Att kunna skapa vilken symbologi du vill för vilket vektorlager som helst.

2.4.1. ★☆☆ Följ med: Skiftande färger

För att ändra ett skikts symbologi, öppna dess Layer Properties. Låt oss börja med att ändra färg på skiktet landuse.

  1. Högerklicka på skiktet landuse i skiktlistan.

  2. Välj menyalternativet Properties… i den meny som visas.

    Observera

    Som standard kan du också komma åt ett lagers egenskaper genom att dubbelklicka på lagret i listan Lager.

    Tips

    Knappen symbology längst upp i panelen Layers öppnar panelen Layer Styling. Du kan använda den här panelen för att ändra vissa egenskaper hos lagret: som standard kommer ändringar att tillämpas omedelbart!

  3. I fönstret Layer Properties väljer du fliken symbology Symbology:

    ../../../_images/layer_properties_style.png
  4. Klicka på färgvalsknappen bredvid etiketten Color. En standarddialogruta för färg visas.

  5. Välj en grå färg och klicka på OK.

  6. Klicka på OK igen i fönstret Layer Properties, så ser du att färgändringen tillämpas på lagret.

2.4.2. ★☆☆ Prova själv:

Ändra färgen på vatten-lagret till ljusblått. Försök att använda panelen Layer Styling istället för menyn Layer Properties.

2.4.3. ★☆☆ Följ med: Ändra symbolstruktur

Det här är bra så här långt, men det finns mer i ett lagers symbologi än bara dess färg. Härnäst vill vi eliminera linjerna mellan de olika markanvändningsområdena för att göra kartan mindre visuellt rörig.

  1. Öppna fönstret Layer Properties för skiktet landuse.

    Under fliken symbology Symbology ser du samma typ av dialog som tidigare. Den här gången gör du dock mer än att bara snabbt ändra färg.

  2. Expandera rullgardinsmenyn Fill i symbollagerträdet och välj alternativet Simple fill.

  3. Klicka på rullgardinsmenyn Stroke style. För närvarande bör den visa en kort linje och orden Solid Line.

  4. Ändra detta till No Line.

    ../../../_images/simple_fill_selected.png
  5. Klicka på OK.

Nu kommer lagret landuse inte att ha några linjer mellan områdena.

2.4.4. ★☆☆ Prova själv:

  • Ändra vatten-skiktets symbologi igen så att det får en mörkare blå kontur.

  • Ändra symbologin för skiktet rivers till en vettig representation av vattenvägar.

Kom ihåg: du kan använda knappen symbology Öppna panelen Layer Styling och se alla ändringar direkt. I den panelen kan du också ångra enskilda ändringar medan du symboliserar ett lager.

2.4.5. ★★☆ Följ med: Skalbaserad synlighet

Ibland kommer du att upptäcka att ett lager inte är lämpligt för en viss skala. Ett dataset med alla kontinenter kan t.ex. ha låg detaljrikedom och inte vara särskilt exakt på gatunivå. När det händer vill du kunna dölja datasetet i olämpliga skalor.

I vårt fall kan vi bestämma oss för att dölja byggnaderna i små skalor. Den här kartan, till exempel…

../../../_images/buildings_small_scale.png

…är inte särskilt användbart. Byggnaderna är svåra att urskilja i den skalan.

För att aktivera skalbaserad rendering:

  1. Öppna dialogrutan Layer Properties för skiktet buildings.

  2. Aktivera fliken rendering Rendering.

  3. Aktivera skalbaserad rendering genom att klicka på kryssrutan märkt Scale dependent visibility:

  4. Ändra Minimum-värdet till 1:10000.

    ../../../_images/scale_dependent_visibility.png
  5. Klicka på OK.

Testa effekterna av detta genom att zooma in och ut på din karta och notera när skiktet ”byggnader” försvinner och dyker upp igen.

Observera

Du kan använda mushjulet för att zooma i steg. Alternativt kan du använda zoomverktygen för att zooma till ett fönster:

zoomIn zoomOut

2.4.6. ★★☆ Följ med: Lägga till symbolskikt

Nu när du vet hur du ändrar enkel symbologi för lager är nästa steg att skapa mer komplex symbologi. I QGIS kan du göra detta med hjälp av symbolskikt.

  1. Gå tillbaka till skiktet landuse i panelen för symbolegenskaper (genom att klicka på Simple fill i symbolskiktsträdet).

    I det här exemplet har den aktuella symbolen ingen kontur (dvs. den använder kantstilen No Line).

    ../../../_images/simple_fill_selected.png
  2. Välj nivån Fill i trädet och klicka på knappen symbologyAdd Add symbol layer. Dialogrutan kommer att se ut ungefär så här, med ett nytt symbolskikt tillagt:

    ../../../_images/new_symbol_layer.png

    Det kan till exempel se lite annorlunda ut i färgen, men det kommer du att ändra ändå.

Nu finns det ett andra symbolskikt. Eftersom den är enfärgad kommer den naturligtvis att helt dölja den tidigare symbolen. Dessutom har den en Solid Line border style, vilket vi inte vill ha. Det är uppenbart att den här symbolen måste ändras.

Observera

Det är viktigt att inte blanda ihop ett kartlager och ett symbollager. Ett kartlager är en vektor (eller raster) som har laddats in i kartan. Ett symbolskikt är en del av den symbol som används för att representera ett kartskikt. I den här kursen kommer ett kartlager oftast att kallas för just ett lager, men ett symbollager kommer alltid att kallas för ett symbollager för att undvika förväxling.

Med det nya symbolskiktet Simple Fill valt:

  1. Ställ in kantstil till No Line, som tidigare.

  2. Ändra fyllningsstilen till något annat än Solid eller No brush. Till exempel

    ../../../_images/new_fill_settings.png
  3. Klicka på OK.

Nu kan du se dina resultat och justera dem efter behov. Du kan till och med lägga till flera extra symbollager och skapa en slags textur för ditt lager på det sättet.

../../../_images/multiple_symbol_layers.png

Det är kul! Men den har förmodligen för många färger för att kunna användas på en riktig karta…

2.4.7. ★★☆ Prova själv:

Kom ihåg att zooma in om det behövs och skapa en enkel men inte distraherande textur för lagret ”byggnader” med hjälp av metoderna ovan.

2.4.8. ★★☆ Följ med: Beställning av symbolnivåer

När symbolskikten renderas, renderas de också i en sekvens, på samma sätt som de olika kartskikten renderas. Detta innebär att det i vissa fall kan ge oväntade resultat att ha många symbolskikt i en symbol.

  1. Ge lagret vägar ett extra symbollager (använd den metod för att lägga till symbollager som visas ovan).

  2. Ge baslinjen en Stroke width1.5 och en svart färg.

  3. Ge det nya, översta lagret en tjocklek på 0,8 och en vit färg.

Du kommer att märka att detta händer:

../../../_images/bad_roads_symbology.png

Tja, vägar har nu en gata-liknande symbologi, men du ser att linjerna överlappar varandra vid varje korsning. Det är inte alls vad vi vill ha!

För att förhindra detta kan du sortera symbolnivåerna och på så sätt styra i vilken ordning de olika symbollagren ska återges.

Ändra ordningen på symbollagren:

  1. Välj det översta Line-lagret i symbollagerträdet.

  2. Klicka på Avancerat ► Symbolnivåer… i fönstrets nedre högra hörn.

    ../../../_images/symbol_levels_main_dialog.png

    Då öppnas en dialogruta som ser ut så här:

    ../../../_images/symbol_levels_dialog.png
  3. Markera checkbox Aktivera symbolnivåer. Du kan sedan ställa in lagerordningen för varje symbol genom att ange motsvarande nivånummer. 0 är det nedersta lagret.

    I vårt fall vill vi bara aktivera alternativet, så här:

    ../../../_images/correct_symbol_layers.png

    Detta gör att den vita linjen hamnar ovanför den tjocka svarta linjen:

  4. Klicka på OK två gånger för att återgå till kartan.

    Kartan kommer nu att se ut så här:

    ../../../_images/better_roads_symbology.png

När du är klar ska du komma ihåg att spara själva symbolen så att du inte förlorar ditt arbete om du ändrar symbolen igen i framtiden. Du kan spara din aktuella symbolstil genom att klicka på knappen Save Style… längst ner i dialogrutan Layer Properties. Vi kommer att använda formatet QGIS QML Style File.

Spara din stil i mappen solution/styles/better_roads.qml. Du kan när som helst ladda en tidigare sparad stil genom att klicka på knappen Load Style…. Innan du ändrar en stil bör du tänka på att alla osparade stilar som du ersätter kommer att gå förlorade.

2.4.9. ★★☆ Prova själv:

Ändra utseendet på vägar-skiktet igen.

Gör vägarna smala och gula, med en tunn, ljusgrå kontur och en tunn svart linje i mitten. Kom ihåg att du kan behöva ändra renderingsordningen för lagren i dialogrutan Avancerat ► Symbolnivåer….

../../../_images/target_road_symbology.png

2.4.10. ★★★★ Prova själv:

Symbolnivåer fungerar även för klassificerade lager (dvs. lager som har flera symboler). Eftersom vi inte har behandlat klassificering ännu kommer du att arbeta med några rudimentära förklassificerade data.

  1. Skapa ett nytt projekt och lägg bara till datasetet roads.

  2. Tillämpa stilfilen advanced_levels_demo.qml som finns i exercise_data/styles på lagret. Detta kan göras via Style ► Load Style… längst ner i Layer Properties-dialogrutan.

  3. Zooma in till området Swellendam.

  4. Använd symbolskikt och se till att skiktens konturer flyter in i varandra enligt bilden nedan:

    ../../../_images/correct_advanced_levels.png

2.4.11. ★★☆ Följ med: Typer av symbolskikt

Förutom att ställa in fyllningsfärger och använda fördefinierade mönster kan du använda helt olika symbollagertyper. Den enda typ vi har använt hittills är Simple Fill. De mer avancerade symbollagertyperna gör att du kan anpassa dina symboler ännu mer.

Varje typ av vektor (punkt, linje och polygon) har sin egen uppsättning av symbollagertyper. Först ska vi titta på de typer som finns för punkter.

Typer av lager för punktsymboler

  1. Avmarkera alla lager utom places.

  2. Ändra symbolegenskaperna för skiktet platser:

    ../../../_images/places_layer_properties.png
  3. Du kan komma åt de olika symbollagertyperna genom att välja lagret Enkel markör i symbollagerträdet och sedan klicka på rullgardinsmenyn Symbollagertyp:

    ../../../_images/marker_type_dropdown.png
  4. Undersök de olika alternativ som står till buds och välj en symbol med en styling som du tycker är lämplig.

  5. Om du är osäker, använd en rund Simple marker med vit kant och ljusgrön fyllning, med en Size3.00 och en Stroke width0.5.

Linjesymbol Lagertyper

För att se de olika alternativ som finns tillgängliga för raddata:

  1. Ändra Symbol layer type för roads-skiktets översta symbolskikt till Marker line:

    ../../../_images/change_to_marker_line.png
  2. Välj skiktet Enkel markör i symbolskiktsträdet. Ändra symbolens egenskaper så att de stämmer överens med denna dialog:

    ../../../_images/simple_marker_line_properties.png
  3. Välj skiktet Marker line och ändra intervallet till 1.00:

    ../../../_images/marker_line_interval.png
  4. Kontrollera att symbolnivåerna är korrekta (via dialogrutan :menuselection:`Avancerat –> Symbolnivåer som vi använde tidigare) innan du använder stilen.

När du har använt stilen kan du titta på resultatet på kartan. Som du kan se ändrar symbolerna riktning i takt med vägen, men de böjer sig inte alltid i takt med den. Detta är användbart för vissa ändamål, men inte för andra. Om du föredrar det kan du ändra tillbaka symbollagret i fråga till hur det var tidigare.

Typer av lager för polygonsymboler

För att se de olika alternativ som finns tillgängliga för polygondata:

  1. Ändra Symbol layer type för water-skiktet, som tidigare för de andra skikten.

  2. Undersök vad de olika alternativen på listan kan göra.

  3. Välj en av dem som du tycker är lämplig.

  4. Om du är osäker, använd Point pattern fill med följande alternativ:

    ../../../_images/pattern_fill_size.png
    ../../../_images/pattern_fill_distances.png
  5. Lägg till ett nytt symbollager med en normal Simple fill.

  6. Gör den i samma ljusblå färg med en mörkare blå kant.

  7. Flytta det under punktmönstersymbolskiktet med Move down-knappen:

    ../../../_images/simple_fill_move_down.png

Som ett resultat har du en texturerad symbol för vattenlagret, med den extra fördelen att du kan ändra storlek, form och avstånd för de enskilda prickarna som utgör texturen.

2.4.13. ★★★★ Följ med: Geometri generator symbologi

Du kan använda symbologin Geometry generator med alla lagertyper (punkter, linjer och polygoner). Den resulterande symbolen beror direkt på lagertypen.

I korthet innebär symbologin Geometry generator att du kan köra vissa rumsliga operationer inom själva symbologin. Du kan t.ex. köra en rumslig operation med verklig centroid på ett polygonlager utan att skapa ett punktlager.

Dessutom har du alla stylingalternativ för att ändra utseendet på den resulterande symbolen.

Låt oss ge det ett försök!

  1. Välj skiktet vatten.

  2. Klicka på Simple fill och ändra Symbol layer type till Geometry generator.

    ../../../_images/geometry_generator.png
  3. Innan vi börjar skriva den rumsliga frågan måste vi välja geometrityp i utdata. I det här exemplet kommer vi att skapa centroider för varje funktion, så ändra Geometry Type till Point / Multipoint.

  4. Låt oss nu skriva frågan i frågepanelen:

    centroid($geometry)
    
    ../../../_images/geometry_generator_query.png
  5. När du klickar på OK ser du att vatten-skiktet återges som ett punktskikt! Vi har just kört en rumslig operation inom själva skiktsymbologin, är det inte fantastiskt?

    ../../../_images/geometry_generator_result.png

Med Geometry Generator-symbologin kan du verkligen gå över gränsen för normal symbologi.

★★★★ Prova själv:

Geometri-generator är bara en annan symbolnivå. Försök att lägga till en annan Simple fill under den Geometry generator.

Ändra även utseendet på den enkla markören i symbologin Geometry generator.

Det slutliga resultatet bör se ut så här:

../../../_images/geometry_generator_preview.png

2.4.14. ★★★★ Följ med: Skapa en anpassad SVG-fyllning

Observera

För att göra den här övningen måste du ha det kostnadsfria vektorredigeringsprogrammet Inkscape installerat.

  1. Starta programmet Inkscape. Du kommer att se följande gränssnitt:

    ../../../_images/inkscape_default.png

    Du bör känna igen dig om du har använt andra program för redigering av vektorbilder, t.ex. Corel.

    Först ändrar vi canvas till en storlek som är lämplig för en liten textur.

  2. Klicka på menyalternativet File ► Document Properties. Detta ger dig dialogrutan Document Properties.

  3. Ändra Units till px.

  4. Ändra Width och Height till 100.

  5. Stäng dialogrutan när du är klar.

  6. Klicka på menyalternativet Visa ► Zooma ► Sida för att se den sida du arbetar med.

  7. Välj verktyget Circle:

    ../../../_images/inkscape_circle_tool.png
  8. Klicka och dra på sidan för att rita en ellips. För att få ellipsen att förvandlas till en cirkel, håll in Ctrl-knappen medan du ritar den.

  9. Högerklicka på cirkeln som du just skapade och öppna dess Fill and Stroke-alternativ. Du kan ändra dess rendering, till exempel:

    1. Ändra färgen på Fill till en något blek gråblå,

    2. Tilldela kanten en mörkare färg på fliken Stroke paint,

    3. Och minska kanttjockleken under fliken Stroke style.

    ../../../_images/inkscape_stroke_fill.png
  10. Rita en linje med hjälp av Pencil-verktyget:

    1. Klicka en gång för att starta linjen. Håll in Ctrl för att få den att snäppa i steg om 15 grader.

    2. Flytta pekaren horisontellt och placera en punkt med ett enkelt klick.

    3. Klicka och snäpp till linjens toppunkt och dra en vertikal linje, som avslutas med ett enkelt klick.

    4. Anslut nu de två ändpunkterna.

    5. Ändra färg och bredd på triangelsymbolen så att den matchar cirkelns streck och flytta runt den efter behov, så att du får en symbol som den här:

    ../../../_images/inkscape_final_symbol.png
  11. Om du är nöjd med den symbol du får, spara den som landuse_symbol i den katalog som kursen ligger i, under exercise_data/symbols, som SVG-fil.

Om QGIS

  1. Öppna Layer Properties för skiktet landuse.

  2. På fliken symbology Symbology ändrar du symbolstrukturen genom att ändra Symbol Layer Type till SVG Fill som visas nedan.

  3. Klicka på knappen och sedan på Select File… för att välja din SVG-bild.

    Den har lagts till i symbolträdet och du kan nu anpassa dess olika egenskaper (färger, vinkel, effekter, enheter …).

    ../../../_images/svg_symbol_settings.png

När du har validerat dialogrutan bör objekten i skiktet landuse nu täckas av en uppsättning symboler som visar en textur som den på följande karta. Om texturerna inte är synliga kan du behöva zooma in kartbilden eller ange en större Texture width i skiktets egenskaper.

../../../_images/svg_symbol_result.png

2.4.15. ★★☆ Följ med: Maskering

Med maskeringsfunktionen kan du maskera ett symbolskikt med ett annat symbolskikt eller en etikett.

I följande övning vill vi konfigurera rendering så att polygonetiketter maskerar den svarta delen av linjelagret.

  1. Ladda selective_masking.qgs från dataset i katalog exercise_data/masking.

  2. Öppna fönstret Layer Properties för skiktet polys.

    Under fliken labelingSingle Labels ser du att labelingSingle Single Labels redan har definierats.

  3. Från fliken Labels, välj labelmask Mask (och inte Masker i den allmänna kategorilistan)

  4. Aktivera etikettmask genom att markera alternativet |ej markerat| Enable mask

    Ett meddelande talar om att den nu definierade etikettmaskformen senare kan väljas som maskkälla för att maskera andra symbolskikt. Låt oss göra det.

  5. Klicka på OK

  6. Öppna fönstret Layer Properties för skiktet lines.

  7. Gå till fliken labelmask Masker

  8. Klicka på kryssrutan svart linje del av linjer från maskerade symbollager

    Ett meddelande varnar dig för att du måste välja både maskerings- och maskerade symbolskikt för att kunna spara maskeringskonfigurationen. Återigen, låt oss göra det.

  9. Klicka på kryssrutan polys Label mask`

    Meddelandet försvinner och du kan nu spara din konfiguration på ett säkert sätt.

    ../../../_images/mask_selection.png
  10. Klicka på OK

Du kan nu se att etiketterna maskerar den svarta delen av linjerna och bara lämnar den gula delen.

../../../_images/label_masking.png

2.4.16. ★★☆ Följ med: Maskering med hjälp av punktsymboler

Vi vill nu maskera den svarta delen av linjerna genom att endast använda svarta plan som representerar points-lagret (dvs. B52 och Jet punktkategorier). För synlighetens skull kan du stänga av synligheten för skiktet polys.

  1. Öppna fönstret Layer Properties för skiktet points.

    Under fliken symbology Symbology ser du att en categorizedSymbol Categorized-renderer har definierats med 3 olika symboler beroende på fältvärdet Class.

  2. Dubbelklicka på flygplansikonen B52, i kolumnen :guilabel:`Symbol

    ../../../_images/plane_symbology.png
  3. Klicka på knappen symbologyAdd Lägg till symbolskikt och välj Mask Symbolskiktstyp`

    En ny hierarki Mask (symbollager) > Marker (symbol) > Simple Marker (symbollager) visas under rotsymbolen Marker.

    ../../../_images/mask_hierarchy.png

    Låt oss nu definiera en mask som är identisk med vår planmarkör men lite större.

  4. Välj det nyskapade symbollagret Simple Marker och ändra dess :guilabel:Symbollagertyp till SVG-markör

  5. Ställ in SVG-filvägen så att den är densamma som den redan befintliga SVG-markören och storleken ska vara större (24 millimeter är ett ganska bra val för detta användningsfall).

    Maskfärg spelar ingen roll här, endast formen används vid maskering. Symbolskiktets ordning är också irrelevant i den situationen.

    Du borde få något liknande:

    ../../../_images/point_masking.png
  6. Upprepa samma åtgärder för symbolen Jet.

  7. Klicka på OK

  8. Öppna fönstret Layer Properties för skiktet lines.

  9. Gå till fliken labelmask Masker.

    Den svarta linjen i kryssrutan för linjer från maskerade symbolskikt är redan markerad från vår tidigare konfiguration.

  10. Avmarkera kryssrutan Label mask polys och markera både B52 och Jet Mask symbol layer

  11. Klicka på OK

Du ser nu att de svarta planen maskerar den svarta delen av linjerna, så att endast den gula delen syns.

../../../_images/points_masking.png

2.4.17. Sammanfattningsvis

Genom att ändra symbologin för de olika lagren har en samling vektorfiler förvandlats till en läsbar karta. Du kan inte bara se vad som händer, den är till och med snygg att titta på!

2.4.18. Ytterligare läsning

exempel på vackra kartor <https://gis.stackexchange.com/questions/3083/seeking-examples-of-beautiful-maps>`_

2.4.19. Vad händer härnäst?

Att ändra symboler för hela lager är användbart, men informationen i varje lager är ännu inte tillgänglig för någon som läser dessa kartor. Vad kallas gatorna? Vilka administrativa regioner tillhör vissa områden? Vilka är gårdarnas relativa ytor? All denna information är fortfarande dold. I nästa lektion förklaras hur du kan representera dessa data på din karta.

Observera

Kom du ihåg att spara din karta nyligen?