Hur gör man för att på ett enkelt sätt dela med sig av information i QGIS? Att välja ut och paketera data är förhållandevis enkelt, men om man dessutom vill ha med lagerstilar och lageregenskaper, hur gör man då?
I ESRI ArcGis så kan man skapa ”layer package” där data och lagerstilar är paketerade i en enda fil, som känns igen av ArcGis, så när man öppnar en sådan fil så packas data upp och läggs till i ArcGis med medföljande stilar tillämpade på dessa data.
Hur bär man sig åt för att göra motsvarande i QGIS?
Jag skapar några enkla vektorlager med lite stilar som exempel. Det spelar inte så stor roll vad det är, så länge jag kan göra lite experiment med det.
Förutsättningar
- Data och lagerstil skall gå att paketera i en enda fil.
- När man lägger till data så skall det gå att göra genom att referera till denna enda fil, allt annat skall göras automatiskt.
- Det är bra om ”export” är interaktiv så att man kan välja vilka data som skall paketeras (urval, synligt, motsv).
Så vad har vi för alternativ, och vad kan vi utesluta.
Lagerdefinitionsfiler
Dessa innehåller lagerinformation med lagerstilar etc, men bara referenser till data. Det går däremot att använda relativa sökvägar till dessa data, så lagerdefinitionsfiler skall vi inte utesluta ännu. De är däremot inte en solklar vinnare. Eventuella urval måste man göra innan man sparar.
Lagerdefinitionsfilerna är associerade med QGIS, men om jag försöker öppna dessa med QGIS (dubbelklicka på filen) så får jag meddelande om att formatet är ogiltigt. Detta är sannolikt en bugg, men det måste jag undersöka lite närmare innan jag kan rapportera det.
Att dra och släppa en qlr-fil i kartfönstret från exempelvis utforskaren, fungerar däremot utmärkt.
Zip-filer
QGIS kan läsa innehåll i zip-filer, exempelvis shape-filer. Däremot så känner QGIS inte av att det finns kopplade stilfiler i zip-filen, så eventuella ”qml” filer för varje lager kommer inte att tillämpas. Det går att baka in en lagerdefinitionsfil i zip-filen också, men denna kan inte öppnas i QGIS utan att filen först packas upp.
Zip-filer är troligen inte ett alternativ för att få till en enkel lösning.
Skall dock nämna att lagerdefinitionsfiler utanför zip-filen kan referera till data i zip-filen.
GeoPackage
Tidigare så hade jag problem att spara lagerstilar i GeoPackage databaser, men när jag provar nu (QGIS 2.18.3) så fungerar det utmärkt att spara lagerstilarna i databasen.
Med GeoPackage så har jag en fil där stilar ingår, så första kriteriet är uppnått. Jämfört med lagerdefinitionsfiler så är detta en fördel, men till skillnad från lagerdefinitionsfiler så behöver jag nu lägga till alla lager individuellt. Det finns heller ingen koppling, eller association med QGIS.
Jämfört med zip-filer så kan GeoPackage verka som det bättre alternativet, men då har jag inte provat rasterdata. För närvarande så upplever jag vissa problem med dessa och GeoPackage.
Andra alternativ?
Jag vet inte om det finns så många andra gångbara alternativ? Jovisst kan man använda andra filformat där det går att lagra flera lager i en fil och för enkla data så skulle kml/kmz vara ett alternativ, men det är inte speciellt praktiskt om man vill kunna fortsätta använda data utan att göra nya formatkonverteringar. Dessa filer har dessutom egna standarder för stilsättning som inte är av samma komplexitet som QGIS.
Slutsatser
Det verkar inte finnas något solklart alternativ för något som motsvarar Layer Package i ArcGis.
Det närmaste jag kan komma just nu är nog GeoPackage, om jag skall uppfylla så mycket av mina kriterier som möjligt.
Lösningen just nu verkar annars vara två filer, där den ena är en lagerdefinitionsfil. Den andra filen, som skall innehålla data kan vara antingen en zip-fil, eller en annan datafil som exempelvis GeoPackage. Detta får sedan föregås av export av lager eller urval så att man har data på ett och samma ställe (där man även skall spara lagerdefinitionsfilen).
Skall man var noga så är en Layer Package fil en komprimerad fil som består av en fil med lagerstilen (*.lyr) och en fildatabas (*.gdb) med data. Det är inte standard zip-format, men om man använder 7z så kan man packa upp lpk-filer enkelt.
Något motsvarande skulle kunna göras även i QGIS!
Om man packar lagerdefinitionsfilen (*.qlr) tillsammans med data (i valfritt format) och kallar filen *.qlrz, *.qlp, *.qlz eller något liknande så skulle QGIS automatiskt kunna söka efter en lagerdefinitionsfil i paketet och sedan associera stilarna till de data som finns i paketet.
Man skulle kanske göra ett plug-in för detta?
- Starta verktyget
- Välj lager som skall inkluderas
- Välj om allt/urval/synligt skall inkluderas från varje lager
- Kör verktyget
- Verktyget exporterar data och lagerdefinitionsfil till komprimerad fil på utpekad sökväg.
Mottagaren kan packa upp filen och använda utan tillägg, eller med plug-in där man ”öppna” paketfiler direkt.
Vad man egentligen vill ha är väl versionshantering av lager och data, exempelvis med GIT, ungefär som Eclipse och andra IDE:er hanterar det.
Ja, versionshantering vill en ha, även om den jobbar själv. Det är utmärkt sätt att prova något, och sedan gå tillbaka om det inte fungerar.
Det har dessutom fördelen att det går att ”push:a” och ”pull:a” förändringar mellan olika användare/versioner/projekt på ett kontrollerat sätt.