Google Summer of Code - 2015

What is GeoWave?

GeoWave is an open source set of software that:

  • Adds multi-dimensional indexing capability to Apache Accumulo
  • Adds support for geographic objects and geospatial operators to Apache Accumulo
  • Contains a GeoServer plugin to allow geospatial data in Accumulo to be shared and visualized via OGC standard services
  • Provides Map-Reduce input and output formats for distributed processing and analysis of geospatial data

GeoWave attempts to do for Accumulo as PostGIS does for PostgreSQL.


By leveraging a distributed data store like Accumulo, GeoWave’s strength is in its scalability for huge datasets (effectively mapping billions of spatial entities).

Information for Students

These ideas were contributed by members of the core GeoWave team. If any of the descriptions are unclear or if you have questions, please feel free to contact the mentor associated with each idea.

While we don’t expect you to be a GeoWave or Accumulo expert, we’re hoping to find motivated individuals who are excited about working with our group of mentors to make meaningful contributions to the open source community.

Projects

GeoWave HBase
HBase Extension to GeoWave

Explanation: Currently, GeoWave is built to use Accumulo to store spatial data and expose web map and web feature interfaces from GeoServer. Apache HBase has strong similarities to Accumulo as both are based on Google’s BigTable paper. The team will support the student in extending GeoWave’s capabilities to Apache HBase. The goal for the student will be to develop a module that adheres to GeoWave’s data store interface for HBase. Additionally, common geospatial benchmarks can be run for both data stores and provide valuable metrics for the community to compare the data stores.

  • Research the key differences between Accumulo and HBase
  • Update the existing codebase to support an HBase implementation
  • Ensure existing unit and integration tests support the HBase implementation
  • Run existing benchmarks, and apply new ones to characterize performance differences between HBase and Accumulo

Expected Results: A usable HBase data store plugin extending geospatial support to the open source community.

Prerequisites: A good grasp of Java and object-oriented programming, an interest in GIS applications and distributed computing systems, and good problem solving skills.

Mentor: Rich Fecher

GeoWave Monitor
Map-Based Accumulo Status and Health

Explanation: Currently, GeoWave uses Apache Accumulo to store spatial data. The Accumulo Monitor is a useful interface for monitoring the status and health of the underlying Accumulo components. The team will support the student in creating a web-based monitoring interface which is specific to GeoWave. The interface will be used to dynamically represent map-based Accumulo status and health.

  • Research and understand the underlying REST interface which provides data for the Accumulo Monitor
  • Use Accumulo and GeoWave to determine a geospatial extent for each tablet within a tablet server
  • Use the Accumulo Monitor REST interface to retrieve status and health for each tablet which will in turn be mapped to its corresponding spatial extent
  • Create a customizable, interactive GeoWave Monitor web interface which can be configured to display user-selected stats on a map
  • Additionally, the student may develop a module to dynamically expose feature/tablet mappings via GeoServer

Expected Results: An interactive, map-based web interface which provides Accumulo status and health information catered towards GIS applications like GeoWave.

Prerequisites: A good grasp of JavaScript, Java and object-oriented programming, an interest in GIS applications and distributed computing systems, and good problem solving skills.

Mentor: Whitney O’Meara

Map Request Analytics
WMS Meta-Data Capture and Analysis

Explanation: GeoServer supports OpenGeospatial Consortium‘s Web Map Service (WMS) specification. The goal of this effort is to capture meta-data on each WMS request, including request time, bounding box and resolution in pixels, store the meta-data within Geowave, and perform kernel density analysis of WMS request data leveraging GeoWave’s kernel density estimation framework. The team will coach the student through the interface of a GeoWave data store and the kernel density estimation components. The student will complete the following tasks.

  • Build a WMS plug-in in GeoServer to capture WMS meta-data, storing the meta-data as simple features into any select active GeoServer Data Store
  • Create a GeoServer administration page using Wicket to configure the WMS capture service
  • Using GeoWave as a select GeoServer Data Store, depict captured data in a heat map using GeoWave’s kernel density estimation framework

Expected Results: A usable WMS meta-data capture service supporting geo-temporal analysis of map requests.

Prerequisites: A good grasp of Java and object-oriented programming, an interest in GIS applications, and good problem solving skills.

Mentor: Eric Robertson