Har du sett den snygga kartan över Mississippi floden i Washington Post?
Bilden ovan är ett litet utsnitt från kartan på WP webbsida.
Det är en mycket snygg karta som fått mycket uppmärksamhet och jag tänkte se om det går att komma i närheten i QGIS med lite virtuella lager…
Jag börjar med Lantmäteriets karta i skala 1:250’000 men det är inte kartan i sig som är det viktiga. Min stil kommer heller inte att följa den som finns i kartan ovan, men det beror nog mest på valet av bakgrundskarta.
Jag använder Göta Älv som exempel med bifloder och för detta så skapar jag en enkel linje som stilsätts med ”smooth” i en geometrigenerator. Lagret kommer inte att användas i stilsättningen, men jag kommer att använda en utjämnad geometri så om jag behöver redigera linjen så hjälper det att använda smooth även här.
Nästa steg blir att skapa en ”mask” som skall användas för att lyfta fram älvsträckningen. Detta görs med ett virtuellt lager.
Klicka på knappen för att lägga till ett virtuellt lager och i dialogen ”importerar” du linjelagret. Jag ger lagret ett ”lokalt namn” för att göra koden lite kortare och enklare att skriva.
Lagret som skall skapas bygger på ett SELECT uttryck som hämtar data från det här linjelagret (SELECT … FROM l).
Jag vill att hela ytan skall ha en fyllning där själva älvsträckningen lyser igenom. Detta görs med en ”box” med stor buffert kring hela linjelagret och sedan hämtas skillnaden mellan denna och en buffrad polygon runt älvlinjen. Eftersom det är flera linjer i mitt linjelager så slår jag samman alla buffertar med ST_UNION innan skillnaden skickas till QGIS med ST_DIFFERENCE.
Resultatet i QGIS är en polygon med ett ”hål” längs älvlinjen. Skulle det nu inte passa så kan jag enkelt redigera sträckningen med mitt linjelager, och även värden för buffertar kan redigeras i uttrycket för det virtuella lagret. Tänk på att det skall vara lager i projicerade koordinater om du vill ange buffert i meter…
Nu är det ”bara” att stilsätta med en gradientformfyllning med lämpliga inställningar, lägga till blandningslagereffekter, justera färger och värden på olika sätt tills man är nöjd. Kartan ovan är roterad bara för att det utnyttjar utrymmet här på bloggen lite bättre.
För att ta det ett steg till så kan jag även använda linjelagret för att välja ut ortsnamnspunkter från ett textlager med ett annat virtuellt lager.
Lägg till textlagret som vanligt och öppna sedan dialogen för virtuella lager.
Detta SQL uttryck är lite krångligare. Som tidigare importeras textpunkterna och ges ett nytt lokalt namn (t). Det jag sedan behöver är geometrier och textfält från detta lager och det hämtas med ett SELECT kommando. Då det är två olika tabeller som kommer att användas så behöver jag referera geometrier och text till det korrekta lagret (t.geometry, t.text).
Urvalet görs sedan i WHERE satsen. Först plockar jag ut alla punkter som har KKOD mellan 3 och 9 (större bebyggelse och städer), men det viktiga händer sedan med ST_INTERSECTS.
Om en punkt (t.geometry) överlappar en buffert av älvlinjen (ST_BUFFER(l.geometry, 2000)) så skall punkten inkluderas i lagret. Jag kan på detta sätt styra hur långt från älvsträckningen texter skall framträda oberoende av lagerstilen för älven tidigare.
Även här får man sedan justera inställningarna för lager en del så att det passar.
Virtuella lager är extremt användbart, men om det är stora datamängder så kan det bli lite långsamt. Kan man leva med att generera nya data så går det snabbare om man exporterar till ett permanent lager. Har man fått till det urval man vill ha med ett virtuellt lager så är detta inte svårare än att högerklicka och exportera. Endast utvalda punkter kommer då med i exporten.
Sedan är det bara att fortsätta skruva på inställningarna tills man är så pass nöjd att man inser att ”visst kan det bli bättre, men det kommer att ta väldigt mycket tid” och nöja sig med resultatet och gå vidare till nästa tidstjuv, nämligen layout…
En reflektion här. QGIS har blivit såååå mycket bättre på att skapa layouter i de senare versionerna. Texter och rubriker kan kontrolleras extremt bra och att kunna använda öppna online typsnitt är även det ett välkommet tillägg.