OSGeo Events, FOSS4G 2008

Font Size:  Small  Medium  Large

Integration of geo-spatial web services using Adobe Flex

Bas Vanmeulebrouk, Marjolijn Kuyper

Building: Cape Town International Convention Centre
Room: Makuya Room (Room 1.6)
Date: 2008-09-30 03:30 PM – 05:00 PM
Last modified: 2008-09-08


The Geoloketten project supports the use of geographical information in the Netherlands. Within the frame of this project, a network of geo-spatial enabled web-services has been created. These web-services enhance existing web applications resulting in innovative applications for complicated geo-spatial challenges. To demonstrate these web-services, a user-friendly internet GIS application framework called Luigi which seamlessly integrates web-services was developed using the Adobe Flex development framework.

The release of this internet GIS application framework as open source is being considered and we would like to present it to the open source GIS community. The open source GIS community will hopefully provide us with the feedback we need on whether or not to release this application as an open source GIS application.

The Adobe Flex platform
Adobe Flex is a platform independent platform for developing rich internet applications. The Flex software development kit (SDK) and an integrated development environment (IDE) are required to develop Flex applications. The client platform for applications developed using the Flex SDK is either the Flash Player plug-in (for browser based applications), or the Adobe AIR runtime (for desktop applications).

The Flex framework is quite suitable to develop highly interactive internet GIS applications like the one described as Flex offers a rich set of user interface components. Flex server calls are asynchronous. Users can continue to work with the application while the server is processing their requests. Flex applications have to be developed for one platform only, the Flash platform.

The Flex SDK has been released as open source. Developers can use the Flex SDK to freely develop and deploy Flex applications using either the closed source Adobe Flex Builder or an IDE of their choice.

The Luigi framework currently supports map services such as WMS, WFS and ArcIMS, catalog services, geocoding services, a coordinate transformation service and charting services. Users have the usual pan, zoom and identify tools at their disposition. In addition to this standard internet GIS functionality, the Flex AMF communication protocol facilitates the development of innovative tools which allow end-users to share spatial data across the internet. Using the so called swipe tool, users can "see through" layers covering other layers. Editing tools are also available. Changes can be persisted using the transactional WFS standard.

The application has been designed according to the model-view-controller (MVC) software architecture. The model consists of classes to administer the map layers available in the application and to keep track of the current and the full extent of the application. The map model is being modified by a controller which supports functions like panning and zooming and adding and removing map layers etcetera. These functions are being called by the visual controls from the view layer. Currently, a map control, a navigation map control and a legend/table of contents control are available. After the model has been changed, the visual controls are updated accordingly.

Because of the modular design of the framework, adding new functionality is easy for Flex developers. On top of that, changing the user interface and adding support for additional data formats (for instance one's own custom data format) is a breeze.

The Luigi framework has been used in numerous projects by partners participating in the Geoloketten project to create both simple internet GIS applications for novice users and complex internet GIS applications for professional users. The response from end users has been overwhelmingly positive so far. The dilemma now is whether to make the Flex internet GIS framework open source or not.