Build GDAL with support for the Norwegian SOSI format
Table of Contents
- General information on the Norwegian SOSI format in English
(http://www.kartverket.no/en/Standarder/SOSI/SOSI-Standard-in-English/?si=1312E52D3B0036D85BC5A610FAEBB7C6&rid=824272813&sn=Statkart) - General information on the Norwegian SOSI format in Norwegian
(http://www.kartverket.no/Standarder/SOSI/SOSI-standarden-del-1/) - Github repository of the OpenFYBA-library wich is required for the OGR-SOSI-driver
(https://github.com/kartverket/fyba) - Initial discussion about the integration if a driver for the Norwegian SOSI format
(http://trac.osgeo.org/gdal/ticket/3638) - Updates on the activities of the National Mapping Authority of Norway (Statens kartverk) on that topic (in Norwegian)
(http://labs.kartverket.no/sos/)
Unix (Tested on Ubuntu 12.04)
Download and build the FYBA library from the National Mapping Authority of Norway (Statens kartverk)
The SOSI driver requires the FYBA library to read and write files in the Norwegian geodata standard format SOSI. OpenFYBA is, a source code release of the FYBA library, is distributed by the National Mapping Authority of Norway (Statens kartverk) and can be downloaded from their git repository: (https://github.com/kartverket/fyba)
The driver has the following dependencies: libtool g++ autoconfig
git clone https://github.com/kartverket/fyba cd fyba autoreconf --force --install ./configure make sudo make install cd ..
This procedure installs the FYBA library (libfyba) and it`s dependencies (libfygm and libfyut) in /usr/local/.
Download and build GDAL
svn checkout https://svn.osgeo.org/gdal/trunk/gdal gdal cd gdal #Recreate the configure script with SOSI support sh autogen.sh ./configure --with-sosi make sudo make install
In addition, some Linux distributions require the shared library cache to be updated after install:
sudo ldconfig
Windows (Tested on Winows 7 with MS Visual Studio 2012)
Download precompiled .lib- and include-files of the OpenFYBA library from https://github.com/kartverket/fyba/tree/win-binaries (from folders "include" and "Lib"). Or rebuild them using the project files for MS Visual Studio and build instructions provided here https://github.com/kartverket/fyba. The OpenFYBA library - where the SOSI-driver is build on - consists of three parts: GM.lib, UT.lib, and FYBA.lib.
Download GDAL source code from http://trac.osgeo.org/gdal/wiki/DownloadSource for GDAL version 1.9.2 or later (plugin-option available since revision 26547).
Uncomment lines regarding SOSI-support in GDALs nmake.opt and set path to where you have your lib-files and include folder for OpenFYBA e.g.: If "SOSI_PLUGIN = YES" is uncommented SOSI-support is built as a plugin and the plugin-.dll deployed in the gdalplugin directory. If SOSI_ENABLED is uncommented it is build "normally" based on the external libs. The options SOSI_ENABLED and SOSI_PLUGIN are mutually exclusive. Uncommenting both will lead to build errors.
# Uncomment for SOSI support #SOSI_ENABLED = YES SOSI_PLUGIN = YES SOSI_INC_DIR = C:/fyba/include SOSI_LIBS = C:/fyba/Lib/GM.lib C:/fyba/Lib/UT.lib C:/fyba/Lib/FYBA.lib
Build GDAL with MS Visual Studio http://trac.osgeo.org/gdal/wiki/BuildingOnWindows. Use the same compiler for both OpenFYBA and GDAL.
There are older downloads including binary versions for Windows on: https://bitbucket.org/kartverket/fyba/src/e0a53133586261258e9333ce314ba1df0a1fb63e/releases?at=releases
Since the plugin build option has been implemented, a binary version of the plugin is available in OSGeo4W.
Testing the SOSI driver
To test if the driver has been loaded, execute the following (look for "SOSI" in the results):
ogrinfo --formats
Then test with a sample file (such as http://trac.osgeo.org/gdal/attachment/ticket/3638/20BygnAnlegg.SOS):
ogrinfo 20BygnAnlegg.SOS ...
Note: When accessing a SOSI file, the SOSI driver writes out indices into a subfolder within the same directory where your SOSI files (.sos) are stored. Therefore you have to have write access to the directory containing your SOSI files.
Usage examples
Convert layers of all SOSI-files in the current directory to shape-format:
dir=$(pwd) for s in $(ls ${dir}/*.sos) do name=$(echo $s | cut -f1 -d'.') layers=$(ogrinfo $s) if [ $(echo $layers | grep points | wc -l) -eq 1 ] ; then ogr2ogr ${name}_pnt.shp $s points fi if [ $(echo $layers | grep lines | wc -l) -eq 1 ] ; then ogr2ogr ${name}_lin.shp $s lines fi if [ $(echo $layers | grep polygons | wc -l) -eq 1 ] ; then ogr2ogr ${name}_pol.shp $s polygons fi done
Or - even simpler - convert SOSI to SQLite format. SQLite is more similar to SOSI as it allows for several layers and it is less limiting regarding column names:
dir=$(pwd) for s in $(ls ${dir}/*.sos) do name=$(echo $s | cut -f1 -d'.') ogr2ogr -f SQLite ${name}.sqlite $s done
Open Tickets
No results