From SOSI to Shape with Sosicon on Windows

Denne posten er også tilgjengelig på norsk.

SOSI is a Norwegian format for the exchange of geographical data, and you’ll soon run into .sos files if you are going to work with GIS data from Norwegian public agencies. Unfortunately, this format is not universally supported by GIS software; an application like QGIS does have SOSI support through GDAL in theory, but in reality the solution may not be stable enough for practical use. Luckily there is a solution, in the shape of Espen Andersen’s tool Sosicon, which allows you to convert SOSI files to the Shape format (among other), which is as close to a universal standard as you’ll get.

Here is a quick guide to get started:

1) Download Sosicon for Windows from GitHub. Save to a location where you’ll be able to find the file again later; it is probably best for now to just save it in the same folder where you’ve got the .sos file you want to convert.SOSICON

2) If you don’t already have it, you’ll have to download and install a package for Visual C++ from Microsoft. I didn’t need to, because I already had it; if you’re unsure – just do it. Choose x86 if you’re using a 32-bit (old) computer; x64 if you’re using a 64-bit (new) computer.Visual C++

3) Open the command line (click the Start-button, type cmd in the search field and push enter.)cmd

4) Navigate to the folder where you’re keeping sosicon.exe and the .sos file you want to convert.cd

5) Convert the SOSI file with the command sosicon.exe -2shp <filename.sos>.sosicon -2shp

6) For each layer in the .sos file, you’ve now got a group of Shape files in the same folder. Open the .shp file with the application you’d like to use. If you’re going to move the files, keep in mind that all the files with similar names and different endings belong together.

More information and advanced examples at Espen Andersen’s website.

Fra SOSI til Shape med Sosicon for Windows

This post is also available in English.

SOSI er et særnorsk format for geografiske data, og det er fort gjort å støte på .sos-filer dersom man skal arbeide med GIS-data fra det offentlige Norge. Dette formatet er dessverre ikke støttet av all mulig programvare; for eksempel har QGIS SOSI-støtte gjennom GDAL i teorien, men i praksis er det ofte for ustabilt til å være brukbart. Heldigvis finnes det en løsning, i form av Espen Andersens verktøy Sosicon, som lar deg konvertere SOSI-filer til (blant annet) Shape-formatet, som er nærmest for en universell standard å regne.

Her er en kort oppskrift for å komme i gang:

1) Last ned Sosicon for Windows fra GitHub. Lagre på et sted du finner fila igjen; det enkleste akkurat nå er å legge fila i samme mappe som du har .sos-fila du vil konvertere.SOSICON

2) Dersom du ikke allerede har det, må du laste ned og installere en pakke for Visual C++ fra Microsoft. Jeg trengte ikke, for jeg hadde den fra før; er du usikker – just do it. Velg x86 dersom du har 32-biters (gammel) datamaskin; x64 dersom du har 64-biters (ny) datamaskin.Visual C++

3) Åpne kommandolinjen (trykk Start-knappen, skriv cmd i søkefeltet og trykk enter.)cmd

4) Navigér til mappa hvor du har sosicon.exe og .sos-fila som skal konverteres.cd

5) Konvertér SOSI-fila med kommandoen sosicon.exe -2shp <filnavn.sos>.sosicon -2shp

6) For hvert lag i .sos-fila har du nå fått en gruppe med Shape-filer i samme mappe. Åpne .shp-fila i programmet du ønsker å bruke. Skal du flytte filene, husk at alle filene med samme navn og forskjellig endelse hører sammen.

Mer informasjon og avanserte eksempler finnes hos Espen Andersen.

QGIS med SOSI-støtte på Windows

This post is also available in English.

  • Last ned og kjør OSGeo4W network installer, i stedet for frittstående QGIS.
  • Velg avansert installasjon.
  • Velg ønsket QGIS-versjon å installere fra Desktop-kategorien. [2]
  • Velg pakken gdal-sosi fra Libs-kategorien for å installere sammen med QGIS.
  • Kjør C:\OSGeo4W\bin\ogrinfo.exe ‐‐formats (hvis du valgte å installere på standard sted) og forsikre deg om at SOSI er på listen over støttede formater.
  • Start QGIS og se under Innstillinger -> System at GDAL_DRIVER_PATH viser til C:\OSGeo4W\bin\gdalplugins.

Det var det hele! Men i praksis kan det hende at du heller vil konvertere filene til et annet format:

Alternativ 1: Ett nytt verktøy fra Espen Andersen, sosicon, gjør det veldig enkelt å konvertere SOSI-filer til ESRI Shape-formatet. Dersom det ikke er nødvendig å åpne SOSI-filer direkte i QGIS (eller du ikke bruker QGIS i det hele tatt) anbefaler jeg at du prøver sosicon først. Windows, Linux og Mac OS X-utgaver er tilgjengelige på Andersens github.

Alternativ 2: QGIS, GRASS og annen GIS-programvare basert på åpen kildekode benytter seg av GDAL og OGR-bibliotekene for å åpne raster og vektordata, og disse kommer med sine egne kommandolinjebaserte verktøy, som kan brukes for å konvertere filene uten å involvere QGIS. Tidligere måtte man kompilere bibliotekene på egen hånd for å få SOSI-støtte, slik man må for Linux og OSX, men en enklere mulighet er nå tilgjengelig for Windows-brukere.

For å konvertere filer med ogr2ogr-verktøyet: [3]

  • C:\OSGeo4W\bin\ogr2ogr.exe <output>.shp <input>.sosi <layer>
  • (Eller bare ogr2ogr <output>.shp <input>.sosi <layer> dersom du bruker et OSGeo4W Shell-vindu)

Hvor <layer> typisk er enten points, lines eller polygons, slik:

  • C:\OSGeo4W\bin\ogr2ogr.exe somefile_pol.shp somefile.sosi polygons

“ESRI Shapefile” er formatet det skrives til som standard; for å velge et annet støttet lagringsformat tilføyes kommandoen -f fulgt av navnet slik det står i lista over tilgjengelige formater, slik:

  • C:\OSGeo4W\bin\ogr2ogr.exe -f “GPX” paths.gpx tfr.sosi lines

Det går også an å lage et script for å automatisere dette siste trinnet, eller prøve min script-versjon for linux eller windows.

 

Fotnoter:

1: Konvertering til Shape-formatet vil medføre at lange attributt-navn vil kuttes til ti tegns lengde, uten at det pleier å være noe problem.

2: Dersom du bruker en datamaskin med flere kjerner/prosessorer, vil jeg på det sterkeste anbefale at du velger QGIS 2.4 eller nyere, og at du passer på å aktivere multithreaded/parallell rendering fra menyen settings->options->rendering.

3: Det kan hende at norske tegn blir ødelagt i konverteringen; i slike tilfeller har løsningen for meg vært å definere inn- og ut-tegnsett via SHAPE_ENCODING og ENCODING.

QGIS with SOSI support on Windows

Denne posten er også tilgjengelig på norsk.

  • Download and run the OSGeo4W network installer, rather than standalone QGIS
  • Choose advanced installation
  • Select your preferred QGIS version to install from the Desktop category [2]
  • Select the package named gdal-sosi from the Libs category to install alongside QGIS
  • Run C:\OSGeo4W\bin\ogrinfo.exe ‐‐formats (if you chose to install in the default location) and verify that SOSI is on the list of supported formats
  • Run QGIS and under Settings -> System verify that GDAL_DRIVER_PATH is set to C:\OSGeo4W\bin\gdalplugins

That’s it! But in reality you might prefer to just convert the SOSI files to a different format:

Option 1: A new tool by Espen Andersen, sosicon, now makes it very easy to convert SOSI files to ESRI Shape format. If it is not necessary to access SOSI files directly in QGIS (or you’re not using QGIS at all) I recommend you try sosicon first. Windows, Linux and Mac OS X versions are available at Andersen’s github.

Option 2: QGIS, GRASS and other open source GIS-software rely on the GDAL and OGR libraries to access raster and vector data, and these come with their own command line tools that can be used to convert your files without involving QGIS. Previously you would have had to compile your own replacement library first to get SOSI support, like you do on Linux and OSX, but an easier option is now available for Windows users.

To convert files with the ogr2ogr tool: [3]

  • C:\OSGeo4W\bin\ogr2ogr.exe <output>.shp <input>.sosi <layer>
  • (Or just ogr2ogr <output>.shp <input>.sosi <layer> if you use the OSGeo4W Shell)

With <layer> typically being one of points, lines or polygons, like:

  • C:\OSGeo4W\bin\ogr2ogr.exe somefile_pol.shp somefile.sosi polygons

“ESRI Shapefile” is the default output format; to specify another (write-enabled) format, add the -f option and the name as written in the list of supported formats, like:

  • C:\OSGeo4W\bin\ogr2ogr.exe -f “GPX” paths.gpx tfr.sosi lines

You could also create a script to automate this final step, or try my script version for linux or windows.

 

Footnotes:

1: Converting to the Shape format will cause long attribute names to be truncated at ten characters; this is usually not a problem.

2: If you’re using a multi-core/CPU computer and QGIS 2.4 or newer, make sure you enable multi-threaded/parallel rendering from the settings->options->rendering menu.

3: Norwegian SOSI files tend to contain Norwegian characters, that may get lost in conversion. In such cases explicitly defining input and output character sets via SHAPE_ENCODING and ENCODING has solved the issue for me.