Hoppa till innehåll
Meny
  • Hem
  • Dokument
  • Om Mig
Geosupportsystem

Underlätta hanteringen av rasterlager i QGIS

Publicerat den 2020-01-272020-01-27

Skapa ett index och ett verktyg som automatiskt läser in lagret när du klickar på indexrutan. Låter det som en bra idé? Då skall du hänga med här, för det är exakt vad jag tänker gå igenom.

Jag har beskrivit stora delar av processen tidigare, så nu blir det lite mera komprimerat och bara delvis uppdaterat.

Jag använder Lantmäteriets öppna höjddata, men principen fungerar för alla typer av rasterdata, så länge alla data ligger i en och samma katalog.

Först skall indexlagret skapas. Detta görs enklast i terminalen med ett enda kommando från katalogen där filerna ligger (finns även som verktyg i QGIS ”Tile Index”).

gdaltindex -f GPKG nh2019.gpkg *.tif

Detta lager läser jag in i QGIS tillsammans med Lantmäteriets WMTS tjänst.

Kommandot tidigare som skapade indexlagret skapar även ett attribut med filnamnen för alla rasterfiler. Detta kan användas som en ”action” i QGIS av typen Python, som vid ett klick på en indexruta kör fyra rader pythonkod.

from qgis.utils import iface
layerpath = os.path.dirname( unicode( qgis.utils.iface.activeLayer().dataProvider().dataSourceUri() ) )
rasterurl = layerpath + "/[%location%]"
iface.addRasterLayer(rasterurl, "[%location%]" )

Sedan kan man (1) markera indexlagret, (2) aktivera verktyget och (3) klicka på en ruta.

Detta kommer automatiskt att läsa in lagret i kartan.

För att det skall fungera så måste man ha indexlagret valt, och när man lägger till ett lager så kommer det att bli det nya aktiva lagret. Det kanske går att undvika med någon inställning, men som det ser ut nu så kan man inte omedelbart klicka på en ny ruta, utan att först markera indexlagret igen.

Stilen för lagret, inklusive skriptet, kan lagras som standardstil i det geopackage som skapades för indexlagret. Så länge man distribuerar indexpaketet med alla filer så kan vem som helst med QGIS läsa in indexet och öppna filerna med verktyget. Det spelar ingen roll vilken sökväg man sparar alla filerna på, vilket gör det lämpligt för distribution tillsammans med rasterfilerna.

[Edit]

Efter lite förslag och egna funderingar är pythonskriptet nu något bättre, och passar något fler…

from qgis.utils import iface
layerpath = os.path.dirname( unicode( qgis.utils.iface.activeLayer().dataProvider().dataSourceUri() ) )
indexlayer = iface.activeLayer()
rasterurl = os.path.join(layerpath, "[%location%]") 
iface.addRasterLayer(rasterurl, "[%location%]")
iface.setActiveLayer(indexlayer)

”setActiveLayer” gör att det går att klicka på flera rutor efter varandra, utan att först markera indexlagret igen. Det sker automatiskt i skriptet. Dessutom så är skapandet av sökvägen till rasterfilen oberoende av operativsystem. Det bör nu bli rätt oavsett om man använder Windows, Mac eller Linux.

Lämna ett svar Avbryt svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *

Translate with Google

GBR In English
GER Auf Deutch
FRA En Français
ESP En Español
Swedish is a hard language for a machine to translate. Nuance and detail will likely be lost.
     Mastodon  

Bok om QGIS på Svenska

Bok

Beställ Boken/E-bok genom att klicka på bilden (även förhandsgranskning).

Senaste kommentarer

  • Daniel Nilsson om QField
  • denis Empisse om SpaceMouse Python
  • klakar om SpaceMouse Python
  • Anders Jackson om Återbesök, WebODM
  • Anders Jackson om SpaceMouse Python

Arkiv

Meta

  • Logga in
  • Flöde för inlägg
  • Flöde för kommentarer
  • WordPress.org
©2025 Geosupportsystem | WordPress-tema av Superbthemes.com