Projicera eller ej i QGIS

Det finns en liten egenhet när det gäller hur data hanteras i QGIS som beror på om data är lagrat projicerat eller ej.

Hur du undviker problem, men framför allt blir medveten om företeelsen handlar detta inlägg.

Skärmbild från 2016-02-25 16-28-03

När data skapas så kan man välja i vilket koordinatsystem data skall lagras. Detta är för QGIS ett viktigare val än man kan tro.

I ArcGIS så brukar jag generellt välja oprojicerat WGS84 då allt verkar fungera ändå, men det kan finnas problem jag inte känner till.

I QGIS så behöver man tänka efter vad data skall användas till, så att man inte behöver spara om data projicerat när behovet uppstår.

Några exempel.

Buffert

Skärmbild från 2016-02-25 16-35-35

Linjen överst är lagrad i WGS84 och den undre i SWEEREF99TM. Projektet är i SWEREF99TM och jag har för båda lagren angivit buffertavståndet till ”200”.

I verktyget finns ingen inställning för enhet, så det är inte så svårt att inse att beräkningen görs utifrån lagrets koordinatsystem och då är 200 grader en ganska stor buffert (lila lagret).

Så länge man vet vilket system lagret är sparat i så borde det dock vara hanterbart, eftersom det går att räkna om 200 meter till grader ( 1 grad = 60 x 1852 m = 111120 > 200/11120 = 0,0018), men så enkelt är det inte.

Skärmbild från 2016-02-25 16-46-14

I bilden ovan är punkten till vänster i WGS84 med en buffert runt på 0,0018. Till höger är SWEREF99TM med 200 som buffert. Projektet är som tidigare i SWEREF99TM, men vad händer när jag ändrar till WGS84 i projektet?

Skärmbild från 2016-02-25 16-45-51

Bilden ovan beskriver effekterna av att visa data projicerat i WGS84.

När det gäller buffert så blir min absoluta rekommendation att alltid lagra data i ett projicerat system. Det är ju trots allt ganska sällan vi anger avstånd i grader…

Det finns motsvarande problem men några andra processverktyg men nu hoppar jag vidare till stilar.

Punktförskjutning

Skärmbild från 2016-02-25 16-55-31

I bilden ovan finns fem punkter i WGS84 till vänster och SWEREF99TM till höger. Projektet är i SWEREF99TM.

Det är ungefär 1000 meter mellan punkterna och om jag använder stilen ”Punktförskjutning” och ställer in 2000 ”kartenheter” som avstånd så verkar detta slå ihop båda lagren på rätt sätt.

Skärmbild från 2016-02-25 16-59-50

När man däremot provar 500 ”kartenheter” så borde ingen punktförskjutning ske men…

Skärmbild från 2016-02-25 17-02-03

Nåja, det kanske är samma sak här att det är lagrets enheter som gäller när man väljer ”kartenheter” men då finns det ju också ”milimeter” och ”pixlar” som enhet att välja på.

För lagret som är i SWEREF99TM så fungerar detta som förväntat, men för WGS84 så är det samma fel som tidigare. För det oprojicerade lagret så är tröskelvärdet alltid angivet i lagrets enheter! Det spelar ingen roll vad man väljer för enhet.

Linjebredd

Om jag använder två linjelager för att sätta stilar så reagerar dock QGIS lite annorlunda.

Skärmbild från 2016-02-25 17-09-21

Som tidigare är ett lager i WGS84 (det övre) och ett i SWEREF99TM (det undre). Projektet är i SWEREF99TM.

Här är linjerna stilsatta med en linje som är 10 ”kartenheter” bred. Det vill säga även linjen i WGS84 har denna inställning.

Nu ritas helt plötsligt linjerna ut exakt lika!

Min gissning är att stilmodulen i QGIS är helt separerad från geometimodulen och så länge man inte använder sig av geometriska mått när man utformar sina stilar så blir det inga konflikter.

För att testa så skapar jag två polygoner av samma storlek och sätter ett villkor på stilen som kopplas till polygonens yta.

Skärmbild från 2016-02-25 17-29-11

Mycket riktigt så kan jag separera ut stora och små ytor avseende kvadratmeter, men om jag skall göra samma sak med ytor lagrade i WGS84 (till vänster) så får jag räkna om ytan till den något tråkiga enheten ”kvadratgrader”.

Etiketterna ovan är skapade med variabeln $area.

Slutsatser

Om man använder QGIS för att rita former på en skärm eller utskrivet på papper så spelar det ingen större roll om man väljer data i projicerad eller oprojicerad form.

Skall man däremot göra beräkningar i ”normala” enheter, analyser kopplat till geometri eller avancerade stilsättningar som har med avstånd och yta att göra, då bör man nog se till att man har sina data lagrade i ett projicerat format.

Det finns möjlighet att exempelvis använda $area och alternativet area($geometry), där skillnaden har att göra med kombinationer av inställt koordinatsystem för lagret och inställda projektegenskaper. Någon direkt skillnad eller effekt av detta har dock inte jag stött på i just de här sammanhangen. Detta kan dock ha att göra med att det är en ny funktion och att jag inte riktigt kommit underfund med hur den är tänkt att fungera.

Advertisements

Taggar:,

Kommentera

Fyll i dina uppgifter nedan eller klicka på en ikon för att logga in:

WordPress.com Logo

Du kommenterar med ditt WordPress.com-konto. Logga ut / Ändra )

Twitter-bild

Du kommenterar med ditt Twitter-konto. Logga ut / Ändra )

Facebook-foto

Du kommenterar med ditt Facebook-konto. Logga ut / Ändra )

Google+ photo

Du kommenterar med ditt Google+-konto. Logga ut / Ändra )

Ansluter till %s

%d bloggare gillar detta: