- Add GitHub Actions workflow
- Updates max content length configuration for Akka Http 10.5, allowing for HUC-8 requests
- Upgrades the GeoTrellis library to
3.7.0
, the latest at this time - Upgrade Scala to
2.13
, sbt to1.9.7
- Switch to using
build.sbt
instead ofbuild.scala
- Add
scripts/test
to run black-box tests on running service - NOTE: This is a major version upgrade because of the significant GeoTrellis, Scala, and SBT upgrades, but there are no changes for the service API itself
- Add printing environment variables on startup to better observe the runtime configuration of the service.
- Add RasterGroupedCountMany operation that can take a list of input polygons and returns a list of histograms, for each polygon in order. This is useful for models that have spatial modifications, and need to get results for many of them at once.
- Make application settings overridable by environment variables, so that changing them does not require new releases of the geoprocessing service.
- Increase timeout to 2 minutes, as the new Hi Res Streams can easily exceed the 1 minute limit.
- Update
/multi
endpoint to take the same format of stream data as the/run
endpoint does: a list of MultiLineStrings instead of a single one. Also update existing examples, and add new ones. This is a breaking change.
- Update credentials for Travis to fix deployments
-
Update
/run
and/multi
endpoints to take a set of shapes and a list of rasters with differring extents, such that the spatial keys from one raster may not be available in another one. Previously this would cause a 500 with the following error:java.util.NoSuchElementException: key not found: SpatialKey(66,132)
Now we use an empty tile with NODATA values instead:
"List(21, -2147483648)": 8,
-
Update
/multi
endpoint to take a set of shapes and a MultiLine string of streamLines, such that there may be shapes that do not intersect any of the streamLines at all, and still return results. Previously this would cause a 500 with the following error:java.util.NoSuchElementException: None.get
Now we simply return that operation with an empty object, like so:
"nlcd_streams": {},
-
Add a new
/multi
endpoint that can take a set of shapes, a MultiLine string of streamLines, and a set of operations, to return a result containing all the operations performed for all the shapes. This is useful for the new sub-basin modeling, in which a number of adjacent shapes have to be processed together. Since the most expensive part of this process is fetching the tiles from S3, by fetching them once for the entire set of shapes and reusing the fetched tiles, we reduce the time taken to process a large number of shapes by almost an order of magnitude.This new endpoint supports
RasterGroupedCount
,RasterAverage
,RasterGroupedAverage
, andRasterLinesJoin
. It does not supportRasterSummary
because its output type is different.
- Add RasterSummary operation that, given a shape and a list of rasters, returns the min, avg, and max value for those rasters within that shape.
- Crop lines to area of interest in RasterLinesJoin
- Add optional boolean parameter
pixelIsArea
which can be used to treat the pixels of a raster as an area instead of a point. This is useful when dealing with very large pixels of a low resolution raster and small input polygons.
- Fetch tiles via Futures to parallelize IO
- Add RasterLinesJoin geoprocessing operation
- Add RasterGroupedCount and RasterGroupedAverage geoprocessing operations
- Create an Akka HTTP server project in preparation for using the GeoTrellis collections API and removing Spark Job Server.
- Standardize incoming geometries to
MapshedJob
, to account for any subtle geometric errors when supplying multiple, closely overlapping polygons. This does not change the output of any existing successful operations.
- Update GitHub OAuth token for JAR publishing.
- GeoTrellis S3 catalog has been changed to
datahub-catalogs-us-east-1
. - Update Kryo registrator in default configuration.
- BREAKING CHANGE
RasterJoin
has been renamed toRasterGroupedCount
to better match other similar new operations. - Add
RasterGroupedSum
operation which takes a polygon, a set of rasters, and a target raster, and returns the sum of value of the target raster, grouped by the values of the list of rasters, clipped to the polygon. - Add
RasterGroupedAverage
operation which takes a polygon, a set of rasters, and a target raster, and returns the average of the target raster, grouped by the values of the list of rasters, clipped to the polygon. If this endpoint is given an empty list of rasters, it will perform an ungrouped average over the entirety of the target raster clipped to the polygon.
- Add
MapshedJob
class to handle requests for MapShed. This class supports three kinds of operations:RasterLinesJoin
: This operation takes a polygon, a set of vectors, and a set of rasters, and returns a histogram containing tuples of raster values mapped to the count of vector cells intersecting them. Under the hood this builds an R-Tree to bucket vectors into tile extents before matching them with the individual tiles. We construct an RDD from this R-Tree and process the intersection parallely.RasterLinesJoinSequential
: This operation performs the same task as the previous one, but under the hood it does not convert the R-Tree to an RDD, performing the task sequentially instead. These two methods exist so that the client may choose which implementation to use, given the constraints of input and infrastructure.RasterJoin
: This operation takes a polygon and a set of rasters, and returns a histogram containing tuples of raster values mapped to the count of polygon cells intersecting them. This does not construct an R-Tree since the number of polygons and rasters is much smaller than the number of vectors in the input.
- Update GeoTrellis dependency to
0.10.0
- Update GeoTrellis dependency to
0.10.0-177004b
. - Update default Spark (
1.5.2
) and Spark Job Server (0.6.1
) dependencies.
- Make soil type 'C', instead of 'B', the default value when data is missing.
- Functionally equivalent to
0.3.0
. Version bump was to deal with git flow release issues.
- The section about building Geotrellis locally has been removed from the README.
- The repository from which the GDAL dependency is pulled has been changed.
- The code has been updated to support the new soil and NLCD tiles.
- Only download tiles once for every (multi)polygon in the input list.
- Functionally equivalent to
0.1.0
. Version bump was to deal with Travis CI release issues.
- Initial release.