| Tests | IP Check | Maven Central | License |
|---|---|---|---|
GeoWave is an open source set of software that:
- Capabilities
- Adds multi-dimensional indexing capability to key/value stores (currently Apache Accumulo, Apache HBase, Apache Cassandra, Amazon DynamoDB, Redis, and RocksDB, as well as direct FileSystem support)
- Adds support for geographic objects and geospatial operators to these stores
- Provides Map-Reduce input and output formats for distributed processing and analysis of geospatial data
- Geospatial software plugins
- GeoServer plugin to allow geospatial data in various key/value stores to be shared and visualized via OGC standard services
Basically, GeoWave is working to bridge geospatial software with modern key/value stores and distributed compute systems.
The published documentation site was last generated in 2022, for the 2.0.x line. Until publishing resumes, the documentation for the current master (3.0, Java 21) lives in this repository under docs/content.
- GeoWave - Documentation homepage
- GeoWave Overview - Overview of GeoWave's capabilities
- Installation Guide - Getting the GeoWave command-line tools
- Quickstart Guide - A quick demo of GeoWave features using the command-line interface
- User Guide - A guide for using GeoWave through the command-line interface and GeoServer plugin
- Developer Guide - A guide for developing applications that utilize GeoWave
- Command-Line Interface - Full documentation for the GeoWave CLI
- Changelog - Changes and features for each of our GitHub releases
- The underlying principles employed in GeoWave are outlined in past academic publications to include largely the background theory in Advances in Spatial and Temporal Databases 2017 and a derivative, more applied paper in FOSS4G Conference Proceedings 2017.
- Released Maven artifacts are on Maven Central. The latest release there is 2.0.1, from the Java 8 line; 3.0 is not published yet, pending the Eclipse Foundation's approval of the
org.locationtechnamespace on the Sonatype Central Portal. - From 3.0 on, release binaries such as the command-line tools and the GeoServer plugin will be attached to GitHub Releases.
- Until then, build from source.
masterrequires JDK 21; for Java 8, use the2.x-jdk8branch.
- Community support is available through GitHub Issues and on our mailing list.
You can use Maven to reference pre-built GeoWave artifacts with the following pom.xml snippet (replacing ${keyvalue-datastore} with your data store of choice and ${geowave.version} with the GeoWave version you'd like to use):
<dependencies>
<dependency>
<groupId>org.locationtech.geowave</groupId>
<artifactId>geowave-datastore-${keyvalue-datastore}</artifactId>
<version>${geowave.version}</version>
</dependency>
<dependency>
<groupId>org.locationtech.geowave</groupId>
<artifactId>geowave-adapter-vector</artifactId>
<version>${geowave.version}</version>
</dependency>
<dependency>
<groupId>org.locationtech.geowave</groupId>
<artifactId>geowave-adapter-raster</artifactId>
<version>${geowave.version}</version>
</dependency>
</dependencies>
Use the libraries available in the api package to leverage GeoWave's capabilities (where <data store options> might be AccumuloRequiredOptions or HBaseRequiredOptions and simple examples of creating the data type and index can be found in SimpleIngest within the examples directory):
DataStore store = DataStoreFactory.createDataStore(<data store options>);
store.addType(<my data type>, <my index>);
try(Writer writer = store.createWriter()){
//write data
writer.write(<data>);
}
//this just queries everything
try(CloseableIterator it = store.query(QueryBuilder.newBuilder().build())){
while(it.hasNext()){
//retrieve results matching query criteria and do something
it.next();
}
}See the Developer Guide for more detailed programmatic API examples.
Alternatively, you can always use the GeoWave command-line to access the same capabilities:
# Add a new RocksDB data store called myStore in the current directory
geowave store add -t rocksdb myStore
# Add a spatial index called spatialIdx to myStore
geowave index add -t spatial myStore spatialIdx
# Ingest a shapefile with states into myStore in the spatialIdx index
geowave ingest localToGW -f geotools-vector states.shp myStore spatialIdx
# Query all the data in the states type from myStore
geowave query myStore "SELECT * FROM states"See the CLI documentation for a full list of commands and their options.
See Example Screenshots in the GeoWave Overview for more information.
master builds and tests against:
| GeoServer | GeoTools | Accumulo | HBase | Hadoop | Spark | Java |
|---|---|---|---|---|---|---|
| 2.19.x | 25.x | 2.0.x | 2.4.x | 3.1.x | 4.0.x (Scala 2.13) | 21 |
- Building requires JDK 21 and Apache Maven 3.9 or later, or the committed
./mvnwwrapper. - For Java 8, use the
2.x-jdk8branch.
GeoWave was originally developed at the National Geospatial-Intelligence Agency (NGA) in collaboration with RadiantBlue Technologies (now Maxar Technologies) and Booz Allen Hamilton. The software use, modification, and distribution rights are stipulated within the Apache 2.0 license.
All pull request contributions to this project will be released under the Apache 2.0 or compatible license. Contributions are welcome; see CONTRIBUTING.md, which covers the Eclipse Contributor Agreement and third-party dependency checks, and the contribution guidelines in the Developer Guide. Please follow the Code of Conduct, and report security vulnerabilities privately as described in SECURITY.md.
Did I mention our documentation!
