För inte så länge sedan skrev jag om det näst intill perfekta geodataformatet GeoPackage, för vektordata och QGIS det vill säga.
Jag nämnde att rasterdata är bättre att hantera i andra format, men det är redan dags att ta omtag runt det påståendet.
Det är fortfarande så att man skall tänka efter lite hur man använder data. De metoder som jag visar här gör att exempelvis diskreta data som skall användas vidare i analyser fortfarande bör hanteras i andra format, men för exempelvis bakgrundskartor och satellitbilder är faktiskt GeoPackage fantastiskt bra.
Till skillnad från vektordata där det är mera naturligt att kunna redigera dessa, så gör de statiska egenskaperna i dessa data och att exempelvis ArcMap och ArcGIS Pro läser och visar raster i GeoPackage utan problem, att GeoPackage är ett fantastiskt generellt format för bakgrundskartor oavsett vilket GIS man använder.
Jag kommer här att skapa två typer av raster i GeoPackage, det ena är satellitbilder från Sentinel 2 och det andra är Lantmäteriets Sverigekarta (öppna data).

Det en scen med fyra 100km rutor som skall bearbetas, så det enklaste är att först lägga dessa i ett virtuellt rasterlager. Glöm inte att ta bort krysset i rutan ”placera varje lager i ett separat band”.
För den här typen av data så är faktiskt skapandet av ett GeoPackage riktigt enkel. Bara högerklicka på det virtuella lagret och välj att exportera till GPKG.

Det behöver inte finnas ett GeoPackage utan det går att skapa i detta steget. Tänk på att det är bra att ge lagret ett unikt namn. Det är många standardinställningar, men under ”Pyramider” så brukar jag välja att göra en del inställningar. För det första skall man välja att skapa pyramiderna ”Internt (om möjligt)”. Omsamplingsmetoden för dessa data spelar inte jättestor roll, men jag tycker ändå att det är snyggast med ett medelvärde. Det tar lite längre tid att skapa pyramiderna men det är en gång detta görs.
Vidare brukar jag välja JPEG här, men även justera kvalitétsinställningarna i textsträngen från 75 till något betydligt lägre. Även detta hjälper till att hålla ner storleken på paketet, men man får vara lite försiktig speciellt med andra typer av rasterdata.
Mina fyra JP2 filer är tillsammans 540 MB och mitt blixtrande snabba GeoPackage 90 MB. Så här hårt komprimerat så finns det naturligtvis spår av detta i bilden, men det är normalt sett inget man tänker på över huvud taget. Är du osäker så testa med ett mindre dataset och lite olika inställningar.
När vi kommer till Sverigekartan så är det en helt annan typ av rasterdata. Sentinell är trebands färgbilder, vilket passar direkt in i GeoPackage (standard är ”byte” RGB/RGBA), men Sverigekartan är ett raster med enkelband och en definierad färgpalett. Denna kan konverteras till RGB eller RGBA för att lagras korrekt i GeoPackage.

Jag har inte lyckats med det genom exporten som användes för Sentinell, så jag använder ”Översätt” som finns under menyn ”Raster/Konvertera”.
För att inte skriva över allt i ett befintligt GeoPackage så behöver man här använda några ”avancerade parametrar”. Lägg till:
APPEND_SUBDATASET YES RASTER_TABLE RasterlagretsNamn
Klicka på den gröna plusknappen två gånger och redigera de rader som läggs till. Detta är sådant som görs automatiskt i dialogen när man exporterar till GeoPackage med högerklick. Som standard så komprimeras de raster-tiles som genereras till 75%. Det kan skapa konstiga artefakter i kartan, och om man inte vill det så kan man ställa in att kvalitén skall vara 100% med ännu en avancerad parameter:
QUALITY 100
Det finns ännu flera parametrar som kan användas med GeoPackage, men det kan du läsa mera om på https://gdal.org/drivers/raster/gpkg.html.
För att göra om kartan till RGBA så måste man också lägga till en extra parameter, men det görs i textfältet längre ner:
-expand rgba
Ställ in ”Byte” som utdatatyp, då detta är det enda alternativ som stöds av GeoPackage som standard.
Markera sedan ett befintligt GeoPackage och kör processen.

Här kommer man att få en liten varning om att man håller på att skriva över en befintlig fil. Utan ”APPEND_SUBDATASET” så skulle allt skrivits över, men så länge man har angett den parametern så är det bara att klicka ”Ersätt” och köra på.
Jag fick lite felmeddelanden medan jag testade lite olika saker, men detta berodde nästan i varje fall på att jag försökte skapa ett lager som redan fanns. Kontrollera ditt GeoPackage så att där inte redan finns en raster_table som heter likadant som den du vill skapa.

Nu är detta ett relativt litet dataset så pyramider kanske inte är nödvändiga, men inte minst för att göra kartan lite ”snyggare” utzoomad som standard så gör jag det ändå. Pyramider byggs nämligen inte som standard när man använder gdal_translate.
Under ”Raster/Övrigt” hittar man ”Bygg översikt (pyramider)”.

Pyramidnivåerna styrs av en serie tal som är multipler av 2. Detta är de tal som ursprungsupplösningen skall delas med för att skapa lämplig rasterupplösning i flera skalor. Man kan också se på det som att om 1:1 upplösningen ger en skala på 1:100’000 så genererar inställningarna raster för skalorna 1:200’000, 1:400’000, 1:800’000 etc. I det här fallet är det fullständigt överdrivet att gå över 32 och standard upp till 16 räcker gott.
Här har vi även en viktig skillnad jämfört med exempelvis ArcMap, som bygger pyramider med ”Närmaste Granne”. I QGIS bör du välja ”Medel” för den här typen av kartor. Det blir så mycket snyggare. Om man sedan använder dessa data i ArcMap eller ArcGIS Pro så får man snygga pyramider på köpet.

Sverigekartan är ursprungligen runt 110 MB TIFF. När jag lägger till lagret i mitt GeoPackage så öker det från 90 till 166 MB, men då ingår pyramider och det strulade lite för mig så en ”städning” av paketet kan vara på sin plats.

Högerklicka på paketet i QGIS Browser och välj ”Komprimera databas (VACUUM)” för att rensa upp gamla tabeller och onödiga data. I mitt fall så minskade utrymmet bara en dryg megabyte, men det är ändå imponerande att jag kan få in allt detta i ett paket utan någon väldig visuell påverkan på resultatet, och samtidigt minska utrymmet som krävs till en fjärdedel…
Som jag nämnt tidigare så fungerar dessa rasterlager precis lika bra i ArcGIS som QGIS när man använder dessa som bakgrundsdata. Om man därför erbjuder kunder rasterdata i lite större omfattning, så skulle ett alternativ vara att (även) erbjuda dessa dataset som GeoPackage. Tänk på det. En fil, inbyggda pyramider, anpassad komprimering, stöds av flera GIS-program…
Nu har jag använt två typer av raster som exempel. GeoPackage stödjer faktiskt andra rastertyper också, men jag har valt att använda det som är standard, det vill säga 8-bitars flerbandsraster. Det går att använda enkelband för exempelvis höjddata, och det går att ha färgpaletter också, men det blir lite krångligare. Läs mer om möjligheterna med GeoPackage på https://gdal.org/drivers/raster/gpkg.html.