GitHub is home to over 40 million developers working together to host and review code, manage projects, and build software together. If nothing happens, download GitHub Desktop and try again. If nothing happens, download Xcode and try again. If nothing happens, download the GitHub extension for Visual Studio and try again. GeoTrellis is a Scala library and framework that provides APIs for reading, writing and operating on geospatial raster and vector data. GeoTrellis also provides helpers for these same operations in Spark and for performing MapAlgebra operations on rasters.
It is released under the Apache 2 License. Please visit the project site for more information as well as some interactive demos.
You're also welcome to ask questions and talk to developers let us know what you're working on! If you are just getting started with GeoTrellis, we recommend familiarizing yourself with the geotrellis-raster package, but it is just one of the many available.
The complete list of published GeoTrellis packages includes:. A more complete feature list can be found on the Module Hierarchy page of the GeoTrellis documentation. If you're looking for a specific feature or operation, we suggest searching there or reaching out on Gitter. For older releases, check the complete list of packages and versions available at locationtech-releases. Scaladocs for the the master branch are available here. Feedback and contributions to the project, no matter what kind, are always very welcome.
A CLA is required for contribution, see Contributing for more information. Please refer to the Scala style guide for formatting patches to the codebase.
In the process of moving our repository, we went through an IP review process. Because the Eclipse foundation only reviews a snapshot of the repository, and not all of history, we had to start from a clean master branch. Unfortunately, we lost our commit and contributor count in the move. These are significant statistics for a repository, and our current counts make us look younger than we are.
GeoTrellis has been an open source project since This is the first official release that supports working with Apache Spark, and we are very pleased with the results that have come out of the decision to support Spark as our main distributed processing engine.
Those of you who have been tuned in for a while know we started with a custom built processing engine based on Akka actors; this original execution engine still exists in 0. Instead I put together a list of features that GeoTrellis 0. It is organized by subproject, with more basic and core subprojects higher in the list, and the subprojects that rely on that core functionality later in the list, along with a high level description of each subproject.
Save and load layers to and from Casandra. Query large layers efficiently using the layer query API. Home Changelog 1. See them here. Minor Additions Documentation improvements Quickstart Examples Added example for translating from SpaceTimeKey to SpatialKey doc-examples subproject; example for tiling to GeoTiff Added example for focal operation on multiband layer.
Translate CRSs to and from proj4 string representations. Transform x, y coordinates from one CRS to another. Provides a Feature type that is the composition of a geometry and a generic data type. Reproject geometries between two CRSs. Perform affine transformations of geometries geotrellis-vector-testkit GeometryBuilder for building test geometries GeometryMatcher for scalatest unit tests, which aides in testing equality in geometries with an optional threshold.
Treat a tile as a collection of values, by calling "map" and "foreach", along with floating point valued versions of those methods separated out for performance. Combine raster data in generic ways. Reproject rasters from one CRS to another. Resample of raster data. Mask and Crop rasters.
Split rasters into smaller tiles, and stitch tiles into larger rasters. Derive histograms from rasters in order to represent the distribution of values and create quantile breaks.
Cost distance operation based on a set of starting points and a friction raster. Hydrology operations: Accumulation, Fill, and FlowDirection. Rasterization of geometries and the ability to iterate over cell values covered by geometries. Vectorization of raster data. Kriging Interpolation of point data into rasters.
Viewshed operation. RegionGroup operation. Assert raster data matches Array data or other rasters in scalatest. Represent spatial or spatiotemporal raster data as an RDD of raster tiles. HDFS and local file system are supported backends by default, S3 and Accumulo are supported backends by the geotrellis-s3 and geotrellis-accumulo projects, respectively.Geographical Information Systems GISlike any specialized field, has a wealth of jargon and unique concepts.
When represented in software, these concepts can sometimes be skewed or expanded from their original forms. We give a thorough definition of many of the core concepts here, while referencing the Geotrellis objects and source files backing them. This document aims to be informative to new and experienced GIS users alike. If GIS is brand, brand new to you, this document is a useful high level overview.
Dana Tomlin. The entire purpose of geotrellis.
In GeoTrellis, a raster is just a tile with an associated extent read about extents below. A tile is just a two-dimensional, collection of evenly spaced data. Tiles are a lot like certain sequences of sequences this array of arrays is like a 3x3 tile :. In the raster module of GeoTrellis, the base type of tile is just Tile. All GeoTrellis compatible tiles will have inherited from that base class, so if you find yourself wondering what a given type of tile's powers are, that's a decent place to start your search.
Here's an incomplete list of the types of things on offer Seriously, check out the source code! It will clarify the semantics of tiles in GeoTrellis. As we've already discussed, tiles are made up of squares which contain values.Finding priority areas for restoration across a watershed - Azavea Summer of Maps Project Overview
We'll sometimes refer to these value-boxes as 'cells'. And, just like cells in the body, though they are discrete units, they're most interesting when looked at from a more holistic perspective - rasters encode relations between values in a uniform space and it is usually these relations which most interest us.
The code found in the mapalgebra submodule — discussed later in this document — is all about exploiting these spatial relations. One of the first questions you'll ask yourself when working with GeoTrellis is what kinds of representation best model the domain you're dealing with. What types of value do you need your raster to hold? This question is the province of GeoTrellis CellType s. See below for a description of Cell Types. With a grasp of tiles and CellType s, we've got all the conceptual tools necessary to construct our own tiles.
Now, since a tile is a combination of a CellType with which its cells are encoded and their spatial arrangement, we will have to somehow combine Tile which encodes our expectations about how cells sit with respect to one another and the datatype of our choosing.
Luckily, GeoTrellis has done this for us. To keep its users sane, the wise maintainers of GeoTrellis have organized geotrellis.
Let's explore that inheritance so that you will know where to look when your intuitions lead you astray:. Let's first look at what they share:. That wraps up one half of the inheritance. But how about that the features they don't share? As it turns out, each reified tile's second piece of inheritance merely implements methods for dealing with their constitutent CellType s. From IntBasedArrayTile. Mostly we've been looking to tiny snippets of source, but the two above are the entire files.
All they do is:. As it turns out, CellType is one of those things that we can mostly ignore once we've settled on which one is proper for our domain. After all, it appears as though there's very little difference between tiles that prefer int-like things and tiles that prefer double-like things. In effect, this means that you'll want to be careful when querying values. If you're working with int-like CellType s, probably use get. If you're working with float-like CellType s, usually you'll want getDouble.
That's probably enough to get started.GitHub is home to over 40 million developers working together to host and review code, manage projects, and build software together. If nothing happens, download GitHub Desktop and try again. If nothing happens, download Xcode and try again. If nothing happens, download the GitHub extension for Visual Studio and try again. GeoTrellis is a Scala library and framework that uses Spark to work with raster data.
It is released under the Apache 2 License. GeoTrellis reads, writes, and operates on raster data as fast as possible. It implements many Map Algebra operations as well as vector to raster or raster to vector operations. It aims to provide raster processing at web speeds sub-second or less with RESTful endpoints as well as provide fast batch processing of large raster data sets.
Please visit the project site for more information as well as some interactive demos.
GeoPySpark can be integrated with other tools in the Python ecosystem, such as NumPy, scikit-learn, and Jupyter notebooks. Several GeoPySpark tutorials have been developed that leverage the visualization capability of GeoNotebookan open-source Jupyter extension that provides interactive map displays. Here are a list of our published submodules:. In the process of moving our repository, we went through an IP review process. Because the Eclipse foundation only reviews a snapshot of the repository, and not all of history, we had to start from a clean master branch.
You can also tie your local clone's master history to the old history by running. This will allow you to see the old history for commands like git log. Unfortunately, we lost our commit and contributor count in the move. These are significant statistics for a repository, and our current counts make us look younger than we are. GeoTrellis has been an open source project since This is what our contributor and commit count looked like before the move to LocationTech:. Along with counts, we want to make sure that all the awesome people who contributed to GeoTrellis before the LocationTech move can still be credited on a contributors page.GitHub is home to over 40 million developers working together to host and review code, manage projects, and build software together.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community. Already on GitHub? Sign in to your account. Closes Adding a unit test for this revealed another missing implicit which is added here. The mutability remains an important optimization specifically in the RDD case where it allows using a tile as an accumulator when multiple source tiles contribute pixels during the reproject operation without allocating memory for each intermediate result.
Hopefully expanded documentation is enough to steer users in the right direction and use this feature responsibly. These could be DRYied out with single-band case, but might as well include the most specific version with the least conditionals.
Backported to 2. Skip to content.
Dismiss Join GitHub today GitHub is home to over 40 million developers working together to host and review code, manage projects, and build software together. Sign up. New issue. Conversation 4 Commits 6 Checks 0 Files changed. Copy link Quote reply.
View changes. Sign in to view. Raster MultibandTile bandsbufferRE. RasterRegionReproject works with TileFeature. Clarify Tile. Update changelog [skip-ci]. Fix a typo in the code. This commit was signed with a verified signature. Pass errorThreshold to RasterRegionReproject …. Added overload methods to keep API compatability with 2. Hide details View details echeipesh merged commit b9e into locationtech : master Sep 15, 2 checks passed. This comment has been minimized. Sign up for free to join this conversation on GitHub.
Already have an account? Sign in to comment. Linked issues. Add this suggestion to a batch that can be applied as a single commit. This suggestion is invalid because no changes were made to the code.Geographical Information Systems GISlike any specialized field, has a wealth of jargon and unique concepts. When represented in software, these concepts can sometimes be skewed or expanded from their original forms.
We give a thorough definition of many of the core concepts here, while referencing the Geotrellis objects and source files backing them. This document aims to be informative to new and experienced GIS users alike. If GIS is brand, brand new to you, this document is a useful high level overview.
The following is a non-exhaustive list of fundamental terms and their definitions that are important to understanding the function of Geotrellis.
These definitions will be expanded upon in other sections of this document. The fundamental components of the Geotrellis system are rasters and vectors. Rasters are 2-dimensional, discrete grids of numerical data, much like matrices.
Vectors are 2- or sometimes 3- dimensional collections of points that are connected together to form piecewise linear linestrings, polygons, and other compound structures.
Geotrellis is also tied to geographical application domains, and so these fundamental objects can be placed in a geographical context.
Specifically, we can ascribe projections to the points in a geometry, and we can apply an extent to raster data to indicate the position and scope of the raster data. Geotrellis provides a number of operations on these basic data types.
One may reproject, resample, crop, merge, combine, and render raster data; vector data may be manipulated in some limited ways, but is mostly used to generate raster data. High resolution imagery on global, national, regional, or even local levels depending on just how high of a resolution is used is big. Thus, Geotrellis provides the means to use rasters and vectors in a distributed context using Apache Spark.
To distribute data, it is necessary to supply some structure over which we can organize smaller units of raster or vector data. Geotrellis leans on the LayoutDefinition class to provide this structure. The idea is that a region on the globe is specified along with a projectionand a regular, rectangular grid is overlaid on that region.
Each grid cell is given a spatial key, and so it is possible to associate a raster or vector to a given grid cell. Note that we may also use keys with a temporal component.
This induces a tiled representation of an arbitrarily large layer of data. Geotrellis provides utilities for coercing data into this gridded representation, for manipulating data within a tiled layer, and for storing processed layers to a variety of backends.
Find implementations of these features in this package:. Computations over large data are time consuming, so storage of results is important.Try adjusting the weights below to find your ideal location. If you want to avoid rail stops, give them a negative weight. If you prefer bars, give them a positive weight. The GeoTrellis hillshade operation computes the illumination angle and shadows of a surface given a light source.
Try adjusting the position or altitude of the sun. GeoTrellis provides data types for working with rasters in the Scala language, as well as fast reading and writing of these data types to disk.
GeoTrellis includes a set of utilities to help developers create useful, high performing web services that load and manipulate raster data. There are million building footprints in Bing and 33 million in OpenStreetMap. Trees provide countless economic, social, and environmental benefits. Discover optimal tree planting locations based on environmental and demographic data.
Think GeoTrellis could help your organization, but not sure where to start? Documentation GitHub. In action Weighted overlay Try adjusting the weights below to find your ideal location. Grocery stores. Rail stops. In action Hillshade The GeoTrellis hillshade operation computes the illumination angle and shadows of a surface given a light source. Avoid Prefer. GeoTrellis is a geographic data processing engine for high performance applications.
Web Service Utilities GeoTrellis includes a set of utilities to help developers create useful, high performing web services that load and manipulate raster data.
See demo. Visualizing dataset discrepancies There are million building footprints in Bing and 33 million in OpenStreetMap. Identifying the best place to plant a tree Trees provide countless economic, social, and environmental benefits.
Model My Watershed. Raster Foundry. Contact us.