Shapefile eller GeoPackage — vad går sönder, och vad du ska använda i stället

·Av OrbGIS-teamet

Shapefilen är ett format från tidigt 1990-tal och dess begränsningar skadar dataset varje dag. Här går vi igenom vad som faktiskt går förlorat, vad du bör använda i stället och hur du byter format utan att tappa information.

De flesta GIS-verksamheter har samma mapp någonstans på en filserver: leveranser_2026/, full av zip-filer som var och en innehåller fyra till åtta filer med samma namn och olika filändelser. Någon öppnar en av dem, hittar en kolumn som heter BEF_TATH_2 och ett textfält som är kapat vid 254 tecken, och lägger sedan tjugo minuter på att lista ut vad datamängden egentligen sa från början.

Det är shapefilen. Den togs fram av Esri för ArcView i början av 1990-talet, publicerades som en öppen teknisk specifikation 1998 och har överlevt nästan allt den byggdes tillsammans med. Den är fortfarande standardvalet i exportdialogen i de flesta program, fortfarande det myndigheter levererar och fortfarande det som landar i din inkorg. Den är också, med god marginal, den vanligaste orsaken till att data tyst tappar information på vägen.

Kort svar: använd GeoPackage till nästan allt — det är en OGC-standard, en enda fil, och det tar bort samtliga begränsningar nedan. Använd FlatGeobuf när du snabbt behöver läsa stora datamängder, och GeoJSON bara för mindre data som ska genom ett webb-API. Shapefilen behåller du till en enda sak: att skicka data till en mottagare som har sagt att hen inte kan läsa något annat.

Varför shapefilen lever kvar#

Det finns goda skäl till att shapefilen vann. Specifikationen är kort och öppen, den är enkel att implementera, och redan i mitten av 2000-talet kunde i princip all GIS-programvara läsa den. Kompatibilitet slår elegans, som så ofta.

Problemet är att formatet cementerade förutsättningarna från 1993 — attributtabeller i DBF-format lånade från dBASE III, 32-bitars filadressering, en geometrityp per fil — och de förutsättningarna går inte att töja på. Modern data går rakt in i väggen.

Begränsningarna som ställer till det på riktigt#

BegränsningVad det innebär i praktiken
2 GB per fil.shp och .dbf tar båda stopp vid 2 GB. Stora byggnads- och fastighetsdataset når dit, och vad som händer efter gränsen är odefinierat — vissa verktyg kapar tyst.
Fältnamn på tio teckenbefolkningstathet blir BEFOLKNIN, eller BEFOLKN_1 om det krockar med grannkolumnen. En rundtur genom shapefile döper om ditt schema för gott.
255 attributfältEn bred analystabell får helt enkelt inte plats.
Textfält på 254 teckenBeskrivningar, noteringar och länkar kapas mitt i ett ord. Utan varning.
Inget riktigt NULLDBF saknar begreppet null. Tomma tal kommer fram som 0, vilket ser exakt ut som en uppmätt nolla — och drar snett varje medelvärde du räknar fram.
Datum utan tidDBF:ens datumtyp saknar klockslag. Tidsstämplar plattas till ett dygn eller stoppas in i en textkolumn.
En geometrityp per filEtt lager som blandar ytor och multiytor, eller punkter och multipunkter, delas upp eller tvingas om.
Inga bågarCirkelbågar från CAD eller en Geodatabase görs om till korta raka segment. Oftast går det bra, ibland inte alls — ledningsnät och fastighetsgränser är känsliga.
Teckenkodning på chansTeckenkodningen ligger i en frivillig .cpg-fil som ofta saknas. Det är därför Malmö kommer fram som Malmö.
Det är inte en fil.shp, .shx, .dbf, .prj, .cpg och ibland .sbn/.sbx/.qix. Tappar du .prj är koordinatsystemet borta; tappar du .dbf är attributen borta.

Inget av det här är exotiska specialfall. Kapade fältnamn och nollor i stället för tomma värden drabbar helt vanliga dataset en helt vanlig tisdag, och båda är den sortens skada du upptäcker först tre steg längre fram i kedjan.

Viktigt

Det farliga felet är inte att något kraschar. Det farliga är en konvertering som lyckas, döper om halva schemat och gör om saknade värden till nollor — och sedan publiceras som en officiell siffra.

Vad du ska använda i stället#

FormatPassar förEgenskaper
GeoPackage (.gpkg)Standardvalet. Leveranser, arkiv, skrivbordsarbete — allt du annars hade zippat en shapefil för.OGC-standard, SQLite i en enda fil. Flera lager per fil, långa fältnamn i UTF-8, riktiga null-värden, datum med tid, alla geometrityper, rumsliga index och även raster. I praktiken ingen storleksgräns.
FlatGeobuf (.fgb)Stora vektordataset som ska läsas snabbt, eller levereras direkt från fillagring i molnet.Binärt, strömbart och rumsligt indexerat — läsaren kan hämta bara objekten inom ett utsnitt utan att ladda ned hela filen.
GeoJSON (.geojson)Mindre datamängder som ska genom ett webb-API, och allt en webbutvecklare ska ta i.Textbaserat, stöds överallt, alltid WGS 84. Pratigt — passar dåligt över några tusen objekt.
GeoParquetAnalys: miljontals rader in i ett datalager eller en Python-kedja.Kolumnbaserat och komprimerat, byggt för att frågas mot snarare än redigeras. Ligger utanför den klassiska GIS-verktygslådan, men det är dit analysvärlden rör sig.
ShapefileAtt skicka data till någon som har sagt att hen bara kan läsa shapefile.Allt ovanstående.

I nio fall av tio i ett svenskt offentligt arbetsflöde är svaret GeoPackage. Det är en OGC-standard, både QGIS och ArcGIS Pro läser och skriver det direkt, GDAL har haft stöd för det i över tio år, och det är en enda fil som du kan mejla, checksumma och arkivera utan att undra om någon sidofil kom bort på vägen.

Är inte GeoPackage ”en QGIS-grej”?#

Nej — det är den vanligaste invändningen och den bygger på ett missförstånd. GeoPackage är en standard från Open Geospatial Consortium, antagen 2014, och dessutom en standard hos amerikanska NGA. QGIS gjorde det tidigt till sitt förval, vilket är därför det känns QGIS-färgat, men ArcGIS Pro, FME, GDAL/OGR, GeoServer, PostGIS-verktygen och alla gängse bibliotek läser det.

Att byta format utan att tappa något#

Själva bytet är enkelt. Det är att göra det ärligt som brukar hoppas över.

  1. Inventera innan du konverterar. Notera fältnamn längre än tio tecken, textfält nära 254 tecken och varje kolumn där en nolla lika gärna kan betyda ”inte uppmätt”. Det är där shapefilen redan har ljugit för dig — konverteringen ärver skadan, den orsakar den inte.
  2. Hämta tillbaka namnen från källan, inte från shapefilen. Kommer shapefilen ur en Geodatabase eller en databastabell, ta de ursprungliga fältnamnen därifrån. Att gissa sig tillbaka från BEFOLKN_1 för hand är just gissningar.
  3. Konvertera en gång, till GeoPackage, och låt den filen vara originalet. Skapa GeoJSON eller shapefile ur den vid behov i stället för att hålla fyra kopior som glider isär.
  4. Kontrollera antalet objekt, inte bara att filen finns. Antalet in och ut ska stämma exakt. Gör det inte det har något tvingats om eller fallit bort.
  5. Läs konverteringsrapporten. Ett verktyg värt namnet talar om vad det har ändrat. Gör det inte det är konverteringen inte ren — den är bara orapporterad.

För de vanliga Esri-formaten har vi byggt ett gratisverktyg som tar hand om steg 3: OrbGIS konverterare tar emot en zippad File Geodatabase, en zippad shapefil, Esri JSON, ett ArcInfo-grid eller en coverage, eller en E00-export, visar vad som finns i den — lager, antal objekt, fält, koordinatsystem, domäner och relationsklasser — och konverterar till GeoPackage, GeoJSON, FlatGeobuf, CSV med WKT-geometri, GeoTIFF eller COG. Inget konto, ingen e-postadress. Varje resultat innehåller en report.json med antal objekt, omdöpta fält, bågar som gjorts om till raka segment, koordinatsystem och allt som inte kunde följa med. Verktyget körs på våra egna servrar i Sverige, uppladdningen raderas så fort jobbet är klart och resultatet försvinner inom en timme.

Tips

File Geodatabase är formatet som låser in folk hårdast, eftersom det är proprietärt och normalt kräver en Esri-licens för att läsas. Det är värt att konvertera av princip: ett dataset som bara kan öppnas i en enda leverantörs programvara är inte arkiverat, det är hyrt.

Vad det betyder för ett webbGIS#

Det finns ett andra skäl till att det här spelar roll. När data flyttar från en mapp in i en plattform slutar filformatet vara en fråga om ordning och reda och blir en fråga om vad kartan kan visa.

I OrbGIS läses en uppladdad fil med GDAL, lagras i PostGIS och levereras som vektortiles — så formatet du laddar upp avgör vad som överlever hela vägen ut i kartan, popuperna, filtren och exporterna. Långa fältnamn förblir långa. Tomma värden förblir tomma i stället för att bli nollor. Tidsstämplar behåller sitt klockslag. Koordinatsystemet läses ur filen och behålls i stället för att tyst räknas om till Web Mercator: ett dataset i SWEREF 99 TM ligger kvar i SWEREF 99 TM, ända ut i tiles. Laddar du upp en shapefil går inget av det att få tillbaka — informationen var borta redan innan filen nådde oss.

Så det praktiska rådet är kort. Be dina dataleverantörer om GeoPackage. Konvertera det du får som shapefile en gång, medvetet och med en rapport du kan läsa. Och sluta skapa nya.

Vanliga frågor#

Är shapefile-formatet avvecklat?#

Nej — Esri stödjer det fortfarande och det försvinner inte. Men det är ett format från 1990-talet vars begränsningar sitter i grundkonstruktionen och inte går att åtgärda, och både OGC och de flesta nationella kartmyndigheter rekommenderar i dag moderna alternativ för nya leveranser.

Kan jag konvertera en shapefil till GeoPackage utan att tappa data?#

Själva konverteringen tappar ingenting — GeoPackage klarar strikt mer. Det som inte går att få tillbaka är det shapefilen redan har tappat: kapade fältnamn, text som klippts vid 254 tecken och tomma värden som blivit nollor. Konvertera från originalkällan om du fortfarande har den kvar.

GeoPackage eller FlatGeobuf?#

GeoPackage när datan ska redigeras, när flera lager hör ihop eller när någon annan ska ta emot den — det är förstahandsvalet. FlatGeobuf när du framför allt ska läsa en stor datamängd snabbt, eller leverera den från fillagring i molnet där mottagaren hämtar ett utsnitt i stället för hela filen.

Varför visar min shapefil Ã¥ i stället för å?#

Teckenkodningen ligger i en frivillig .cpg-fil som ofta saknas, så läsaren får gissa — och gissar oftast fel på svenska tecken. GeoPackage är UTF-8 per definition, vilket tar bort problemet helt.

Vad ersätter File Geodatabase?#

GeoPackage, av i stort sett samma skäl, och dessutom läsbart utan leverantörslicens. Vissa funktioner i en Geodatabase har ingen direkt motsvarighet — särskilt relationsklasser och domäner — så en konvertering bör tala om exakt vad som följde med och vad som bara dokumenterades.

Behöver jag ArcGIS för att konvertera Esri-format?#

Nej. GDAL/OGR läser File Geodatabase, shapefile, Esri JSON, ArcInfo-coverages och E00 helt utan Esri-programvara, och QGIS har GDAL inbyggt. Vill du slippa installera något gör OrbGIS gratiskonverterare samma jobb direkt i webbläsaren.

Kom igång#

Jobbar du med svensk geodata och är trött på att slåss med filformaten? Testa OrbGIS gratis — ladda upp en GeoPackage och ha en delbar webbkarta på några minuter — eller hör av dig om du vill resonera kring ett formatbyte.

← Alla artiklar

Få nya artiklar direkt till din inkorg

Vi hör av oss när vi publicerar något nytt — inget annat.