Publicerad den Lämna en kommentar

Kartböcker i QGIS 3

Något dold kanske, men en ack så användbar funktion i QGIS, när man skall skapa flera likadana kartor över flera platser eller objekt. Jag talar om ”kartböcker” eller i vissa sammanhang ”Atlas”.

I detta inlägg blir det en snabbintroduktion till hur du skapar dessa i QGIS och jag tittar närmare på ett praktiskt exempel.

Kartböcker är en funktion i layouthanteraren. Genom att använda sig av ett ”indexlager” så skapar funktionen en sida baserad på aktuell layout, för varje objekt i indexlagret.

Indexlagret kan vara vilken typ av vektorlager som helst och det allra enklaste är väl att ta ett lager med orter eller platsnamn och helt enkelt använda detta som indexlager i en kartbok, så det testar jag först.

Jag använder ett punktlager med kommunnamn (terrängkartan at) för detta och lantmäteriets WMTS tjänst som bakgrund. Lagret har 147 punkter, vilket nog är mer än vad man vill använda, men det skall nog fungera ändå.

Skärmklipp från 2018-08-25 12:46:00.png

Jag börjar med att skapa en superenkel layout med en karta och en titel. Sedan behöver jag definiera mitt indexlager, vilket görs i en kartbokspanel som aktiveras med knappen ”Atlas Settings” (Kartboksinställningar).

Skärmbild från 2018-08-25 12-48-22.png

Här kryssar man i att man vill generera en kartbok (Atlas) och väljer vilket indexlager som skall användas för detta. Om man inte vill att indexlagret skall synas så kan man kryssa i att det skall vara dolt.

Det finns sedan möjligheter att filtrera och sortera indexlagret om man vill det, men jag väljer att bara välja attributet ”text” som mitt bladnamn.

Om man vill exportera hela kartboken som en fil i exempelvis PDF så finns det ett alternativ för det (standard) och man kan även välja bildformat för export av kartboken som bilder. Om du vill exportera varje sida för sig som PDF, så tar du bort krysset och då kan du ange vilken metod som skall användas för att döpa varje fil.

Skärmklipp från 2018-08-25 12:54:29.png

Det som sedan återstår är att aktivera att kartramen i layouten skall kontrolleras av kartboken. Beroende på vilket typ av vektorlager indexlagret är så får man sedan lite olika alternativ för inställning av skalan på varje blad. För punktlager så är det endast fast skala som gäller.

Skärmklipp från 2018-08-25 12:57:54

För att titeln skall ändra namn mellan sidorna så använder man sig av den inbyggda variabeln @atlas_pagename.

Skärmbild från 2018-08-25 12-59-46.png

14Sedan är det bara att aktivera förhandsgranskningen av kartboken (knappen till vänster ovan) och välja eller bläddra mellan sidorna för att se att det ser bra ut. När man är klar så skriver man ut eller exporterar kartboken till fil.

Skärmklipp från 2018-08-25 13:03:56.png

Attribut i indexlagret kan användas till mycket mer i layouten. Det finns inbyggda funktioner för exempelvis sidnummer men det går även att hämta andra värden från tabellen och använda dessa i andra sammanhang i layouten där uttrycksbyggaren går att använda.

Du kan exempelvis ha en sökväg till en bild i ett attribut och använda denna sökväg för att placera en unik bild på varje sida.

Generera indexlager

Om du inte har ett lager som kan vara ett index, så är det inte så svårt att skapa ett just för den kartbok du vill ha. Vet du vilken skala du vill ha så behövs bara ett punktlager där du anger centrumpunkten för varje kartblad.

Vill du däremot skapa en kartbok över ett område eller längs en linjesträckning, så får du först generera ett indexlager med någon av de inbyggda funktionerna i QGIS.

Jag tänker skapa en kartbok längs ån Lagan och jag använder SMHI Nätverksbildande vattendrag från Geodataportalen för att välja ut detta vattendrag och skapa ett lager att utgå ifrån.

För att skapa mitt indexlager så behöver jag först veta hur stor utsträckning varje kartblad kommer att ha i meter. Det tar jag reda på i layouten som måste skapas först. Det går inte att ändra kartans storlek i layouten i efterhand, utan att det påverkar täckningen totalt, detaljer är dock inga problem att ändra, så länge kartelementets storlek förblir oförändrad. Om man vill ha exakt matchning mellan kartbladens utsträckning så väljer man exakt det antal meter som kartans utsträckning har i layouten, men om man vill ha lite överlapp så använder man ett lite mindre mått. Du använder kartelementets ”extent” för att enkelt räkna ut utsträckningen.

Skärmklipp från 2018-08-25 13:30:58.png

Det kan finnas andra sätt, men jag använder funktionen ”skapa rutnät” i QGIS för att generera ett indexlager. Utsträckningen begränsas av mitt vektorlager där enbart Lagan är med (välj att använda lagret för att generera utsträckningen) och jag skriver in vertikalt- och horisontellt intervall i dialogrutan.

Det räcker att skapa ett temporärt lager så länge, eftersom jag behöver redigera de genererade rutorna då jag inte behöver ha med rutor som inte täcker vattensträckningen.

Skärmklipp från 2018-08-25 13:37:44.png

Utgångsläget för genereringen av rutnätet med denna metod är i vektorlagrets utsträcknings övre vänstra hörn, men det är enkelt att redigera lagret, välja alla objekt och flytta dessa så att man får en lämplig sidindelning. Sedan är det bara att radera de rutor som man inte vill ha med och spara resultatet i ett GeoPackage som indexlager.

Vill man sedan använda lagret för att döpa eller sortera sidorna, ange sidnummer eller liknande, så får man redigera attributtabellen och lägga till fält för detta. Jag nöjer mig att skapa en sidnumrering från flödets början till dess slut.

Skärmklipp från 2018-08-25 14:00:55.png

Lite mer ”styling” av lager och skapande av två olika teman för mina två kartor i layouten, så blir det ungefär som i bilden ovan. Huvudkartan är kontrollerad av kartboken och indexkartan är det inte. Där har jag i stället valt att visa indexlagrets utsträckning med sidnummer och sedan markeras det aktuella bladet som en ”översikt”.

En och samma layout kan på detta sätt generera en stor mängd kartor baserat på ett enda indexlager.

Nyhet från Geosupportsystem , orginal inlägg

Publicerad den Lämna en kommentar

Georeferera i QGIS 3

Att georeferera är en process i ett GIS där man tar en kartbild som saknar en digital geografisk referens och skapar en sådan, så att kartbilden kan visas korrekt tillsammans med andra data i programmet.

Här hämtar jag en bild från Internet (public domain från wikipedia) som visar gamla stan i Stockholm.

Skärmklipp från 2018-08-25 09:12:17

Din bild kan vara i princip vad som helst, men ju mer referenspunkter från bilden du kan återfinna i ditt GIS, desto bättre.

Innan du börjar så skall du undersöka om det kommer att underlätta om du väljer en specifik kartprojektion för georefereringen. Ju mer ”formen” på kartobjekten i bilden överensstämmer med det som visas i QGIS, desto enklare blir refereringen. I det här fallet så är området så litet och ”plant” att SWEREF99TM duger gott.

Jag startar ett projekt med en lämplig bakgrundskarta och panorera till ett område som ungefär motsvarar bilden. Tänk på projektet måste (bör) vara i det koordinatsystem som skall användas för bilden.

Skärmklipp från 2018-08-25 09:28:44.png

För att referera bilden kan du behöva aktivera ”GDAL Georefererare” i pluginhanteraren. När du gjort det så har du ett nytt menyalternativ i rastermenyn. När du klickar på ”Georefererare…” så öppnas ett nytt fönster där du kan lägga till bilden. Välj här samma koordinatsystem som i projektet så blir det lite enklare att hålla koll på vad som händer.

Skärmklipp från 2018-08-25 10:29:22.png

Nu skall du markera överensstämmande punkter i bilden i georefereraren och i kartan i QGIS kartfönster. Detta gör du genom att lägga till punkter i bilden med ett klick, vilket öppnar en liten dialogruta där du antingen kan skriva in en koordinat, eller välja ”Från kartbladet”. Om du väljer ”Från kartbladet” så växlar programmet till kartan i QGIS där du kan leta reda på aktuell referenspunkt och klicka där. Du bekräftar med ”OK” i den lilla dialogrutan.

Både i georefereraren och i kartfönstret går det att zooma och panorera precis som vanligt för att mera noggrant markera samma punkter.

Ju fler punkter du kan hitta som överensstämmer och ju bättre spridning dessa har över bilden, desto bättre blir resultatet. Fler punkter innebär även att fler typer av bearbetningar blir tillgängliga.

Skärmklipp från 2018-08-25 10:37:37.png

När du har en bra uppsättning punkter kan du ändra transformationsinställningarna. Genom att välja olika transformationer så kommer du att få ett värde på uppskattat ”fel” som beräknas för varje punkt (dX, dY). Litet fel är bättre än stort, men mer avancerade transformationer förvränger också bilden mera. Här kan du få testa lite och tipset är att välja en så ”enkel” transformation som möjligt till att börja med.

När inställningarna är klara så kan du prova att köra georefereringen och lägga till resultatet i kartan. Detta går att göra genom att kryssa i en ruta i dialogen (bilden ovan) innan du klickar på OK och sedan kör processen.

Skärmklipp från 2018-08-25 10:44:53.png

Kontrollera resultatet, exempelvis genom att lägga lite transparens på bildlagret, eller växla synligheten genom att tända och släcka lagret.

Om något inte riktigt stämmer så tar du bara bort lagret, går tillbaka till georefereraren och justerar punkter eller lägger till flera. Du kan även prova att byta transformationstyp, sedan kör du processen igen.

Resultatet skrivs till en GeoTiff, men du kan spara lagret i vilket format du vill från QGIS när du är klar. Högerklicka på lagret i lagerlistan och välja ”Exportera” och ”Spara Som…”.

Raster i GeoPackage

Här kan du även välja att spara i exempelvis GeoPackage om du vill det.

Det går att lägga till lagret i ett befintligt GeoPackage, men det är lite krångligare. Du måste nämligen skapa två extra ”inställningar för skapande”, för att inte skriva över information som redan finns i paketet.

Skärmklipp från 2018-08-25 11:10:04.png

De parametrar som skall läggas till är:

APPEND_SUBDATASET   YES
RASTER_TABLE Lagernamn

Validera dina inställningar med knappen under listan. Tänk på att lagernamnet inte får innehålla mellanslag.

Detta gör att ett GeoPackage kan innehålla flera lager, som dessutom kan vara av helt olika typ. Om du har problem med exporten så beror det sannolikt på att din GeoTiff är ett raster i tre band. Välj bara att ”rendera bilden” i dialogen för export så kommer det att fungera (även transparens renderas till resultatet). Det går även att bygga pyramider i paketet, men det går att lägga till dessa i efterhand om det skulle behövas.

Det hade varit önskvärt att dessa två parametrar kunde finnas med som ett förval bland övriga profiler i dialogen för att underlätta hanteringen av raster i GeoPackage. Men det skall vi nog se till att fixa till kommande QGIS versioner.

Nyhet från Geosupportsystem , orginal inlägg

Publicerad den Lämna en kommentar

Nytt datum för Geodataseminariet

Vi har flyttat Geodataseminariet, som Lantmäteriet och Geodatarådet bjuder in till och som var planerat till den 29 november, nytt datum är torsdag den 31 januari på Norra Latin i Stockholm.

Anledningen är att vi inte vill ”krocka” med Smarta städer som genomförs den 28-29 november-2018.

Nyhet från geodata.se, orginal inlägg

Publicerad den Lämna en kommentar

Geodata.se – Nyhetsbrev nr 6 – 2018

 

Geodataseminariet 

Vi har flyttat Geodataseminariet, som Lantmäteriet och Geodatarådet bjuder in till och som var planerat till den 29 november, nytt datum är torsdag den 31 januari på Norra Latin i Stockholm.

Anledningen är att vi inte vill ”krocka” med Smarta städer som genomförs den 28-29 november-2018.

Lantmäteriet bjuder in till workshop för framtiden

Inbjudan riktar sig till dig i ledande befattning inom kommunal samhällsbyggnad som vill få inspiration, ökad kunskap och insikt i hur digitaliseringen gör processen snabbare, enklare och mer transparent.

Under dagen blandas teori med goda exempel, samtidigt som tid ges för nätverkande och reflektion. Allt för att du ska få stöd för att driva digitaliseringen i din kommun – oavsett var på resan ni befinner er. Läs mer och anmäl dig här.

Hög tid för öppna geodata från Lantmäteriet

Lantmäteriets Geodataråd lämnade den 27 juni skrivelsen Hög tid för öppna geodata från Lantmäteriet till Näringsdepartementet.Geodatarådet påtalade i en tidigare skrivelse i juni 2016 – att en ny finansieringsmodell för Lantmäteriets geodata bland annat leder till snabbare digitalisering och effektivisering av offentlig förvaltning, innovation, minskad negativ miljöpåverkan och bättre förutsättningar att rädda liv och egendom. Behovet av öppna geodata har sedan dess tydliggjorts ytterligare. För att uppmärksamma detta har en ny skrivelse gjorts. Läs mer här.

Nu finns friluftslivet som öppna data

Nu blir det lättare för besökare i Sveriges skyddade områden att se vilka leder och anordningar som finns just där. Informationen presenteras i Naturvårdsverkets och länsstyrelsernas kartverktyg och som öppna data som är fria att använd i egna applikationer av alla som vill visa informationen på kartor, webbplatser eller i appar. Länkar till data, tjänster och beskrivning av dessa finns i Miljödataportalen, ange ”friluftslivsdata” som sökord.

Nyhetsbrev från www.geodata.se

Vi firar att vi nu har över 1000 prenumeranter på nyhetsbrev från geodata.se. Här anmäler du dig själv som prenumerant för nyhetsbrevet eller om du vill avsluta din prenumeration.

Nyhet från geodata.se, orginal inlägg

Publicerad den Lämna en kommentar

PostGIS Server på Raspberry Pi

I detta inlägg bygger jag en PostGIS server med en Raspberry Pi. Jag har alla delar jag behöver liggande, men även om du inte har något alls av det som behövs, så går det att köpa nytt för runt 1’000 kr.

Du behöver:

  • Raspberry Pi (gärna en modell 3 B+)
  • SD kort (bör vara minst 8 Gb)
  • Strömförsörjning (Raspberry Pi kräver ganska höga ampere)
  • Chassi (valfritt)
  • USB hårddisk (en äldre USB 2.0 disk duger)

För konfiguration och liknande behövs även tangentbord och en skärm du kan koppla in på HDMI porten. Efter den inledande konfigurationen behöver du dock inte dessa då det går att göra all konfiguration via SSH och nätverket.

Operativsystem

Jag använder Raspbian Noobs Lite som går att hämta från https://www.raspberrypi.org. Detta är det enklaste sättet att komma igång, men om du vill så kan du ladda hem Raspbian separat och skapa ditt bootbara SD kort på annat sätt.

Den nedladdade zip-filen packas upp till SD kortet, som skall vara formaterat med Fat32.

Skärmbild från 2018-08-14 12-47-42.png

Så länge alla de uppackade filerna ligger direkt i ”rooten” på kortet så behöver du inte göra mer på datorn.

Koppla upp allt

rasp_koppoling

Du skall inte koppla in USB hårddisken riktigt ännu, men anslut nätverkskabel, tangentbord och skärm, därefter så ansluts strömförsörjning för att starta enheten. Om du vill kan du koppla in en mus också, men du klarar dig utan.

När datorn startar så kommer den ganska snabbt till en valruta där du kan välja vilket system som skall installeras på kortet. Om du som jag valt Lite versionen av Noobs så krävs nätverksanslutning, vilket du ändå kommer att behöva, men framför allt tillgång till Internet.

Välj Raspbian Lite och klicka ”install” eller tryck på ”i” på tangentbordet. Bekräfta valet och låt installationen ta sin lilla tid.

När allt är klart får du ett meddelande och när du klickar ok så startar systemet om.

Sätta upp nätverk och SSH

Börja med att logga in med användarnamnet ”pi” och lösenordet ”raspberry”.

Du skall nu omedelbart byta lösenord på användaren ”pi”, aktivera SSH och eventuellt göra lite andra inställningar. Detta startar du med kommandot.

sudo raspi-config

Välj först att ändra ”lokaliseringen” så att du säkert använder ett svenskt tangentbord (om du nu normalt gör det). Därefter byter du lösenord.

För att aktivera SSH väljer du ”Interfacing Options” och därefter ”SSH” och sedan ”Yes” för att aktivera tjänsten.

När detta är gjort kan du gå ur menynerna, tillbaka till prompten genom att trycka på Esc på tangentbordet. Nu behöver du bara ta reda på IP adressen också, vilket görs med kommandot

ifconfig

Nu behöver du egentligen inte skärmen eller tangentbordet längre, så det kan vara läge att stänga ner systemet och koppla om lite kablar. Kanske flytta på delarna till en lämplig plats också. Du skall även koppla in USB disken. För att vara säker så bör du dock ha kvar skärmen så du ser vad som händer ett litet tag till. Om det strular så går det ju alltid att logga in direkt på enheten med tangentbordet.

Du stänger av systemet med kommandot

init 0

När du är klar kan du åter starta datorn genom att återansluta strömmen. Låt det gå en liten stund så du kan vara säker på att den startat ordentligt.

Anslut via nätverket

Nu kan du ansluta via SSH från en annan dator.

Skärmbild från 2018-08-14 13-34-09.png

Använd kommandot

ssh pi@192.168.0.29

eller den IP adress som din Pi har.

Raspbian bygger på Debian, vilket även Ubuntu gör, så om du använder Ubuntu så kanske du känner igen en del vanliga kommandon för att exempelvis uppdatera systemet.

sudo apt update
sudo apt upgrade

Detta kan vara bra att köra lite då och då för att hålla servern uppdaterad.

Det går att sätta upp hela servern på SD kortet, men då det kan bli mycket data så skall vi börja med att konfigurera USB disken så att den blir lite enklare att använda för systemet.

Lagringsplats

Det behövs som sagt ingen märkvärdig hårddisk, inte minst då Raspberry Pi endast har USB 2.0. Det finns andra ”kloner” som har USB 3.0, men här kör jag med original.

Skapa en katalog i filsystemet där disken kan monteras. Jag skapar en katalog kallad ”geodata” direkt i rooten.

sudo mkdir /geodata
sudo chmod 775 /geodata

Den andra raden är till för att sätta behörigheter på katalogen så att alla användare kan komma åt den. Detta kan du eventuellt vänta med lite då vi ändå behöver göra om detta längre fram när vi monterat disken.

För att kontrollera om USB disken fungerar så kan du skriva in lsblk.

Skärmklipp från 2018-08-14 13:52:12.png

I mitt fall så ser jag att det är enheten sda med partitionen sda1 jag är ute efter.

Du kan nu montera disken i den skapade katalogen med kommandot

sudo mount /dev/sdb1 /geodata

Men om du vill att monteringen skall göras varje gång systemet startar så kan du i stället redigera filen fstab. Då behöver du veta lite mer om disken, vilket du kan göra med kommandot sudo blkid.

Skärmklipp från 2018-08-14 14:25:31.png

Någonstans i resultatet finns information om partitionen du skall montera (i mitt fall sista raden). Här kommer jag att få ett problem då det är en disk formaterad med NTFS. Det går att få det att fungera, men det kan vara riktigt struligt. Nej, det bästa är att göra om hela disken till en Ext4 partition, vilket totalt raderar hela disken!!!

sudo fdisk /dev/sda

Rensa partitioner med ”d” och skapa en ny med ”n”. Sedan är det bara att bekräfta förvalen och godkänna att NTFS märkningen tas bort så småningom. Inget har ännu ändrats och du kan titta på den tänkta partitionsinformationen med ”p”.

Skärmklipp från 2018-08-14 15:58:51

Om det ser ok ut (ungefär som bilden ovan) så skriver du informationen till partitionstabellen på disken med ”w”, vilket som sagt raderar allt som tidigare fanns på den.

Du kan behöva ta bort disken och ansluta den igen för att den nya informationen skall läsas in i systemet, men det är inte säkert. Du måste dock formatera den nya disken med Ext4.

sudo mkfs.ext4 /dev/sda1

sedan kan du åter kontrollera med sudo blkid vilket UUID du har på partitionen.

Skärmklipp från 2018-08-14 16:08:09.png

Sedan kan du skapa en permanent montering i fstab.

sudo nano /etc/fstab

Här lägger du till en rad med innehåll anpassat efter vilken typ av USB disk du har (se raden som inleds med ”UUID” i bilden nedan).

Skärmklipp från 2018-08-14 16:10:21.pngSpara ändringen (ctrl + o) och avsluta (ctrl + x). Testa så att det fungerade med kommandot

sudo mount -a

Om du vill vara säker så kan du starta om systemet (reboot).

Dags för lite databas.

Installera PostGIS

Det går att installera den senaste versionen av PostGIS om man vill det, men för enkelhets skull så väljer jag den version som redan finns i biblioteken för Raspbian.

sudo apt install postgis

Som vanligt är det en hel del inställningar som behöver göras innan det går att använda PostGIS på ”servern”.

Först skall vi sätta ett lösenord på användaren postgres och ge användaren fulla rättigheter och äganderätt till katalogen /geodata.

sudo passwd postgres
sudo chown postgres /geodata
sudo chgrp postgres /geodata

Sedan skall du byta lösenord på användaren inne i psql och skapa en ny databas på USB disken.

sudo -u postgres psql
postgres=# \password postgres
postgres=# create tablespace ts location '/geodata';
postgres=# create database geodata with tablespace = ts;
postgres=# \q

För att testa att databasen nu finns kan du prova att lista innehållet i /geodata.

sudo ls /geodata

Då bör du se en ”PG…” katalog där. Notera att du som användaren ”pi” inte har rätt att lista innehållet, därav ”sudo”.

Nu skall databasen konfigureras för PostGIS. Vilket också görs ifrån psql med ett annat kommando.

sudo -u postgres psql -d geodata
geodata=# create extension postgis;
geodata=# select PostGIS_version();

Den sista raden bör svara med installerad PostGIS version, om allt fungerat. Du kan nu gå tillbaka till den vanliga prompten med \q.

Nu måste en del inställningar ändras i konfigurationsfilerna.

Till att börja med redigeras /etc/postgresql/9.6/main/postgresql.conf med nano.

Här skall ett antal rader redigeras så att de stämmer med det som listas nedan. Jag har inte med alla rader som finns i filen, utan bara de som behöver redigeras så du kan få leta lite. Egentligen är det nog bara den första som behöver ändras, resten är bara till för att optimera prestanda lite på en Raspberry Pi med 1 Gb Ram.

listen_addresses = '*'   # what IP address(es) to listen on;
shared_buffers = 512MB # min 128kB
work_mem = 16MB # min 64kB
maintenance_work_mem = 128MB # min 1MB
random_page_cost = 2.0 # same scale as above

Spara (ctrl + O) och avsluta (ctrl + X), öppna därefter filen pg_hba.conf som finns på samma sökväg. I denna måste du lägga till en adressrymd som får komma åt databasen. Lägg till ungefär nedanstående rad (beroende på din IP adress, notera att det skall sluta på siffran 1) under raden # IPv4 local connections:

host all all 192.168.0.1/24 md5

Starta slutligen om tjänsten.

sudo service postgresql restart

sedan skall du kunna ansluta till servern från PgAdmin på en klient. Där kan du exempelvis hantera användare och liknande. Eller varför inte ansluta direkt från QGIS.

Anslut med QGIS

I QGIS högerklickar du bland datakällor på PostGIS och väljer att skapa en ny anslutning.

Skärmbild från 2018-08-14 17-18-14.png

Testa anslutningen och sedan är det bara att köra på.

Via databashanteraren kan du skapa nya ”scheman” och ladda dessa med geodata.

Skärmklipp från 2018-08-14 17:20:41.png

Avslutning

Stäng nu ner systemet och placera det på en säker plats och starta en ”sista” gång. Nu har du en väldigt energisnål PostGIS databas på ditt nätverk som i och för sig inte är ett prestandamonster, men oj vad ”snål” den är. Speciellt om du redan har en hårddisk, och kanske även en Raspberry Pi liggande.

Det går att lägga till finesser i PostGIS, som topologi- och rasterstöd, men det har jag hoppat över här. Dels för att datorn är lite underdimensionerad för väldigt stora datamängder och därför nog passar bäst för experiment, och lite mindre dataset. Varför inte ladda ner Lantmäteriets terrängkarta och ladda in dessa lager? Det går ju även att spara QGIS stilar i PostGIS så då kan man snabbt få en väldigt bra grundkarta från alla datorer i ett mindre nätverk.

Raspberry Pi är absolut ingen lösning för kontoret eller företaget. Men för skolan i GIS utbildningen kan det vara en trevlig laboration för att dels titta på databasservrar och dels hantera serveroperativsystem i Linux. Om man sedan vill utveckla systemet så kan man även installera QGIS Server och en webbserver på systemet och få en komplett kartplattform med lite Open Layers eller Leaflet javascript, men då börjar vi nog närma oss vad som är rimligt att förvänta att en dator för runt 350 kronor skall klara av…

Nyhet från Geosupportsystem , orginal inlägg

Publicerad den Lämna en kommentar

3D karta på riktigt

Jag har ett tag haft alla förutsättningar att skapa en fysisk 3D karta men inte tagit mig tiden att testa. Men nu är det dags!

Det enkla om du vill testa själv är mjukvara och data, det som är lite värre är kanske att få tillgång till en CNC maskin som kan göra jobbet. Jag vet inte hur vanliga de är i Sverige, men jag kommer att använda mig av en X-Carve från Inventables, men om du har tillgång till en annan typ av maskin så kan du säkert anpassa metoden för den maskinen också.

Jag börjar med höjddata från Lantmäteriet och väljer ett lagom stort område runt Eksjö som skulle kunna vara intressant att se i 3D.

Skärmbild från 2018-08-08 14-50-02.png

Området jag börjar med har en höjdskillnad på runt 75 meter, vilket jag tänkte använda för att räkna fram ett lämpligt intervall för mina höjdkurvor, som dels tar med intressanta höjdpartier, men även har tillräckligt mellanrum så att det inte blir enormt många nivåer. Jag vill nämligen ha lite trappstegseffekt, men om du inte vill det så kan du välja andra intervaller.

Det visar sig vara lite krångligt att skapa de polygoner jag är ute efter från höjdkurvor i QGIS, så jag kommer att ta en ”omväg” via Inkscape innan jag går vidare till CNC programmet i stället. Vilket innebär att jag inte behöver skapa några höjdkurvor i det här fallet.

Förutsättningen med CNC maskinen är att mörkare färg skall fräsas ut djupare än ljusa färger, så jag kommer att skapa en karta i gråskala med svart som lägsta nivå och vitt som högsta.

Höjdlagret i gråskala, lätt anpassad så att jag har utrymme för framför allt helt svarta färger i tilläggssymboler och text. Ovanpå rasterlagret ett vektorlager med sjöar och vattendrag som presenteras helt i svart, vilket därmed kommer att bli de lägsta partierna i det färdiga resultatet.

Skärmklipp från 2018-08-08 15:37:43.png

Utsträckningen i i QGIS exporterar jag till JPG i 300 dpi direkt från projektmenyn.

För att få in ”bilden” i CNC programmet så måste jag först göra om den till vektordata i SVG format. Det går inte att spara som SVG från QGIS, då detta bäddar in rasterinformationen. I stället blir det till att vektorisera bilden i Inkscape.

Skärmbild från 2018-08-08 16-02-39.png

Öppna bara rasterbilden i Inkscape, markera den (viktigt) och välj sedan ”Kalkera bitmapbild” från menyn ”Slinga” (shift+alt+B).

Välj ”Grays” och ett lämpligt antal nivåer, jag låter det vara på 8 ”scans”. Genom att klicka på ”Update” så får man en förhandsgranskning av resultatet, vilket gör att det går att justera inställningarna något tills man är nöjd. Det finns exempelvis en flik för att ta bort mindre fläckar och jämna ut hörn.

Nu kan man även passa på att ”städa” lite bland formerna. En hel del går sannolikt inte att reproducera i CNC maskinen då det är för krångligt eller smått. Lite artistiska friheter får man ta sig. Resultatet sparas sedan som en vanlig SVG-fil.

Jag får passa på att trycka på att du bör försöka förenkla så mycket som möjligt. Bearbetningen i maskinen kommer att ta väldigt lång tid ändå. Om du dessutom skall betala någon för maskintid, så bör det vara så simpelt som möjligt.

Jag använder ett webbaserat program för X-Carve som heter ”Easel”. Du kan själv använda programmet genom att registrera dig hos Inventables, även om du inte har en X-Carve. Känner du sedan någon med en X-Carve så kan du fråga om du får ”logga in” med ditt login och köra ditt projekt.

SVG filen importeras och sedan justerar jag inställningarna för färgerna något, samt lägger till en text som jag också vill ha med.

Skärmklipp från 2018-08-08 16:46:51.png

Det går direkt att förhandsgranska resultatet i webbläsaren så att inga konstigheter uppstår när man sedan kör på riktigt. När jag kör simuleringen så visar det sig att det kommer att ta totalt sett runt 90 minuter plus beräkningar och hantering, suck…

Men det är bara att köra igång. Det är i alla fall svalare nere i källaren…

IMG_20180808_184219.jpg

I bilden ovan är jag halvvägs och det är dags att byta verktyg. Om jag gör det igen, så väljer jag nog ett annat stål för såväl grov- som finkörningen. Kanske ”nedåtrotation” på stålet i stället, men nu är vi inne på snickerifinesser. Åter till ”kartan”.

IMG_20180808_214446

Det blev ganska bra efter lite efterarbete med fransade kanter, men för att ytterligare förstärka konturerna sprayar jag med svart och därefter sandpappras toppar och plana ytor så att det trävita åter framträder. Avslutningsvis bättringsmålar jag sjöar och text något.

Jag är inte supernoggrann här då jag verkligen vill ha lite ”ruffare” utseende. Det kanske inte blev helt perfekt och som jag tänkt mig, men det är bra nära. Riktigt coolt, om jag får säga det själv.

Nyhet från Geosupportsystem , orginal inlägg

Publicerad den Lämna en kommentar

Regeringsuppdrag till Lantmäteriet inom Digitalt först-området

Regeringen har beslutat om två regeringsuppdrag som ska öka standardiseringen av så kallad grunddata samt göra informationsutbytet i offentlig sektor säkrare och mer effektivt. Uppdragen ska på sikt leda till att uppgifter om exempelvis folkbokföring, företag och fastigheter bara behöver lämnas en gång och att det blir enklare för offentliga och privata aktörer att utbyta information.

I regeringsuppdraget om säker och effektiv tillgång till grunddata ska Bolagsverket, Lantmäteriet och Skatteverket lämna förslag som ska göra tillgången till så kallad grunddata mer säker och effektiv, bl.a. genom att tydliggöra ansvaret och öka standardiseringen. Grunddata är till exempel uppgifter i folkbokföringsregistret, näringslivsregistret och fastighetsregistret. Läs mer på regeringens hemsida.

Nyhet från geodata.se, orginal inlägg

Publicerad den Lämna en kommentar

Hur strukturerad är din stad

Via Twitter hittade jag en intressant artikel där Geoff Boeing skapade diagram över städers vägars orientering mot norr (länk).

Skärmklipp från 2018-07-13 11:16:53.png

Väldigt häftigt, och till del en indikation på exempelvis när staden grundades. I detta inlägg testar jag om det går att återskapa dessa diagram, eller liknande, i QGIS.

Geoff använder sig av kombinationer av Python och OSMnx. OSMnx är ett pythonbibliotek för att ladda ner, bearbeta och visualisera OSM data. Detta får jag titta närmare på en annan gång. Nu kastar jag mig direkt över QGIS.

Steg ett blir att isolera vägnätet för den stad man är intresserad av. Det spelar ingen roll vilka data du använder, så länge det är linjegeometrier.

Skärmklipp från 2018-07-13 11:36:10.png

Jag testar med Eksjö och väljer vägar från open street map, men väljer bort cykel- och gångvägar. Hur du definierar vägnätets utsträckning är upp till dig. Jag gör ett godtyckligt urval baserat på sammanhängande bebyggelse.

Nästa steg varierar på vilken metod du väljer. Du kan ”explodera” linjerna i enskilda segment och beräkna riktning och längd för dessa och få fram statistik på det sättet, eller använda ett plugin.

Skärmbild från 2018-07-13 12-02-54

Med ”Line direction histogram” är det bara att peka på linjelagret och göra lite inställningar och köra…

Skärmbild från 2018-07-13 12-15-48

Det går att välja lite alternativa presentationsmetoder, beroende på vad man är ute efter. Jag väljer exempelvis att låta sektorernas area representera förekomsten av vägar i en specifik riktning och inte längden från centrum. Detta gör ”korta” segment lite längre och diagrammet lite ”rundare”.

Det går även att få ett medel för riktningen markerad, vilket inte nödvändigtvis behöver sammanfalla med den riktning som är längst.

Det går att exportera resultatet som pdf och svg (eller urklipp). Då kan man bearbeta resultatet vidare i exempelvis Inkscape om man skulle vilja det.

Skärmklipp från 2018-07-13 12:28:43.png

Om man vill kan man sedan jämföra olika städer på samma sätt som i artikeln jag hänvisade till tidigare.

Om man använder detta plugin behöver man inte ens klippa ut de data som behövs, gör bara ett grundurval om vilka vägtyper som skall ingå och sedan är det bara att markera de vägar som skall användas och köra pluginprogrammet. Du behöver inte ens stänga panelen mellan städerna, bara markera, kör med samma inställningar för varje stad, exportera till SVG och börja om.

städer.png

Efter att ha testat ett antal städer så är det inte utan att man blir lite fundersam kring metoden som ligger bakom. Varför är vägorienteringen i alla städer öst-västlig?

Visst är det skillnad mellan städerna, men jag trodde nog att det borde vara en större skillnad, och framför allt olika orientering i snitt.

Nu kan det ju vara så att ju jämnare distribution det är, desto vanligare är det ju att ett medel hamnar runt 90 grader… Medel av 0 och 180 är ju trots allt just 90.

Jag har inte tid att sätta mig in i orsakerna, men det kanske finns någon GIS-studerande där ute som är intresserad av ett ämne för en uppsats?

Nyhet från Geosupportsystem , orginal inlägg

Publicerad den Lämna en kommentar

Berg från sagorna

Den som läst Tolkien kan väl inte ha undvikit att se hur bergskedjor avbildas på de kartor som finns i böckerna. Ja du har säkert sett dessa även om du inte läst böckerna.

I detta inlägg tänkte jag kika på hur man kan använda QGIS för att återskapa denna stil. Det blir många steg, men inget fusk, allt är gjort i QGIS (förutom symbolerna).

Jag börjar med ett höjddataset i rasterformat. Beroende på data så får man anpassa detta steg något, men jag är främst intresserad av att hitta ett lagom gränsvärde jag kan använda för att klassa ett område som ”berg” eller ej. Jag vet att det inte är så enkelt, men nu är det en fantasyinspirerad karta det är frågan om.

Skärmklipp från 2018-07-08 19:36:55.png

När jag hittat mitt gränsvärde genom att testa lite diskreta färgskalor och variera värdet, så använder jag verktyget för att skapa höjdkurvor. Då jag bara vill ha en enda kurva så sätter jag ett väldigt högt intervallvärde och ett offsetvärde som motsvarar mitt gränsvärde (se bilden ovan). Detta kommer att skapa en höjdkurva på just denna höjd.

Detta bildspel kräver JavaScript.

Nästa steg är att skapa polygoner från linjerna (lines to polygons) och sedan väljer jag att förenkla geometrierna något och jämna ut dem. Det senare är inte nödvändigt, men det ser snyggt ut. Jag behöver inte bry mig om alla små polygoner, de kommer att ignoreras senare.

För att placera ut mina berg så behöver jag förankra dessa någonstans. Jag väljer att först skapa slumpmässiga punkter i polygonerna. Det hade inte fungerat lika bra att använda en geometrigenerator för polygonen då slumpmässiga punkter inte kan hanteras lika kontrollerat som jag önskar.

Skärmklipp från 2018-07-08 19:56:01

Det finns ett verktyg för detta som heter ”random points inside polygons”. Här kan jag sätta ett minsta avstånd punkterna får ha, men även hur många punkter som skall slumpas ut i varje polygon. Antalet räknar jag fram med ett uttryck baserat på polygonens storlek. Alla mått måste anpassas till situationen och i mitt fall så väljer jag minsta avstånd 500 meter och ett värde för antal som motsvarar två punkter per kvadratkilometer.

Skärmklipp från 2018-07-08 19:57:04

Storleken på mina svg-symboler sätter jag till att börja med till 500 kartenheter, så jag har något att börja med.

När det gäller svg-symbolerna så hittar jag en samling bilder i Tolkienstil som skapats av Tiffany Munro.

Skärmklipp från 2018-07-08 20:04:16

Denna bild använder jag i Inkscape för att vektorisera ett antal jag tror kan passa för min stil.

Jag döper varje svg-berg till m1.svg, där jag räknar upp siffran för varje fil.

Sökvägen till svgsymbolen styr jag sedan med ett uttryck.

'/home/klakar/Bilder/mountain/m'||rand(0,9)||'.svg'

Det blir sedan i övrigt ganska många uttryck i datadefinierade åsidosättningar.

Skärmklipp från 2018-07-08 20:58:51.png

Mina symbolstorlekar anpassar jag för att få lite variation i storlekarna med ett uttryck.

rand(400, 1000)

Färgerna behöver man bara sätta på det här sättet om det går att byta färg på symbolerna. Det går inte att sätta färgerna manuellt när QGIS inte vet exakt vilken symbol som skall användas. Jag sätter även en tunn vit kantlinje på symbolerna för att separera dem lite där de överlappar.

Skärmbild från 2018-07-08 21-13-22

När det gäller överlapp så är det ett annat problem, nämligen att en del symboler som borde ligga bakom andra, inte gör det då utritningen sker ganska slumpmässigt. Som tur är kan jag styra utritningsordningen och eftersom det som ligger långt bort, även ligger längre norrut, så kan jag styra utritningsorgningen baserat på Y-koordinaten för punkten. Detta är inte helt felfritt då symbolerna inte är exakt lika höga, men en ankringspunkt i botten av symbolerna hjälper något.

Skärmklipp från 2018-07-08 20:35:55

Ja, det var det hela. Det blir ganska bra om jag får säga det själv. Och förutom själva symbolerna så är precis allt skapat internt i QGIS, och då har jag inte ens börjat använda effekter och blandningslager.

Skärmklipp från 2018-07-08 22:04:56.png

Nu är det bara att fortsätta lägga till lager av lämplig typ, och vara beredd på att alla kompromisser och förenklingar påverkar sådant man lägger till, så det är inte osannolikt att man får göra fler justeringar på vägen. Med lite tålamod så kan man dock komma riktigt långt. Sedan kan man ju alltid ta till blandningslager med texturer och realtidseffekter också för att ytterligare förstärka intrycket man är ute efter.

Skärmklipp från 2018-07-08 22:12:05.png

Nyhet från Geosupportsystem , orginal inlägg