-
Notifications
You must be signed in to change notification settings - Fork 13
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
Remarks around latest draft #185
Comments
Thanks so much for the deep dive @m-mohr . I tried go through all these points with the necessary amount of detailed explanation. We should see whether we need to split some of these into separate issues, add comments to existing issues and what needs to be fixed/clarified/improved in the spec.
Granted that this distinction might not be super clear, but these link relations are inherited from Features and Tiles, respectively.
Thanks for spotting that, I guess I did not realize that RFC 3339 does not seem to cover time period at all. The intent was to follow the same syntax as the
Will fix that, thanks. I'm also wondering if we should make that a SHOULD rather than a SHALL, since now we have the semantic
They could technically come from anywhere, but I've found QUDT most helpful as an ontology so far: https://www.qudt.org/pages/QUDToverviewPage.html e.g., the QuantityKind
They are not restricted, but so far we've done examples with UCUM and QUDT.
We'll clarify the language, but this is the concept of Uniform Additional Dimensions defined in a requirement class of Common. They are the dimensions other than the primary temporal dimension and the 2 or 3 spatial dimensions. Yes, air pressure is the typical example.
I have some example here: 2D elevation: https://maps.gnosis.earth/ogcapi/collections/SRTM_ViewFinderPanorama?f=json 2D + time + pressure: https://maps.gnosis.earth/ogcapi/collections/climate:cmip5:byPressureLevel:windSpeed?f=json The unit should not be inside the resolution property, but implied from the dimension CRS for the spatial dimension, the It would be OK to have the bands on a dimension (considering them an axis of the domain rather than different fields of the range) however, it makes more sense for hyperspectral data. With the typical LANDSAT or sentinel-2 datasets, we implement them as fields of the range. Our visualization client tools right now would struggle a lot with the bands as a dimension, not able to do much with it. It would be interesting to ask others in the group about how they can handle the data organized one way or the other.
Are you talking about The The
Yes they are top-level. The
For coverage fields, this would be the order in which these fields come by default (when not using
The https://docs.ogc.org/is/19-072/19-072.html#_56682cbf-76dc-4c75-a266-a58186d638aa From the API landing page, there's a link relation
Correct. Considering that a lot more clients are being developed than servers, and that OGC APIs are intended for users to play with directly in their browser, requiring both option from the server introduces a very small burden for server implementors (who can simply map both syntaxes to their implementation), while providing the flexibility for clients and users to pick their favorite options.
No, the
This entire situation is very thorny and there are unfortunately no simple solution. To summarize, there is a fixed list of axis names for spatial and temporal dimension that all deployments need to support + a list of recommended equivalent axis names to ease the pain of those who may be suffering from axis confusion (whether from a fault of their own or their client's). This is consistent across OGC API - Coverages, OGC API - Maps, and OGC API - DGGS and makes the extent description consistent with OGC API - Features and Common as well, so that you can access the same collection of data from one or more OGC API data access mechanisms.
Yes the
We could probably clarify that but that refers to the
With this requirement class, providing a WKT1/2 or PROJJSON is not an option. The Permission 6 is to allow for servers to be compatible with the WxS syntax e.g., A future or vendor extension or some CRUD extension might allow a client to provide an arbitrary CRS defined in WKT or PROJJSON or the future PROJ CRS derivative, but this is way beyond the scope of Coverages - Part 1.
There are multiple use cases for the Scenes requirement classes, which all fit nicely together:
You could implement both the Scenes requirement class at The Scene requirement class re-uses the same query parameters as Records (many of which shared with the STAC API) and works together with the STAC item / collection media type for the list of scenes at
The OGC API - Coverages "Scenes" requirement class integrates with STAC and Records in two ways:
|
I won't be able to answer in detail today, but thanks for all the details. I think most of that should be clarified in the spec in the end. But to avoid that I forget that detail:
Also not allowed in RFC3339, so I'd need to provide 2020-01-01T00:00:00Z / 2020-12-31T23:59:59Z, I guess. |
Agreed -- if it was not clear in the first read, there's room for improvement. PRs welcome ;) A big part of the challenges is trying to keep things consistent across the data access APIs and with OGC API - Common, though I believe that we are really almost there now.
Thanks for clarifying that. I was always a bit confused about that because section 5.6 defines a grammar but does not very clearly indicate that only I would tend to agree that this syntax with time is quite cumbersome when dealing with daily, monthly or yearly time series, and the server should at least be allowed to interpret shorter client requests, so that users can easily tweak parameters directly in the browser. Our server does support shorter syntaxes, and our client may also be sending out these shorter requests in some cases. We should probably discuss / clarify this. ISO8601 is quite complicated, so RFC 3339 is nice as a simpler subset, but it might be a bit too strict in this aspect. |
If someone could help me in understanding this: The problem I see is that it is neglected that all these 'time' expressions are intervals. A millisecond is still an interval! If we define that a time interval is used to represent only its starting point, then a full calender year (in this case 2021) is to be denoted as 2021-01-01/2022-01-01 or simpler 2021/2022 of course it would be even simpler if we would just agree to see time related terms as what they really are: intervals! Then 2021 is all you'd need to state! |
Maybe that helps: |
I'd say that is one second short of the full year! In this case it should read: 2020-01-01T00:00:00Z / 2021-01-01T00:00:00Z |
@strobpr I agree that 2020-01-01T00:00:00Z / 2021-01-01T00:00:00Z makes more sense. More obvious if we write it as Maybe we should clarify this. |
I believe we should. Honestly I don't think it makes much sense to treat the expressions we use for time as 'instants', in the meaning of 'points in time'. We should acknowledge that all (non-mathematical) ways to address time are not dimensionless and therefore to be understood as tesselations of the time dimension. Then we can agree to directly use them as intervals and eventually build a useful hierarchical order in different granularity levels where all intervals have an appropriate index that uniquely describes their duration and place in the continuum. I did something like that soem 20 years ago and it looked like that: <style> </style>
Unfortunately no one in my surrounding found it very useful, so it didn't see much application beyond my own stuff. Update 20240731: three weeks after I wrote this we looked into harmonising time interval encodings for Copernicus Land Service filenames. For that we need a short and unique identifier for hourly, daily, 10-daily, monthly, and yearly products. I reworked the table to propose some solutions. Would be interested if there are any better standards out here? ISO period encoding does not work as '/' are obviously unsuited for filenames, and one always has to specify offset and length of the interval which leaves many possibilities for errors. |
@strobpr The workplan (that is an exaggerated term) for the Temporal DWG is to register a Temporal CRS that could address most of the above examples: T-10, T-9, T-8, ... T-1, Zero! T+1, ... "Count Down" or "Count Up",. It is an indexed grid TCRS. Exactly like imagery, indication of centre-point or edge-point (the "cell-method") is also needed. Then you do not have to follow an ISO8601 like syntax. |
@chris-little for moving targets like forecasts a flexible and relative indexing is certainly the first choice. However when it comes to ex-post (after observation) aggregation (or binning) of parameters, pre-defined, fixed intervals are better for interoperability. The beauty of a fixed grid would be that the intervals are not only equal length but also congruent (always the same beginning and end). Just as in spatial grids based on different CRS, arbitrary size and variable offsets ruin all interoperability, time discretisation would benefit if we could agree on a set of fixed intervals. Has the temporal DWG looked into that? |
@strobpr |
@chris-little Sorry for coming back with some delay. The concept of discrete (fixed and indexed), but also hierarchical (multi-level) grid systems is crucial for better interoperability (and in my opinion the basis of any kind of data cubing worth the name). The most consistent and complete description of this concept that I know of is the OGC's AS Topic21 . Can you link to the mentioned names (@pierocampa?) and efforts? It's a pity this central discussion is so widely dispersed. |
@strobpr Piero used to be the co-chair of the OGC Temporal DWG. I have now found out where he works now, but I also have his original PowerPoint presentation, so will use that to take this forward in the Temporal DWG and the Naming Authority. |
That's great, Chris, and sorry for the again late response, I have been traveling the last 2 months. Please keep me posted here about any progress! |
I'm reading through v0.0.7 of Coverages for the first time. Here are the questions that came up while reading it:
http://www.opengis.net/def/rel/ogc/1.0/geodata
andhttp://www.opengis.net/def/rel/ogc/1.0/data
?unitLang
? Can I use UDUNITS2? If not predefined, this will not be very interoperable. What is UCUM? (I googled it, but it wouldn't hurt to add a link.)grid: {cellsCount: 123, resolution: "1m"}
(regular) orgrid: {coordinates: ["B1", "B2", "B5"]}
(irregular)?{type: ...}
Or are they part of an object schema?{type: object, properties: {type: ...}}
I didn't read chapter 12, because Coverage Tiles etc. were not relevant for me at this point.
The text was updated successfully, but these errors were encountered: