Geological Report Information System

For the SVG Open 2008 conference

Table of Contents

Architecture of the System
Technical Basics
Level of Detail
Label Placement
Spatial Navigation and Reference
Infopanel and thematic Navigation

The goal of this project was to design a high quality map application for employees in a geological firm which offers a high level of interactivity, is fast, and is easy to use. Information regarding the chosen report or area is provided. Additional information about the groundwater, existing geothermal probes, wells, etc. are also available as layers.

Data for this project was obtained from various sources. The different data sources were compiled and completed within desktop GIS-Systems and some gdal utilities. The vector data was transferred to an open source spatial database (Post-GIS) which supports spatial queries, intersections, simplifications and SVG output. Additional raster data is also requested from UMN Mapserver using WMS queries.

The application is a typical client-server application. The server part consists of a database and a webserver. A serverside scripting language (PHP) extracts data from the database and creates SVG geometry fragments. It is also partially responsible for map symbolization. The other data, such as the initial SVG file, JavaScript, raster files, thematic data and styles, are directly handled by the webserver. Other serverside modules include the UMN Map Server (University of Minnesota Map Server is an OGC compliant open source map server that can read and symbolize many popular GIS formats.) for extracting raster layers and Higrid, an application to extract DTMs at any resolution. On the client side, a SVG viewer handles the map display, user interface and interactivity. The implementation of interactive functions also involves ECMAScript, a client-side scripting language present in almost any webbrowser. The client and server communicate through the getURL function and the standard http protocol. The application is designed to allow a quick adaptation to other regions by strictly separating content and presenation.

SVG (Scaleable Vector Graphics) is a language for describing two-dimensional graphics in XML. Three types of graphic objects are allowed: vector graphic shapes, images and text. These objects can be grouped, styled, transformed and composited into exisiting objects. SVG drawings can be interactive and dynamic. Animations can be defined and triggered either declaratively or by script. SVG draws vectors which are paths that have a starting and an end point and are defined by Cartesian coordinates. The origin is in the upper left corner of the monitor and the positive y-axis points downward.

Information about the data is directly visible in the code of the SVG files which can be viewed, opened and changed. This has the advantage that one can learn from other people's codes, but it also has the disadvantage that (map)graphics could be copied and misused. In cases where the map is generated automatically and individually from the database and generalized depending on the scale, this is only a small problem. A "Digital Rights Management" for future SVG versions is being considered.

The application was tested in the Adobe SVG-Viewer (version 3 and 6), in Firefox 2 and 3, in Explorer 6 and 7, and in the Apache Batik SVG-Viewer. Neither viewer supports the entire SVG 1.1 specification, but the current functionality already allows a creation of an appealing interactive map application. As a result of missing features, e.g. animation features do not exisit in Apache Batik, parts of the code needed to be forked.

ECMAScript, better known as JavaScript, is an object-oriented scripting language, which allows the dynamic creation of web content. It can also include programs that interact with the user and control the browser. ECMAScript is often used to manipulate a SVG document. This way, individual functionalities can be implemented. The SVG document contains a reference to the respective ECMAScript file. The SVG file then knows which script file it should use in order to carry out a certain function.

PostgreSQL is a highly developed open source object-relational database management system. It has the following features: complex queries, foreign keys, triggers, views, transactional integrity, multiuser concurrency control. PostGIS is a spatial extenstion of PostgreSQL which supports simple features according to the specifications of the Open GIS Consortium, spatial queries, GIS-analysis functions and spatial indexing of GIS objects. In combination with the OGR Library [1] it can import many popular GIS formats.

PHP (Personal Home Page, Hypertext Preprocessor) is a programming language which can be used in three different ways: server-side scripting, command-line scripting, client-side GUI applications). PHP was originally developed to create dynamic websites. Now, PHP is often used to create XML documents, graphics, Flash animations, PDF files, etc. In this application, PHP is used to extract data from the PostgreSQL database and to create SVG fragments. PHP supports many databases including MySQL, PostgreSQL and Oracle.

Open GIS Consortium (OGC) Web Map Service (WMS): A WMS produces maps according to ISO/DIS 19128. This standard defines a map as a portrayal of geographic information as a digital image file which is suited to be displayed on a computer screen. These maps are usually rendered in a raster format, e.g. PNG, GIF or JPEG. They are seldom found as SVG (vector format) or as WebCGM (Web Computer Graphics Metafile, vector format).

Interactivity plays a major role in this application. The user can give commands and control them individually. As not all of the information can be shown at once, it is set in appropriate places and the user can decide when he wants to see and do what. As a result, the user has the feeling that he is communicating with the system. During his interaction, the user learns how to operate the system and makes more complex queries. It is possible for the user to use spatial navigation to in order to zoom or move from one part of the map to another.

Here the user can generate and print a customized map. First the user choses the are he would like to print. Then he decided whether he's like to print a map in A4 or A3 format and whether the map layout should be portait or landscape. Next, the scale of the map can be chosen (1:1000-1:10000). To be able to see what area will be printed, the user can click on the button "show printing area". He can also zoom in or out to be able to see the entire area. After typing in a map title, the user can click on the "print pdf" button. A pdf is generated and opened in a separate window. The pdf can be saved and/or printed.

SVG was well suited for the implementation of the application. A large part of the client application was written in ECMAScript. Without such a client sided programming language it would have been nearly impossible to create such an application.

[1] OGR Library: Open Geometry Referencce