Det fullständiga namnet på detta plug-in är ”QGIS Map Styling GeoPackage Extension”. Det finns bland de ”experimentella” tilläggen om du vill prova själv. Med tillägget kan man paketera ett QGIS projekt med stilar, layouter och data i ett enda GeoPackage.
Tillägget så här långt är enbart för QGIS, men ambitionen är att även ArcGIS skall kunna paketera projekt i samma format. Då handlar det inte om samma stilsättning då dessa inte är kompatibla, utan en förenklad form av stilsättning baserad på exempelvis SLD. Det är GeoCat (länk) som arbetar med ArcGIS delarna och här berör jag enbart QGIS.
Väldigt enkelt sammanfattat så finns det en knapp för paketering av projektet, och en knapp för att öppna paketerade projekt. Svårare än så är det inte!
Jag tar ett enkelt projekt jag skapat tidigare, med några få vektorlager som inte bör innebära några problem, men det finns även en layout där det ingår en texturfil och diverse grafik, som jag inte vet om de kommer att följa med. Det är trots allt inte magi som ligger bakom insticksprogrammet.
Tillägget paketerar inte data, utan dessa förväntas finnas i det GeoPackage som skall distribueras. Allt man vill distribuera till mottagaren skall vara paketerat i detta GeoPackage, annars får man skicka med det vid sidan om. Det tillägget gör är att skriva projektfilen och andra QGIS resurser till GeoPackagefilen via de inbyggda ”extensions” som formatet stödjer. Just nu skriver tillägget endast ”QGIS Extension”, men det kan läsa även ”OWC Extension”, som är en extension som helt bygger på OGC standarder för att därmed vara 100% kompatibelt mellan olika GIS program. Vill du veta mer om OWC Extension så kan du kolla med GeoCat (länk tidigare i artikeln).
När jag säkerställt att alla data jag vill ha med finns i ett GeoPackage så klickar jag på knappen för att paketera projektet (till vänster i bilden nedan).
Detta skriver information om projektet till GeoPackage filen. Om jag använder ”ogrinfo” på filen så återfinns lite information om detta innehåll.
Här står det exempelvis att det krävs ett ”qgis_geopackage_extension” och det finns även lite varningar kring detta. Exakt vad detta innebär vet jag inte, men det handlar exempelvis om att projektet som är inbakat kan hänvisa till data som inte finns i databasen, vilket kan ställa till med problem.
Förutom data så finns projektfilen som ett ”lager” och övriga resurser som ett. Jag kan läsa dessa eller plocka ut dem med terminalkommandon.
ogrinfo ritning.gpkg qgis_projects | tee logg_projekt.txt ogrinfo ritning.gpkg qgis_resources | tee logg_resurs.txt
När man granskar innehållet i projektfilen så ser man att där finns två textsträngar. En för projektnamnet, med filändelse, och en för xml-innehållet i filen.
Riktigt intressant blir det när jag granskar resursfilen. I mitt fall finns det två ”resurser” i detta lager.
Först en referens till min texturfil med originalsökväg. Till denna finns det en beskrivning av MIME typ, vilket i samtliga mina fall är ”string”. Men mera intressant ett innehåll i formatet ”binary”. Jag har även en SVG logo i min layout, som också fått en rad i resurslagret med såväl namn, som en binärsträng.
Om jag startar om QGIS och startar ett nytt tomt projekt och använder import knappen (till höger i bilden tidigare) för att peka ut mitt GeoPackage så skall detta på något vis fungera?
Men det gör det inte riktigt…
För det första så har stilsättningen försvunnit, kvar är endast etiketter! Detta beror på att alla mina stilar är vita i det här projektet och bygger på att bakgrundsfärgen är en annan färg. Detta slår dock inte igenom i projektet förrän jag öppnar projektinställningarna och trycker ”verkställ”. Ingenting ändras i inställningarna. Detta luktar QGIS bugg.
Vare sig textur eller svg-logo lyckade programmet hitta i layouten. Det som sker när man ”packar upp” ett GeoPackage med tillägget är att projektfil och resurser hamnar i en temporär katalog. När jag öppnar denna temporära katalog så finns där endast qgisprojektet. Inga bilder.
När jag sedan försöker exportera projektet på nytt från ursprungsprojektet så stöter jag på nya problem. Det verkar som att det skrivs nya resursrader till tabellen i GeoPackage, utan att de gamla tas bort, och när jag importerar GeoPackage projektet så får jag felmeddelande på grund av att bilder inte hittas på angivna sökvägar.
Om jag raderar qgis-lagren från GeoPackage så kan jag exportera ut allt igen, men nu får jag felmeddelande om saknade filer direkt. När jag använder ogrinfo på paketet så hittas det inte några qgis resurser, men när projektet importeras så hittar qgis ”något” i alla fall.
Vid en snabb koll på felmeddelandet så verkar det smugit in sig en relativ sökväg på något sätt här. Detta ställer naturligtvis till det och det är inte alls konstigt att QGIS inte hittar bildfilen. Nu är mitt GeoPackage ganska stökigt… Om jag kopierar det till en ny fil med ogr2ogr kommandot så rensas QGIS delarna bort och detta ”städar” filen lite.
ogr2ogr -f "GPKG" ritning_ny.gpkg ritning.gpkg
Detta är bra att känna till om man vill rädda en fil som blivit korrupt. Ogr-kommandot är nämligen inte medvetet om qgis-extensions och kopierar endast lager som känns igen enligt GeoPackage standarden. Så länge extensions följer standard så fungerar det, men för en ”korrupt” fil så blir det städning.
Nu kanske jag valde ett projekt i utkanten av vad som är vanligt, och betydligt enklare projekt fungerar faktiskt riktigt bra med insticksprogrammet! Har man data i ett geopackage och inte har med en massa extra resurser som bilder och liknande så är detta ett väldigt smidigt sätt att flytta ett QGIS projekt från en plats till en annan.
Om GeoPackage kan bli ett format där exempelvis både ESRI och QGIS kan samsas med egna extensions för stilar i det egna programmet, men en gemensam standard för OWS stilar baserad på SLD så vore det ju fantastiskt. Då skulle åtminstone enklare stilsatta data kunna delas mellan en väldigt stor andel GIS användare runt om i världen. Andra system som GeoServer, som också läser SLD, skulle direkt kunna publisera denna typ av paket som OGC-tjänst. (OGC har även gått ut med en uppmaning att hjälpa till att få fram en standard för denna typ av tillägsinformation i GeoPackage.)
Man blir ju bara varm av att tänka på det.