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.

QGIS med SOSI-støtte på Ubuntu 13.10

This post is also available in English.

Oppdatering: 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.

I det siste har jeg syslet litt med QGIS og GRASS, to GIS-programmer som er basert på åpen kildekode og tilgjengelige for Linux, OSX og Windows.

Det er stort sett datasett fra Kartverket som er interessante for meg, hvilket innebærer at det er veldig nyttig å kunne arbeide med det særnorske SOSI-formatet. Begge GIS-programmene baserer seg på bruk av GDAL og OGR for å håndtere raster og vektordata, men for å få SOSI-støtte må du fjerne det vanlige GDAL-biblioteket og kompilere et nytt bibliotek selv, med SOSI-støtte aktivert.

Dette er fremgangsmåten jeg benyttet for å få tilgang til SOSI:

  1. Avinstallér gdal-bin-pakken
  2. Følg instruksjonene på trac.osgeo.org/gdal/wiki/SOSI (kun engelsk):
    • Installér nødvendige pakker (dependencies) som du ikke allerede har
    • Last ned og bygg Kartverkets FYBA-bibliotek
    • Last ned og bygg GDAL med SOSI aktivert (byggeprosessen tok nærmere en time på min meget saktegående maskin)
    • Jeg måtte oppdatere mellomlageret for biblioteker (libcache)
  3. Ett eller annet sted på veien viste det seg at Python-støtten i QGIS hadde blitt avinstallert (og den vil du gjerne ha i behold) så reinstallér python-qgis-pakken ved behov
  4. Tada! Jeg kan nyte SOSIser!

En positiv bivirkning av denne prosessen er at det virker som om QGIS håndterer vektor-data raskere med den nyere bibliotek-versjonen, men det kan være noe jeg innbiller meg.

Merk: Hvis du ønsker å konvertere .sosi-filer til et annet format, er ogr2ogr riktig verktøy. Ta en titt på Windows-versjonen av denne posten for litt mer info om akkurat det.

QGIS with SOSI support on Ubuntu 13.10

Denne posten er også tilgjengelig på norsk.

Update: 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.

I have recently been familiarising myself with QGIS and GRASS, two open source GIS suites that are available in Linux, OSX and Windows versions.

The datasets I am interested in are mostly from the Norwegian Mapping Authority, which means that being able to work with the Norwegian SOSI format is quite useful. Both of the GIS packages rely on GDAL and OGR for accessing raster and vector data, but to get SOSI support, you will have to remove the standard GDAL library and compile the library yourself, with SOSI enabled.

These are the steps I took to get SOSI support:

  1. Uninstall the gdal-bin package
  2. Follow the instructions at trac.osgeo.org/gdal/wiki/SOSI:
    • Install the dependencies, unless they are already installed
    • Download and build the Mapping Authority’s FYBA library
    • Download and build GDAL with SOSI enabled (building took close to an hour on my really slow computer)
    • I had to update the library cache (on Ubuntu 13.10)
  3. Somewhere along the path QGIS’ Python support had been uninstalled (and you probably want to have it) so just reinstall the python-qgis package
  4. Tada! I’m enjoying SOSIges!

As an added bonus, it feels like handling vector data is faster with the newer library, but that might be my imagination.

Note: If you would like to convert .sosi files into a different format, you want the ogr2ogr tool. Have a look at my Windows version of this post for a little more info on that.