Hexkarta med SQL

Oj vad jag har krånglat för att få detta att fungera. Vill du göra likadant och hänger med här så slipper du detta krångel, och kan skapa ganska häftiga kartor som resultat.

Det jag vill göra är att skapa en stiliserad karta baserad på det ”hex-grid” som enkelt kan genereras i QGIS. Det kanske finns andra sätt att göra detta på, men jag har inte hittat något som är enkelt.

För det första så behöver jag en karta med ett grundlager.

Skärmbild_2018-03-17_17-15-42.png

Jag väljer en världskarta som jag projicerar i en Miller projektion och sparar som ett nytt lager. Detta var källan till ett av alla bekymmer, nämligen att något av mina lager var i en annorlunda projektion.

Efter detta så vill jag generera mitt hex-lager med ”skapa rutnät”.

Skärmbild_2018-03-17_17-21-17.png

Här får man experimentera lite för att få en indelning som är lagom stor för det man vill åstadkomma och då är det bra att det går att skapa resultaten som tillfälliga lager.

Sedan är det dags för det som krånglade hur mycket som helst, tills jag sparade om mitt kartlager i samma projektion som jag använde när jag genererade rutnätet.

Skärmbild_2018-03-17_17-24-14.png

Jag trodde att det skulle gå att använda st_transform() när jag skapade ett virtuellt lager för att se till att båda lagren hade samma koordinatsystem vid jämförelsen mellan lagren, men se det räckte inte! Det underlättade ju inte heller att det här sättet att skapa nya data är riktigt långsamt, även om man använder en snabb dator. Speciellt med lite mer omfattande data.

Något annat jag kom på var att alltid ”Testa” de uttryck man skriver in. Jag får nämligen inte alltid felmeddelande om jag direkt kör ”Lägg till”, om något är fel. QGIS kör på, och i bästa fall händer ingenting. Annars så hänger sig programmet i någon form av beräkningsloop.

Hur som helst så väljer jag ut ”allt” från rutnätslagret med en select sats. Urvalet görs genom att kontrollera var centroiderna från rutnätet finns innanför kartlagrets polygoner.

Skärmbild_2018-03-17_17-30-46.png

Resultatet, när man är nöjd, sparas sedan som ett eget lager i ett GeoPackage. Det går på tok för långsamt att hantera dessa data i ett virtuellt lager. Lagret tillsammans med det ursprungliga rutnätet använder jag sedan för att skapa min karta.

Jag landar i slutändan i en simpel svart stil med en mycket lätt skugga. Jag har även använt ett nytt lager baserat på en liten negativ buffert, för att separera rutorna något.

world_hex

Jag har även passat på att använda den nya funktionen att ange ett högre dpi vid export som bild direkt ifrån kartfönstret. Bilden ovan är i 300 dpi, vilket främst märks om du klickar på den och visar i full storlek.

Det som också är lite häftigt är att de data som fanns i ursprungskartan har följt med till mina hex-polygoner, och dessa kan användas för att stilsätta kartan på flera olika sätt.

world_hex.png

I bilden ovan är det indelat efter ländernas namn. Hoppas ingen försöker navigera efter detta, eller tycker att jag ställt till med en diplomatisk katastrof.

skärm_befolkning.png

Det går att symbolsätta efter nationernas befolkning (ovan) eller efter GDP (nedan).

world_gdp.png

Naturligtvis så behöver du inte använda ”hex” format för de lager du skapar, men jag tycker att det blir ganska snyggt.

Annonser

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 )

Google+-foto

Du kommenterar med ditt Google+-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 )

Ansluter till %s

%d bloggare gillar detta: