Davide Savazzi, a student at the Università degli Studi di Pavia, Italy, and an experienced GIS developer, is doing a project titled 'Adding support for Neo4j graph database in Geotools and uDIG'. We are particularly excited to have Davide involved in this project because he has already made core contributions to the underlying 'Neo4j Spatial' project, which is building GIS capabilities into the graph database itself.
IntroductionGeographic vector data is naturally structured like a graph, network and topological analyses view GIS data as graphs, but so far no-one has tried to make use of a real graph database as the backing store for a GIS.
Neo4j is a new open source database that stores data as a graph, in the mathematical sense of nodes connected by relationships, with both nodes and relationships storing properties as key-value pairs.
The goals of the project are:
- extend Neo4j graph database with spatial indexing and query functions.
- enable GIS application developers working on either or both Geotools and uDIG to use Neo4j as a true spatial database.
- enable GIS users working with uDIG to perform spatial analyses better or faster than normal.
RoadmapAt the highest level, the project will take the following phases:
- define the best approach to store spatial data in Neo4j graph database
- create spatial indexing and query functions for Neo4j
- create a Geotools DataStore that can read and write spatial data contained in Neo4j
- add a Catalog to uDIG for this new DataStore
- add persistence support to Geotools graph module through Neo4j
- prototype a plugin in uDIG for network / routing analyses