Illustration Image

Cassandra.Link

The best knowledge base on Apache Cassandra®

Helping platform leaders, architects, engineers, and operators build scalable real time data platforms.

8/5/2020

Reading time:4 min

locationtech/geowave

by locationtech

AboutContinuous IntegrationLicenseChatGeoWave is an open source set of software that:CapabilitiesAdds multi-dimensional indexing capability to key/value stores (currently Apache Accumulo, Apache HBase, Apache Cassandra, Amazon DynamoDB, Cloud Bigtable, Redis, RocksDB, and Apache Kudu)Adds support for geographic objects and geospatial operators to these storesProvides Map-Reduce input and output formats for distributed processing and analysis of geospatial dataGeospatial software pluginsGeoServer plugin to allow geospatial data in various key/value stores to be shared and visualized via OGC standard servicesBasically, GeoWave is working to bridge geospatial software with modern key/value stores and distributed compute systems.The DocsGeoWave - Latest snapshot documentation homepageGeoWave Overview - Overview of GeoWave's capabilitiesInstallation Guide - Installation instructions for standalone installers and from RPMsQuickstart Guide - A quick demo of GeoWave features using the command-line interfaceUser Guide - A guide for using GeoWave through the command-line interface and GeoServer pluginDeveloper Guide - A guide for developing applications that utilize GeoWaveCommand-Line Interface - Full documentation for the GeoWave CLIChangelog - Changes and features for each of our GitHub releasesThe 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.The SoftwareWe have multi-platform standalone installers for the GeoWave's command-line tools to help get startedThis is often the quickest and easiest way to get started using GeoWave on your own machineWe have a RPM repositoryThis contains various packages including puppet modules, best used for distributed environments.See the Installation Guide for more info.Maven artifacts are available on Maven CentralAnd you can always build from sourceCommunityCommunity support is available on chat and on our mailing list.Getting StartedProgrammatic AccessYou 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.writer(<data>);} //this just queries everythingtry(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.Command-line AccessAlternatively, you can always use the GeoWave command-line to access the same capabilities:# Add a new RocksDB data store called myStore in the current directorygeowave store add -t rocksdb myStore# Add a spatial index called spatialIdx to myStoregeowave index add -t spatial myStore spatialIdx# Ingest a shapefile with states into myStore in the spatialIdx indexgeowave ingest localToGW -f geotools-vector states.shp myStore spatialIdx# Query all the data in the states type from myStoregeowave vector query "SELECT * FROM myStore.states"See the CLI documentation for a full list of commands and their options.Some GeoWave rendered eye candy See Example Screenshots in the GeoWave Overview for more information.Supported versions of core librariesWe work to maintain a N and N-1 tested and supported version pace for the following core libraries.GeoServerGeoToolsAccumuloHBaseHadoopJava2.14.x20.x[1.7.x,1.9.x][1.1.x,1.4.x]2.xJava8Apache Maven 3.x or greater is required for buildingSee our .travis.yml file for the currently tested build matrix.OriginGeoWave was developed at the National Geospatial-Intelligence Agency (NGA) in collaboration with RadiantBlue Technologies (now Maxar Technologies) 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.ContributingAll 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.Did I mention our documentation!

Illustration Image

GeoWave

About

Continuous Integration License Chat
Travis-CI test status License Join the chat at https://gitter.im/locationtech/geowave

GeoWave is an open source set of software that:

  • Capabilities
  • 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 Docs

The Software

  • We have multi-platform 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
    • This contains various packages including puppet modules, best used for distributed environments.
    • See the Installation Guide for more info.
  • Maven artifacts are available on Maven Central
  • And you can always build from source

Community

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):

	<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.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();
  }
}

See the Developer Guide for more detailed programmatic API examples.

Command-line Access

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 vector query "SELECT * FROM myStore.states"

See the CLI documentation 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 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.14.x 20.x [1.7.x,1.9.x] [1.1.x,1.4.x] 2.x Java8
  • Apache Maven 3.x or greater is required for building
  • See our .travis.yml file for the currently tested build matrix.

Origin

GeoWave was developed at the National Geospatial-Intelligence Agency (NGA) in collaboration with RadiantBlue Technologies (now Maxar Technologies) 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.

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.

Did I mention our documentation!

Related Articles

mongo
rest
elasticsearch

GitHub - Erudika/para: Multitenant backend server for building web and mobile apps rapidly. The backend for busy developers. (self-hosted or hosted)

John Doe

1/26/2024

cassandra
bigtable

Checkout Planet Cassandra

Claim Your Free Planet Cassandra Contributor T-shirt!

Make your contribution and score a FREE Planet Cassandra Contributor T-Shirt! 
We value our incredible Cassandra community, and we want to express our gratitude by sending an exclusive Planet Cassandra Contributor T-Shirt you can wear with pride.

Join Our Newsletter!

Sign up below to receive email updates and see what's going on with our company

Explore Related Topics

AllKafkaSparkScyllaSStableKubernetesApiGithubGraphQl

Explore Further

bigtable