Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

https://github.com/locationtech/geowave

GeoWave provides geospatial and temporal indexing on top of Accumulo, HBase, BigTable, Cassandra, Kudu, Redis, RocksDB, and DynamoDB.
https://github.com/locationtech/geowave

accumulo cassandra dynamodb geoserver geospatial-data geowave hbase java kudu redis rocksdb spatiotemporal

Last synced: about 1 month ago
JSON representation

GeoWave provides geospatial and temporal indexing on top of Accumulo, HBase, BigTable, Cassandra, Kudu, Redis, RocksDB, and DynamoDB.

Lists

README

        





GeoWave



## About

| Continuous Integration | License | Chat |
|:------------------:|:-------:|:----:|
| GitHub Action Test Status | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | [![Join the chat at https://gitter.im/locationtech/geowave](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/locationtech/geowave?utm_source=badge&utm_medium=badge&utm_content=badge) |

GeoWave is an open source set of software that:

* Capabilities
* Adds multi-dimensional indexing capability to key/value stores (currently [Apache Accumulo](https://accumulo.apache.org), [Apache HBase](https://hbase.apache.org), [Apache Cassandra](http://cassandra.apache.org/), [Amazon DynamoDB](https://aws.amazon.com/dynamodb/), [Cloud Bigtable](https://cloud.google.com/bigtable/), [Redis](https://redis.io/), [RocksDB](https://rocksdb.org/), and [Apache Kudu](https://kudu.apache.org/), 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](http://geoserver.org/) 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 Docs
* [GeoWave](https://locationtech.github.io/geowave/latest/index.html) - Latest snapshot documentation homepage
* [GeoWave Overview](https://locationtech.github.io/geowave/latest/overview.html) - Overview of GeoWave's capabilities
* [Installation Guide](https://locationtech.github.io/geowave/latest/installation-guide.html) - Installation instructions for standalone installers and from RPMs
* [Quickstart Guide](https://locationtech.github.io/geowave/latest/quickstart.html) - A quick demo of GeoWave features using the command-line interface
* [User Guide](https://locationtech.github.io/geowave/latest/userguide.html) - A guide for using GeoWave through the command-line interface and GeoServer plugin
* [Developer Guide](https://locationtech.github.io/geowave/latest/devguide.html) - A guide for developing applications that utilize GeoWave
* [Command-Line Interface](https://locationtech.github.io/geowave/latest/commands.html) - Full documentation for the GeoWave CLI
* [Changelog](https://locationtech.github.io/geowave/latest/changelog.html) - Changes and features for each of our [GitHub releases](https://github.com/locationtech/geowave/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](https://link.springer.com/chapter/10.1007/978-3-319-64367-0_6) and a derivative, more applied paper in [FOSS4G Conference Proceedings 2017](http://scholarworks.umass.edu/cgi/viewcontent.cgi?article=1027&context=foss4g).

## The Software
* We have [multi-platform standalone installers](https://locationtech.github.io/geowave/latest/installation-guide.html#standalone-installers) for the GeoWave's command-line tools to help get started
* This is often the quickest and easiest way to get started using GeoWave on your own machine
* We have a [RPM repository](https://locationtech.github.io/geowave/latest/downloads.html)
* This contains various packages including puppet modules, best used for distributed environments.
* See the [Installation Guide](https://locationtech.github.io/geowave/latest/installation-guide.html#installation-from-rpm) for more info.
* Maven artifacts are available on Maven Central
* And you can always [build from source](https://locationtech.github.io/geowave/latest/devguide.html#development-setup)

## Community

* Community support is available on [chat](https://gitter.im/locationtech/geowave) and on [our mailing list](mailto:[email protected]).

## Getting Started
### Programmatic Access
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):
```


org.locationtech.geowave
geowave-datastore-${keyvalue-datastore}
${geowave.version}


org.locationtech.geowave
geowave-adapter-vector
${geowave.version}


org.locationtech.geowave
geowave-adapter-raster
${geowave.version}


```

Use the libraries available in the `api` package to leverage GeoWave's capabilities (where `` might be `AccumuloRequiredOptions` or `HBaseRequiredOptions` and simple examples of creating the data type and index can be found in `SimpleIngest` within the `examples` directory):
```java
DataStore store = DataStoreFactory.createDataStore();
store.addType(, );
try(Writer writer = store.createWriter()){
//write data
writer.writer();
}

//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](https://locationtech.github.io/geowave/latest/devguide.html#programmatic-api-examples) for more detailed programmatic API examples.

### Command-line Access
Alternatively, you can always use the GeoWave command-line to access the same capabilities:
```bash
# 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 vector query "SELECT * FROM myStore.states"
```
See the [CLI documentation](https://locationtech.github.io/geowave/latest/commands.html) for a full list of commands and their options.

## Some GeoWave rendered eye candy


Geolife data at city scale


Geolife data at block scale


OSM GPX tracks at country scale


See [Example Screenshots](https://locationtech.github.io/geowave/latest/overview.html#example-screenshots) in the GeoWave Overview for more information.

## Supported versions of core libraries

We work to maintain a N and N-1 tested and supported version pace for the following core libraries.

| GeoServer | GeoTools | Accumulo | HBase | Hadoop | Java |
|:---------:|:--------:|:--------:|:-----:|:------:|:----:|
| 2.19.x | 25.x | [1.9.x,2.0.x] | 2.4.x | [2.10.x,3.1.x] | Java8 |

* [Apache Maven](http://maven.apache.org/) 3.x or greater is required for building

## Origin

GeoWave was originally developed at the National Geospatial-Intelligence Agency (NGA) in collaboration with [RadiantBlue Technologies](http://www.radiantblue.com/) (now [Maxar Technologies](https://www.maxar.com/)) and [Booz Allen Hamilton](http://www.boozallen.com/). The software use, modification, and distribution rights are stipulated within the [Apache 2.0](http://www.apache.org/licenses/LICENSE-2.0.html) license.

## Contributing

All pull request contributions to this project will be released under the Apache 2.0 or compatible license. Contributions are welcome and guidelines are provided [here](https://locationtech.github.io/geowave/latest/devguide.html#how-to-contribute).

Did I mention our [documentation!](https://locationtech.github.io/geowave/latest/index.html)