Detta blir inte en fullständig undersökning, utan en ganska ytlig granskning av några vanliga format och deras karaktär, egenskaper och prestanda.
Till att börja med så har jag inte tagit med alla tänkbara format, eller alla tänkbara förutsättningar.
Jag har heller inte med ”riktiga” databaser som exempelvis PostGIS eller SQL. Alla format är filbaserade på ett eller annat sätt.
Jag har tagit Lantmäteriets Sverige karta och valt ut markytor, väglinjer och textpunkter att använda i testerna.
Tabellen ovan kräver nog lite förklaringar. Exempelvis när det gäller filformaten. SQLite och Spatialite har i tabellen samma filändelse. Förklaringen är att SpatiaLite bygger på SQLite, och det finns ingen ”fastställd” filändelse för dessa. Även GeoPackage bygger på SQLite, men är ett tydligare definierat format från OGC.
En annan sak som kan behöva förklaras är att flera av formaten kan hantera flera geometrier i samma fil, men det har jag inte prövat här.
Det som förvånade mig mest var att shapeformatet inte blev större…
Varken KML eller GeoJSON är speciellt lämpliga när man hanterar lite fler objekt, som är fallet här. Detta blir också ganska tydligt i tabellen då dessa blir betydligt mycket större. SpatiaLite är också väldigt stor, men det beror på att det formatet bakar in betydligt mycket mer databasfunktionalitet i formatet än exempelivs GeoPackage.
Lite laddningstider.
Här kan jag behöva förtydliga att jag hanterat formaten i QGIS, vilket kan påverka hur formaten hanteras. Exempelvis så har det inte sparats någon koordinatsystem information i vare sig SpatiaLite eller SQLite, vilket gör att dessa tider är räknade från det att det sista lagret definierats. Om tider för definition skall räknas in så tar dessa båda format längst tid av alla.
Även här är GeoJSON och KML långsammast i övrigt, vilket ytterligare visar på olämpligheten att använda dessa format för lager med lite mer data.
Fram till nu så ser det ut som att Shape och GeoPackage är likvärdiga. Shape tar lite mindre plats, medan GeoPackage gick lite snabbare (delar av sekund). Så den enda skillnaden så här långt verkar vara att GeoPackage är en fil och inte flera som är fallet med Shape.
För att prova ett fall till så tar jag en fil i txt format med jordens alla städer och geografiska namn, som jag läser in i QGIS och sparar om till Shape och GeoPackage. Om teorin stämmer så kommer nu Shape formatet att få kasta in handduken…
Lagret består av 10’354’179 punkter och en rejäl mängd attributdata. Detta är anledningen till den enorma storleksskillnaden. DBF formatet är helt enkelt inte anpassat för all denna data. Att sedan filen vida överstiger 2 GB gränsen, kanske beror på att själva SHP-filen ”bara” är 290 MB?
Laddningstiderna är i närheten av varandra, men skillnaden uppstår när jag zoomar in och panorerar. Stödet för Random Access i GeoPackage gör det formatet helt överlägset Shape. QGIS behöver inte läsa in hela tabellen igen, utan kan välja ut endast de objekt som faktiskt skall ritas ut, vilket är en enorm tidsbesparing när det är så här stora datamängder.
När jag panorerar samma område och skala tar det mindre än en sekund att rita ut GeoPackage, medan Shape tar långt över minuten (beroende på var jag är inzoomad). Lite intressant blir det även när jag provar med originaltextfilen, som är helt jämförbar med Shapeformatet…
Jag har skrivit om GeoPackage tidigare och det finns många fördelar jämfört med Shape, men det är inte självklart att byta rakt av.
Det som däremot är klart, är att om man vill jobba mot framtiden så skall man använda GeoPackage. Shape är Shape. Kommer alltid att vara Shape. Och kommer aldrig att bli något annat än Shape.
Spännande, tack för genomgången