Continuous Integration | License | Chat |
---|---|---|
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, AmazonDynamoDB, Cloud BigTable, Redis, and RocksDB)
- 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
Basically, GeoWave is working to bridge geospatial software with modern key-value stores and distributed compute systems.
- Check out our GeoWave io page page for detailed documentation.
- A changelog is available which details the changes and features for each of our github releases
- The underlying principles employed in GeoWave are outlined in recent 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.
- We have a RPM repository
- See Documentation: Installation from RPM for more info.
- Deb packages if enough people request them
- We have Maven artifact repositories (indexes not enabled, but it works in a maven repo fragment)
- Releases: http://geowave-maven.s3-website-us-east-1.amazonaws.com/release
- Snapshots: http://geowave-maven.s3-website-us-east-1.amazonaws.com/snapshot (nightly)
- And you can always build from source
- Community support is available on chat 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 datastore 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>
<repositories>
<repository>
<id>geowave-maven-snapshots</id>
<name>GeoWave AWS Snapshots Repository</name>
<url>http://geowave-maven.s3-website-us-east-1.amazonaws.com/snapshot</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
<repository>
<id>geowave-maven-releases</id>
<name>GeoWave AWS Release Repository</name>
<url>http://geowave-maven.s3-website-us-east-1.amazonaws.com/release</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
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.writer(<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();
}
}
Alternatively, you can always use the GeoWave commandline to access the same capabilities. Install the geowave-$VERSION-apache-tools
RPM as instructed here. Then geowave config addstore ...
and geowave config addindex ...
are used to create named configurations for connecting to a key-value store (addstore) and describing how you want the data indexed (addindex). You can use --help
at any time such as geowave config addstore --help
or furthermore get additional help after specifying the type with -t
such as geowave config addstore -t accumulo --help
to understand accumulo specific parameters. Once you have the indexing and store specified you can use geowave ingest localtogw <file or directory> <store name> <index name(s)>
to ingest data into the key-value store. For the most basic walkthrough with minimal setup, run through the quickstart guide locally using RocksDB.
See Screenshots in the documentation for more information.
We work to maintain a N and N-1 tested and supported version pace for the following core libraries.
Geoserver | Geotools | Accumulo | HBase | Hadoop | PDAL | Mapnik | Java |
---|---|---|---|---|---|---|---|
2.14.x | 20.x | [1.7.x,1.9.x] | [1.1.x,1.4.x] | 2.x | 0.9.9 | 3.x | Java8 |
- Apache Maven 3.x or greater is required for building
- Java Advanced Imaging and Java Image I/O should both be installed on Geoserver for GeoWave versions 0.9.2.1 and below (licensing prohibits us redistributing)
- At the time of writing, Oracle is migrating Java projects around and these links are subject to change. Read the INSTALL files to determine the download file name for different operating systems and architectures. They are stored in the same directory as the INSTALL file. Here are some common download locations.
- Java Advanced Imaging
- Java Image I/O
- See our .travis.yml file for the currently tested build matrix.
GeoWave was developed at the National Geospatial-Intelligence Agency (NGA) in collaboration with RadiantBlue Technologies (Now DigitalGlobe) and Booz Allen Hamilton. The government has "unlimited rights" and is releasing this software to increase the impact of government investments by providing developers with the opportunity to take things in new directions. 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. Software source code previously released under an open source license and then modified by NGA staff is considered a "joint work" (see 17 USC § 101); it is partially copyrighted, partially public domain, and as a whole is protected by the copyrights of the non-government authors and must be released according to the terms of the original open source license.
Did I mention our documentation!