Open Source Cloud Map Technical Description

 

Introduction

The mapping system we built has the following characteristics:

  • Utilizes open source GIS software for both the map server and map client. Open source software is distributed for free, does not depend on proprietary vendor-specific files or formats, and is developed and maintained by peers through the open availability of source code.
  • Map client requires no installation and is embedded inside a web browser as pure JavaScript®. All major browsers are supported.
  • Deployed on a virtual cloud server.

In particular we chose GeoServer as the map server, OpenLayers as the map client, and Amazon Elastic Compute Cloud®, also known as 'EC2®', as the cloud server. We have found that this combination provides the ability to simply serve map data on the web without high license fees and with a minimum setup effort. In addition, the system provides good performance and reliability.

Open Source Cloud Design

Figure 1. The web mapping system has GeoServer deployed on an Amazon EC2 server and OpenLayers in a browser.

Amazon EC2 Virtual Web Server

In this system the map server is deployed on a virtual server (EC2 instance) in the Amazon Web Services cloud. This provides the following benefits:

  • Scalable - Once you have installed software, copied data, and configured your virtual server, you can save this as a stored machine image. Amazon refers to this as an Amazon Machine Image (AMI®). With a few mouse clicks you can then easily launch new instances of the virtual server from the stored machine image with all the software and settings already installed. This avoids the need to install applications and data for each instance. The user chooses the size of the instance (RAM) when launching new instances. A feature called Auto Scaling allows you to automatically scale your Amazon EC2 capacity up or down according to conditions you define. Users are able to create, launch and terminate server instances on demand.
  • Simple Setup - Amazon allows remote desktop connections to the server you launch. The online AWS Management Console provides full control of all your EC2® instances and AMIs.
  • Cost-effective - You pay for your EC2® instance compute capacity by the hour and there are no long term commitments. This avoids the large up-front fixed costs of server setup and maintenance.
  • Reliable - The Amazon Web Services cloud is designed to be resilient, distributed and secure.
  • Elastic Load Balancing - Allows you to automatically scale your Amazon EC2® capacity up or down according to conditions you define.

GeoServer Map Server

We have chosen the open source GeoServer for the map server in this system. GeoServer is built with the Java programming language and is maintained by a diverse group of individuals and organizations from around the world. GeoServer is the reference implementation of the Open Geospatial Consortium (OGC) Web Feature Service (WFS) and Web Coverage Service (WCS) standards, as well as a high performance certified compliant Web Map Service (WMS). GeoServer is an OGC compliant WMS server with support for multiple data sources and the style layer descriptor format.

A feasibility study was conducted to determine the usefulness of GeoServer for deploying map data on the web with a cloud server. This study has indicated that GeoServer is capable of serving map data fast, efficient and inexpensively on a cloud server. GeoServer provides a web based administration tool that controls all aspects of map server and layer configuration (Figure 2).

GeoServer Administrator Interface

Figure 2. GeoServer Administrator interface

Web map services serve georeferenced map images in jpeg, png, or gif formats. These images are downloaded in the web browser for each map layer and compiled into a single composite image by the map client software. GeoWebCache is integrated with GeoServer and provides a mechanism to cache map tiles for future use. This avoids the need to generate the images anew for each map request. A tile cache significantly improves performance of a map server. GeoWebCache is preconfigured to cache tiles as they are created if the tile does not already exist in the cache. In addition, an interface is provided for seeding the tile cache in advance to improve performance.

The following map layers are served on this system. For more information about these layers see the WETAG MetaData page.

  • Highly Valued Resources
    • Cell Towers
    • Recreation Sites
    • Ski Areas
    • National Historic Trails
    • Class 1 Airsheds
    • Fire-Adapted Ecosystem
    • Sage Grouse Habitat
    • USFWS TE Spp Critical Habitat
    • Non-Attainment Areas
  • Threats to Wildland Resources
    • FHTET Risk Map - % Basal Area Loss
    • Wildland Fire Potential
    • Establishment Potential - Ips typographus
    • Susceptibility - Ips typographus
    • Establishment Potential - Sirex noctilio
    • Susceptibility - Sirex noctilio
    • EFETAC Threat Summary
    • Fire Planning Unit Boundaries
    • Burn Probability (Percent)
    • Conditional Flame Length (feet)
    • Residential Structures (1-2 per cell)
    • Residential Structures (3+ per cell)

Map Client (OpenLayers, GeoExt, Ext JS)

There are many open source options for map clients including OpenLayers, GeoExt, ka-Map, MapBender, OpenScale, MapBuilder, MapFish, CartoWeb, etc. We have chosen to use OpenLayers because it has popular support and a growing developer community. OpenLayers is a pure JavaScript library for displaying map data in most modern web browsers, with no server-side dependencies. OpenLayers implements industry-standard methods for geographic data access, such as the OpenGIS Consortium's Web Mapping Service (WMS) and Web Feature Service (WFS) protocols.

In addition to OpenLayers another open source library called GeoExt is used in this system. GeoExt combines the geospatial capabilities of OpenLayers with the rich user interface components of Ext JS. Ext JS is available under an open source license option.

By combining OpenLayers, GeoExt and Ext JS we have built a thin map client with a rich user interface supported by all major browsers (Figure 3).

Open Source Cloud Map

Figure 3. The map client requires no installation and is supported by all major browsers.

This system also includes options to customize the map in the following ways:

  • Add layers from any OGC compliant web map service.
  • Add layers from ArcGIS Server services via REST.
  • Add layers from ArcIMS services.
  • Add layers based on KML files.
  • Search for layers from WMS and ArcIMS servers by a user specified search term.
  • Search for KML files by a user specified search term
  • Preview layers before adding them to the map.
  • Remove layers from the map.
  • Reorder the layers.
  • Specify the default visibility of the layers.
  • Save a list of favorite map servers.
  • Retrieve metadata for selected servers.
  • Retrieve metadata for selected layers.
  • Save the map settings in an xml file on the server. The custom map is retrieved by user login.
  • Publish the map for other users to access without login.

Because the most commonly supported spatial reference by non commercial map servers is EPSG 4326 (latitude/longitude based on the WGS84 datum), we have chosen this as the spatial reference of the customizable map. The non customizable map uses EPSG 900913 ('Spherical Mercator') which is commonly used by commercial providers such as Google Maps®, Microsoft Virtual Earth® (Bing Maps®), Yahoo Maps®, and other commercial API providers. This map includes both WWETAC GeoServer provided layers as well as Bing Maps® (Microsoft Virtual Earth®) as a base layer.

The map application includes an interface to a WMS search engine developed by MicroImages®, Inc. This search engine allows users to enter search terms and retrieve a list of layers from WMS and ArcIMS servers that match the terms. The user can then view a preview map of the matched layers, and add the layers to their custom map. The map customizations are saved on the server and will be retrieved the next time the user logs in. As published map services become more common and available to the general public, the ability to find map services with a particular subject focus is essential. The map search engine provides the means to locate these services.

To support the process of locating and adding layers to the map, the user can save a list of favorite map servers for future sessions. This avoids the need to search for the map server repeatedly.

The customize interface of the map contains a tab that provides a search tool for KML files on the web. This tool utilizes the Google AJAX Search API to search the web for KML files that match the user specified search terms. The user can view a preview map of the KML, and if desired add it as a layer to the map. When the user clicks on a KML marker in the map, a popup description will display over the map.

The client map application is primarily based on JavaScript running in the user's browser. However, it also utilizes ASP.NET running on the server for saving and retrieving user maps created with the customizable map. In addition, ASP.NET proxies have been created to handle cross domain xml data exchange.

The following is a list of browsers that have been tested for this map application and any issues that have been found:

  • Internet Explorer 6. There are no known issues.
  • Internet Explorer 7. The following issues are known:
    • The ID Results tool does not work because of security issues (Access is denied). This is not a problem in IE6.
    • The custom map cannot always be saved if a change was made.
  • Internet Explorer 8. There are no known issues.
  • Google Chrome 4.0.249.89. There are no known issues.
  • Mozilla FireFox 3.6. There are no known issues.