SUAS MAPSERVER - AN OPEN SOURCE, SVG-ORIENTED FRAMEWORK FOR EXTENDED WEB MAP SERVICES


Table of Contents

Introduction
General background
Related work
SCALABLE VECTOR GRAPHICS
Overview
Browser support
THE WMS SERVER IMPLEMENTATION
Database structure
Data import
Style configuration
Server Side Rendering
Extended operations
User rights management
THE WMS CLIENT IMPLEMENTATIONS
Browser based map clients
Mobile map client
Server installation

With large number of spatial data resources available, the Web Map Server (WMS) Implementation Specification, originally developed and published by the Open Geospatial Consortium (OGC 2002a, OGC 2006a) was finally adopted by ISO as an international standard titled IS 19128:2005 Geographic information - Web map server interface. It is a basic specification enabling users to transparently access data of interest from one or several map servers.

This standard is indeed a remarkable technical and commercial breakthrough in Internet mapping. Software conforming to this specification "is able to automatically overlay map images obtained from multiple dissimilar map servers, regardless of map scale, projection, earth coordinate system or digital format" (OGC 2004). Its success is based on the usage of a standard web protocol (HTTP), a standardized markup language (XML) and ordinary Web browsers. Request URLs may be bookmarked, pasted into HTML documents, and so forth, a benefit for the dissemination of WMS. This approach is also supported by the SUAS MapServer described here.

The service itself consists of three different operations with a corresponding set of parameters. As often defined for such services the first operation – the GetCapabilities request – provides general meta information to the user about available data, projection, and format, the so called service metadata. A client has to parse the XML capabilities document to retrieve the necessary information for the next step, the GetMap request. Through this operation the map itself is obtained and can be visualized by the client software, sometimes combined with maps obtained from other servers. Such requests can be restricted to specific layers, size, extent and desired spatial reference system.

These two operations belong to the basic Web Map Service which can be extended to a queryable WMS by supporting a third operation, the GetFeatureInfo request which provides additional attributive information about geographical features in the map.

While textual output for service metadata, error messages (exception reports), or responses to GetFeatureInfo requests are usually formatted as Extensible Markup Language (XML), maps are presented either in picture formats or graphic element formats.

The pictorial (visual) representation using raster formats is most often implemented due to two reasons: The specification originally denotes a map as a visual representation of geo-data, not the data itself (OGC 2002a). Secondly, standardized raster formats such as Graphics Interchange Format (GIF), Portable Network Graphics (PNG), or Joint Photographics Expert Group (JPEG) can be displayed by common Web browsers, additional formats such as Tagged Image File Format (TIFF) can be visualized by additional software invoked by the browser.

For the representation in graphic element formats the specification mentions Scalable Vector Graphics (SVG, http://www.w3.org/Graphics/SVG/) or Web Computer Graphics Metafile (WebCGM, http://www.w3.org/TR/REC-WebCGM/). These formats constitute a scale-independent description of graphical elements, so that scale and size of the display may be modified while preserving the relative arrangement of the graphic elements, as ISO 19128 describes.

In this paper a framework for supporting Web Map Services with partial focus on SVG will be described. Geo-data is converted to WKT, stored in a ordinary relational database management system (DBMS), is retrieved and transferred – optionally compressed – through the Internet, and is finally visualized in Web browsers on desktop computers or mobile devices, natively or using plug-ins extending the browser’s functionality.

A few approaches for open geospatial services are described in literature and Internet resources:

A widely used web mapping application is MapServer, formerly called UMN MapServer due to the development by the University of Minnesota (UMN, see http://mapserver.gis.umn.edu/). This application framework is now maintained by developers around the world as part of the Open Source Geospatial (OSGeo) Foundation. MapServer supports several OGC standards, including WMS and Web Feature Service (WFS). Because it runs as an executable program, the installation however requires specific rights on server side which is not always given.

Deegree, developed by lat/lon GmbH and the GIS Research Group of the Department of Geography of University of Bonn, is a Java Framework offering “the … building blocks for Spatial Data Infrastructures” (http://www.deegree.org) by supporting a wide range of standards from OGC and ISO/TC 211 (like WMS, WFS, Web Coverage Service and Catalogue Service Web-Profile). However Java Servlet and Java Server Pages technologies are not provided by many Internet service providers; therefore SUAS is built on PHP and MySQL which are widely supported. Additionally, experiences show that setup of Degree is not as easy as one could expect (Schweizer 2005, Pareeth 2008).

MapGuide Open Source, sold until November 2005 as Autodesk MapGuide, is a web-based platform to develop and deploy web mapping applications and geospatial web services. Autodesk submitted this product to the OSGeo Foundation in March 2006 under the LGPL license (http://mapguide.osgeo.org/).

Williams (2005a) and Neumann (2006) use PostGIS (http://www.postgis.org/) to store geometries in WKT format. A server-side scripting language (PHP) extracts data from the database and creates SVG geometry fragments on the fly supporting a service similar to WMS’s GetMap request.

Besides these open source solutions several commercial internet mapping software packages exist like ArcGIS Server, GeoMedia Web Map, or MapXtreme; these approaches are not discussed here.

SVG is a XML-based language for describing two-dimensional graphics like vector shapes, raster images and text. Graphical objects can be grouped (similar to layers in GIS), styled, transformed, animated and composed based on predefined objects. Additionally the SVG recommendation includes nested transformations, clipping paths, alpha masks, filter effects, template objects and extensibility (Watt 2001).

SVG 1.1 is a W3C Recommendation since 2003 and forms the core of current SVG developments. SVG 1.2 is the specification still under development as W3C Working Draft.

Because of industry demand, two mobile profiles were introduced with SVG 1.1: SVG Tiny (SVGT) and SVG Basic (SVGB, see W3C 2006). These subsets of the full SVG standard are mainly intended for user agents with limited capabilities like cellular phones or higher level mobile devices, such as PDAs. Therefore SVG Tiny has been used for the mobile client developed in this framework (cf. section 4.2).

SVG provides excellent graphics allowing magnification of an image on client-side without sacrificing sharpness, detail, or clarity or additional server requests. Title and description elements can be provided for supporting accessibility for people with disabilities (Campin 2003, Bulatov 2004). Screen readers can speak the title when objects are selected. For visually impaired users, a tactile copy of the SVG display can be created by printing to a tactile device which provides haptic effects.

SVG is especially suitable for applications that require continuous map updates and/or high level of interactivity at the client using AJAX technology where this format can be used besides other XML formats or JSON (http://www.json.org/. Interactivity is supported in the browser using ECMAScript.

Supporting XML format, the server’s output is not only a "portrayal of geographic information", but can be used additionally to deliver the geo-data itself, comparable to the output of a Web Features Service (Kettemann and Zhu 2005). As an XML based grammar SVG enables combination with other technologies like XLink and SMIL and communication between applications on different platforms.

Display of SVG documents is supported by native browser implementations (Mozilla, FireFox, Opera, and Safari), plug-ins, stand-alone viewer applications like Batik (http://xmlgraphics.apache.org/batik/) and mobile devices. The mapping APIs of Google Maps and Windows Live Local use inline SVG in Firefox and Opera to render driving direction paths and other shapes which also indicates the importance of SVG.

Even if Adobe announced to discontinue the support for Adobe SVG Viewer on January 1, 2009, this viewer is still a popular browser plug-in available for Windows®, Mac, Red Hat and Solaris operating system, especially important for map display in Internet Explorer.

Two mobile viewers should be mentioned: TinyLine SVG Toolkit is a free, pure J2ME CLDC 1.0 implementation for visualization of SVG Tiny documents on mobile devices (http://www.tinyline.com/svgt/index.html), available for Windows CE, Embedded Linux, PalmOS, and Symbian. This viewer is used in the mobile viewer of the WMS framework, as described below. It can be run on a phone without a built-in SVG implementation. BitFlash SVGT Player, a commercial product, available for different operating systems including Symbian and WindowsCE claims to be fully compliant with the W3C’s SVG Tiny 1.1 and 1.2 specifications (http://www.bitflash.com/prod_playerSVGT.html). Because of the many advantages of SVGT, more and more mobile phones begin to support this format; as mentioned at http://svg.org/special/svg_phones/, more than 160 SVG-enabled phones are currently available.

The database of SUAS – in this framework currently MySQL is used – consists mainly of two tables as described in table 1. The FeatureClass table stores meta-information about single layers. A layer, in this context, is a collection of features belonging to the same feature class. The features themselves are stored in the FeatureGeometry table.

The attribute layertype describes where and in what format the features of this layer can be found. The attribute description contains short textual information about the layer retrieved for the GetCapabilities request. The bounding box for the features is stored in the attributes xmin, ymin, xmax, ymax defining the lower left resp. the upper right corner. The spatial reference system is contained in the srs attribute usually specified according to the EPSG Geodetic Parameters dataset. Stid field points to the id of style for this collection, where Style properties for a feature can be supplied optionally. Raster data has no attributes and is not queryable when using GetFeatureInfo request, queryable field should be set to true. The field elevation is used for building 3D models.

The FeatureGeometry table partially consists of similar attributes, but is related to single features. The type of geometry (region, polyline…) is stored in the attribute geomtype, and the geometry itself in Well Know Binary format (WKB) in the attribute geom. xlink can be used to embed the SVG geometry into a hyperlink according to W3C’s XLink recommendation (http://www.w3.org/XML/Linking). The attributes field contains the feature’s attribute / value pairs in XML format for ease of parsing on client-side. The field textcontent is used for storing the label of geometry as text string.

Two special operations extend the capability of map rendering: GetMap25D (cf. Fig. 1) and GetMap3D. A 2.5D map has the strongpoint of 2D and 3D map. It can have smaller file size than a 3D image, but still has the 3D intuitionistic sense. Map in form of 2.5D has been widely used in mobile navigation system. These two operations follow partially of the specification of Web 3D Service (W3DS), which is a portrayal service for 3D geodata. SUAS can extrude 2D geodata and coordinate systems to 2.5D/3D with given elevation value, and produce a 2.5D/3D scene graphs in raster image, SVG, X3D, VRML, KML, and GML format. Because it is “fake” 2.5D/3D data, these two requests were named differently from the GetScene request in W3DS to avoid conflicting names.


As described above the GetFeatureInfo request enables the client to query attributes of features visible in the map. Traditionally features are selected by layer name and pixel based coordinate values. Using SVG however as map output format, real-world coordinates can be used in the map displayed on client-side. By evaluation of ECMAScript events like onclick, these coordinates can be determined and integrated in an extended GetFeatureInfo request. In the same way a unique identifier can be derived through navigating in the SVG Document Object Model (DOM), as described by Williams (2005a). Such an identifier can also be used by GetFeatureInfo operation for attribute retrieval. Users can browse the attached attribute information of any interesting geometries, in form of popping up dialog or other information containers; or show and hide data layers, or link to extending datasets, so that the information content can contain multi-dimensional Geoinfomation, exceeding the content of a static map.

There are several WMS clients available on the market, but most of them are proprietary or work only for raster images without being able to truly interact with a WMS. One goal of this project is to implement map clients which can retrieve and analyze data from WMS servers and especially support raster and vector data as well.

A map client programmed in JavaScript, HTML and SVG allows the user to communicate with WMS servers for requesting maps. For the implementation of a dynamic WMS client, as essential technology Asynchronous JavaScript and XML (AJAX, Garrett 2005) is used to complete the asynchronous progress of data exchanging with servers in the background without experiencing of any visual interruptions.

The XMLHttpRequest object, the core technology of AJAX, is an optimal solution to execute the GetCapability request. Using a XML DOM parser, relevant elements of the received XML document can be accessed, extracted and optionally modified. The element content is used for dynamic update of the user interface, i.e. to fill selection lists for layers and SRS, as well as for dynamic creation of internal data structures for preparing the GetMap request.

Finally based on the data format received from the server, different WMS widgets can be called to display the map itself. For SVG maps, a SVG based widget is started where the map display is controlled by several navigation tools, also created using SVG and JavaScript. This application is based on the work of Williams (2005a), Neumann et al. (2006) and Zhouer (2006).

For the display of raster maps, Openlayers or other clients can be chosen as well to visualize and to explore the map. OpenLayers (http://openlayers.org/) is a pure JavaScript library for displaying map data or building rich web-based geographic applications. Based on user-defined options, the client is created with optional control dynamically which uses the Openlayers JavaScript API to interact with the WMS server.