Spatial Extensions for H2 Database.
Overview
H2 is a fast and robust embedded Java database. The embeddable nature of H2 makes it ideal for shipping with GeoServer out of the box. Doing so would allow users to upload and create data without any additional configuration of an external database. With full support for atomic transactions, H2 is a nice alternative to file based formats like Shapefile and GML which are not ideal formats for data which must undergo frequent update.
This project involves creating spatial extensions for the H2 database. Students will add support for geometric objects, as well as functions for performing geospatial operations and predicates. All spatial functionality is provided via the JTS Topology Suite: an extremely stable and robust geometry library written in Java.
Beneficial (but not mandatory) skills for this project include past experience with spatial databases such as PostGIS, Oracle Spatial, or MySQL, and experience programming JDBC.
Technical Details
The strategy used to spatial extend H2 is taken from the Spatial Database in a Box project. This project defines the methods for creating the "bindings" to JTS for a variety of different databases.
The GeoTools H2 Driver makes use of this method. It currently provides support for a geometric objects, and a limited set of functions. Students will build from this.
A important bit of functionality a spatial database must provide is spatial indexing. Not only to store geometric objects, but to be able to perform queries against them based on location efficiently. One of the capabilities of H2 is the ability to build multi dimensional indexes: indexes on more than one column. Coupled with the idea of a space filling curve it provides a simple form of spatial indexing. Students will explore this idea and implement such an index for H2.