Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add timesequence param for WCS GetCoverage requests #226

Merged
merged 1 commit into from
Mar 10, 2020

Conversation

CloudNiner
Copy link
Contributor

@CloudNiner CloudNiner commented Mar 2, 2020

Overview

This PR adds basic temporal support for querying a single TimeInterval or TimePeriod for a given WCS layer. The spec supports querying over multiple intervals or periods but that's not really compatible with GT server currently returning a single raster for all GetCoverage requests. I opened #225 to address expanded temporal querying in the future.

Before calling this issue complete, I think we should still address the following:

  • Generate or find a simple GeoTrellis layer with a temporal component that we can use for testing Generated and a note added to GeoTrellisRasterSource temporal build improvements #219. Further work to improve performance will happen there.
  • Figure out how to get QGIS to include the temporal component when configured to render WCS layers Looks to be not trivial. New issue created in our private team repo due to client specific concerns since it doesn't look like QGIS doesn't natively support temporal params on WCS layers.

Checklist

  • Description of PR is in an appropriate section of the CHANGELOG and grouped with similar changes if possible

Demo

I again used the same LOCA RCP 85 climate data layer I used in #223 which has daily slices for one year.

GetCoverage request with a TimePeriod param timesequence=2020-01-01T00:00:00Z correctly filters to a single source available in the layer:
Screen Shot 2020-03-02 at 3 43 53 PM

GetCoverage request with a TimeInterval param TIMESEQUENCE=2020-01-15T00:00:00Z/2020-02-15T00:00:00Z correctly filters to the 31 slices valid during that range:
Screen Shot 2020-03-02 at 4 17 55 PM

Testing Instructions

Configure the same layer as in #223 (LOCA RCP85) and issue a GetCoverage request that includes the timesequence parameter such as:

http://localhost:9000/?SERVICE=WCS&VERSION=1.1.1&REQUEST=GetCoverage&FORMAT=image/geotiff&IDENTIFIER=loca-rcp85&TIMESEQUENCE=2020-01-01T00:00:00Z&BOUNDINGBOX=38.63767820773930595%2C-96.15608740894901985%2C38.76232179226069974%2C-95.84391259105098015%2Curn%3Aogc%3Adef%3Acrs%3AEPSG%3A%3A4326&GRIDBASECRS=urn%3Aogc%3Adef%3Acrs%3AEPSG%3A%3A4326&GRIDCS=urn%3Aogc%3Adef%3Acs%3AOGC%3A0.0%3AGrid2dSquareCS&GRIDTYPE=urn%3Aogc%3Adef%3Amethod%3AWCS%3A1.1%3A2dSimpleGrid&GRIDORIGIN=38.76232179226069974%2C-96.15608740894901985&GRIDOFFSETS=-0.06232179226069453%2C0.0624349635796051

This particular layer will timeout attempting to serve the query as it requires pulling a large sum of data across a tiled data source. 😞 I still haven't constructed or found a good test layer that includes a temporal dimension.

Closes #157

@pomadchin pomadchin changed the title [WIP] Add timesequence param for WCS GetCoverage requests Add timesequence param for WCS GetCoverage requests Mar 3, 2020
Copy link
Member

@pomadchin pomadchin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM in general, though left a couple of questions about the codebase.

P.S. also there is no CHANGELOG (mentioning it here mostly for myself, since we already forgot to update it in a couple of PRs)

@pomadchin pomadchin assigned CloudNiner and unassigned pomadchin Mar 3, 2020
@CloudNiner CloudNiner force-pushed the feature/awf/temporal-get-coverage#157 branch from b610229 to f457b74 Compare March 3, 2020 19:55
Copy link
Member

@pomadchin pomadchin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM but one minor import thing and no CHANGELOG!

Request a temporal slice from a layer using
the GET param `timesequence` with date times
conforming to the OgcTimeInterval case class.
See OgcTimeInterval scala doc for examples.
@CloudNiner CloudNiner force-pushed the feature/awf/temporal-get-coverage#157 branch from f457b74 to afabc57 Compare March 9, 2020 15:21
@CloudNiner
Copy link
Contributor Author

@pomadchin CHANGELOG added and commit history cleaned up

Copy link
Member

@pomadchin pomadchin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM! Thanks!

@pomadchin pomadchin merged commit 4c0fb79 into develop Mar 10, 2020
@pomadchin pomadchin deleted the feature/awf/temporal-get-coverage#157 branch March 10, 2020 18:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Add TimeSequence parameter support to GetCoverage request
2 participants