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 *

     Mastodon  

Senaste kommentarer

  • Sur om Varför är stiftpennor så långa?
  • QGIS 3.44 LTR – Geosupportsystem om Zorin på gammal laptop
  • Stefan Ene om Zorin på gammal laptop
  • Samira A om Om Mig
  • Klas Karlsson om QGIS 4 – vänta…

Arkiv

Meta

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