GeoMesa is an open source suite of tools that enables large-scale geospatial querying and analytics on distributed computing systems. GeoMesa provides spatio-temporal indexing on top of the Accumulo, HBase and Cassandra databases for massive storage of point, line, and polygon data. GeoMesa also provides near real time stream processing of spatio-temporal data by layering spatial semantics on top of Apache Kafka. Through GeoServer, GeoMesa facilitates integration with a wide range of existing mapping clients over standard OGC (Open Geospatial Consortium) APIs and protocols such as WFS and WMS. GeoMesa supports Apache Spark for custom distributed geospatial analytics.
GeoMesa is a member of the LocationTech working group of the Eclipse Foundation.
Join the Community
Documentation
- Main documentation
- Upgrade Guide
- Quick Starts: HBase | Accumulo | Cassandra | Kafka | Redis | FileSystem
- Tutorials
Downloads
Current release: 4.0.1
    HBase | Accumulo | Cassandra | Kafka | Redis | FileSystem | PostGIS
Verifying Downloads
Downloads hosted on GitHub include SHA-256 hashes and gpg signatures (.asc files). To verify a download using gpg, import the appropriate key:
$ gpg2 --keyserver hkp://pool.sks-keyservers.net --recv-keys CD24F317
Then verify the file:
$ gpg2 --verify geomesa-accumulo_2.12-4.0.1-bin.tar.gz.asc geomesa-accumulo_2.12-4.0.1-bin.tar.gz
The keys currently used for signing are:
Key ID | Name |
---|---|
CD24F317 |
Emilio Lahr-Vivaz <elahrvivaz(-at-)ccri.com> |
1E679A56 |
James Hughes <jnh5y(-at-)ccri.com> |
Maven Integration
GeoMesa is hosted on Maven Central. To include it as a dependency, add the desired modules, for example:
<dependency>
<groupId>org.locationtech.geomesa</groupId>
<artifactId>geomesa-hbase-datastore_2.12</artifactId>
<version>4.0.1</version>
</dependency>
GeoMesa depends on several third-party libraries that are only available in separate repositories. To include GeoMesa in your project, add the following repositories to your pom:
<repositories>
<!-- geotools -->
<repository>
<id>osgeo</id>
<url>https://repo.osgeo.org/repository/release</url>
</repository>
<!-- confluent -->
<repository>
<id>confluent</id>
<url>https://packages.confluent.io/maven/</url>
</repository>
</repositories>
Nightly Snapshots
Snapshot versions are published nightly to the Eclipse repository:
<repository>
<id>geomesa-snapshots</id>
<url>https://repo.eclipse.org/content/repositories/geomesa-snapshots</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
Spark Runtimes
GeoMesa publishes spark-runtime
JARs for integration with Spark environments like Databricks. These
shaded JARs include all the required dependencies in a single artifact. When importing through Maven, all
transitive dependencies can be excluded. There are Spark runtime JARs available for most of the different
DataStore implementations:
<dependency>
<groupId>org.locationtech.geomesa</groupId>
<artifactId>geomesa-gt-spark-runtime_2.12</artifactId>
<version>4.0.1</version>
<exclusions>
<exclusion>
<!-- if groupId wildcards are not supported, the two main ones are jline:* and org.geotools:* -->
<groupId>*</groupId>
<artifactId>*</artifactId>
</exclusion>
</exclusions>
</dependency>
These JARs are also included in the Downloads bundles, above.
sbt
Integration
Similarly, integration with sbt
is straightforward:
// Add necessary resolvers
resolvers ++= Seq(
"osgeo" at "https://repo.osgeo.org/repository/release",
"confluent" at "https://packages.confluent.io/maven"
)
// Select desired modules
libraryDependencies ++= Seq(
"org.locationtech.geomesa" %% "geomesa-utils" % "4.0.1"
)
Building from Source
Development version: 4.1.0-SNAPSHOT
Requirements:
- Git
- Java JDK 8
- Apache Maven 3.6 or later
- Docker (only required for running unit tests)
Use Git to download the source code. Navigate to the destination directory, then run:
git clone [email protected]:locationtech/geomesa.git
cd geomesa
The project is built using Maven. To build, run:
mvn clean install -DskipTests
The full build takes quite a while. To speed it up, you may use multiple threads (-T 1.5C
).
To run unit tests, omit the -DskipTests
(note: requires docker
to be available).
Build with Bloop Compile Server
GeoMesa also provides experimental support for the Bloop compile server, which provides fast incremental compilation. To export the GeoMesa build to Bloop, run:
./build/bloop-export.sh
For more information on using Bloop, refer to the Bloop documentation.
Build with Zinc Compile Server
GeoMesa also provides experimental support for the Zinc compile server,
which provides fast incremental compilation. However, please note that Zinc is no longer actively maintained.
To use an existing Zinc server, run maven with -Pzinc
. GeoMesa provides a helper script at build/mvn
, which
is a wrapper around Maven that downloads and runs Zinc automatically:
build/mvn clean install -T8 -DskipTests
If the Zinc build fails with an error finding "javac", try setting the JAVA_HOME environment variable to point to the root of your JDK. Example from a Mac:
JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home" build/mvn clean install
Scala Cross Build
To build for a different Scala version (e.g. 2.13), run the following script, then build as normal:
./build/change-scala-version.sh 2.13