-
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
Split subset and datetime/bbox #194
Comments
Sorry I was confusing Making them separate requirements classes would really defeat the purpose: the intent is that a client can always reliably use one or the other if subsetting is supported.
|
I don't understand why that would defeat the purpose (of what?) Not sure whether it's better if I throw a 501 NotImplemented for subset just because someone randomly decided to put them in one conformance class. |
Throw a 501 with a Not Implemented message until you have a chance to parse the |
So throwing a 501 would be valid according to the spec? I actually don't plan to implement subset because for my case it doesn't offer anything on top of datetime/bbox (just having spatial and temporal dimensions). |
It would not pass the compliance tests, but hopefully you will be bored one afternoon between now and the time when the ETS is ready to test your implementation, and you'll be able to implement the plumbing to re-reroute the subset request to your bbox / datetime implementation ;) For the Testbed 20 TIEs, we can make sure the clients use whichever method you have implemented, if you don't have time or want to focus on other things before implementing
|
I don't say it should be removed, I just ask that there are two conformance classes, one for subset, one for datetime+bbox. |
@m-mohr As I explained, so that clients can reliably use one or the other.
A separate conformance class should provide different capability. If the convenience is only available in some implementations, it's not a convenience, it's a hindrance. |
100% disagree. Why is it less reliable if they are split into two conformance classes? You can determine by the conformance classes which are available and can be used. It rather feels LESS reliable if they are in one conformance class if that leads to 501's or implementation that don't report the conformance class because they only implement parts of it.
Can you point me to where this OGC policy is written? I don't think this is a thing as it's not followed by various specs, e.g. OGC API - Processes. |
As an aside, 501 is almost never an appropriate response. According to HTTP Semantics:
So, if the server returns 501 on a GET request, the server states that it does not recognize the GET method for any resource. |
Not sure this helps. My take is that good practice (and the ModSpec) suggest that each requirements class and associated conformance test class have a constrained set of related and testable properties - such as one requirements class for specifying a horizontal CRS and one requirements class for specifying a vertical CRS. Mixing those two together into one requirements class causes confusion and probably many test failures. Many implementations only care about horizontal CRS and not vertical CRS. Hence, better to separate. The ModSpec does provide requirements and guidance. For example, Req5: All conformance tests in a single conformance test class in a conformant standard SHALL have the same standardization target. And Req1: All the parts of a requirement, a requirements module, or requirements class SHALL be testable. Failure to pass any part of any requirement shall be a failure to pass the associated conformance test class. And various Requirements state: A standard may have mandatory and optional requirements classes. This allows the options in the testing procedure to be grouped into non-varying mandatory and optional conformance classes. Each requirement within an optional requirements class is mandatory when that requirements class is implemented. When needed, a particular requirements class may contain only a single requirement. |
@cnreediii If you apply that to this issue, what would that mean (in your opinion)? I'm not sure I can really follow and conclude on something based on your message... |
@m-mohr I am saying "I'd propose to split subset and datetime/bbox" I would also say any requirement that has A-Q "sub" requirements is waaay too long and complex! |
Clients can choose to use only one of So that would be forcing the client instead to implement both, complicating the development of clients at the cost of making it a bit easier for implementing subsetting on the server side.
Implementations should support both, so a conforming implementation should not be returning a 501.
I am understanding this as @cportele saying it would be better to return a 400 for an unsupported parameter until it is implemented.
I don't think that's an OGC policy, but it is a design principle which makes a lot of sense to me, for the reasons stated above. The same
http://www.opengis.net/spec/ogcapi-tiles-1/1.0/req/datetime
https://www.opengis.net/spec/ogcapi-maps-1/1.0/req/datetime Spatial subsetting ( https://www.opengis.net/spec/ogcapi-maps-1/1.0/req/spatial-subsetting There is no spatial subsetting in Tiles, since the 2DTMS row/column already takes care of that. There is also general subsetting in Maps: https://www.opengis.net/spec/ogcapi-maps-1/1.0/req/general-subsetting which is through the I am still very strongly opposed to the idea of splitting the convenience parameter Regarding @cnreediii 's comment about:
There are actually not separate CRS in the spatial subsetting requirement classes, perhaps with the exception of EDR.
Regarding the extra atmospheric pressure levels, after much discussion (e.g., opengeospatial/NamingAuthority#228 ) the decision was that this is completely separate from the CRS and fits within the general subsetting mechanism. I would personally have less of an issue with splitting the subsetting requirements class into "temporal subsetting", "spatial subsetting" and "general subsetting" (than splitting the convenience parameters), as it is in OGC API - Maps. I'm not sure whether others in the Coverages community would be happy with this though, since in general there is a strong desire to keep the nature of coverage dimensions arbitrary.
This split would help with that. As an implementer, I personally find it much easier to have all related aspects of one parameter within the same requirements (to the extent that this is practical), than having to look through multiple requirements to see whether it is related to the same parameter. A-Q are all about the |
Well, then my conclusion from this is that there shouldn't be two options for simplicity but just one, I.e. remove datetime/bbox. If you expect any clients, no convenience options are required to. The same applies for scaling where se options pretty much do the same. My general impression ist that Coverages Core is more difficult than it needs to be (which somewhat disqualifies it from being the basis for GDC). |
@m-mohr The reason In Maps and Tiles, we did the opposite, add It means a little extra work on the server side, allowing clients to pick their favorite way. It's really not that difficult to parse both parameters. We've discussed all this over a period of 4+ years (for example see #152), and as was brought up at the meeting on Wednesday, we have really been hoping to achieve a stable API rather than going back over decisions taken a long time ago when we had a stronger regular attendance to SWG meetings, and pulling the API in different directions. The consistency with the other OGC APIs (Maps, Tiles) should also be considered. |
Okay fair with regards to the removal. I don't see any discussion on splitting into two conformance classes in that issue though. |
@m-mohr I meant we had lengthy discussions about whether to add e.g., #58 (comment) from Feb 2020
|
I don't really see any discussions about splitting into two conformance classes though. Anyway, I'll shup up now,, seems to be a waste of time to get involved here. |
Entertaining discussion and good points from all parties. Not waste of time at all. For my mind what is best in WCS 2.0 is just explicit subsets |
Thanks for chiming in @jratike80. Maps does support both, as do Zone Queries in OGC API - DGGS. |
We discussed this issue in the OGC API track Coverages SWG session in Goyang on November 6, 2024 and there was a general agreement that we primarilty want to make life easier for the clients. Some informative guidance as to how to map the different convenient parameters to more general ones should also be provided to make it easier for servers to support them all. |
SWG meeting 2024-11-27 Resolution:
|
Agreeing with the latter statement, in the OWS set of API standards an unsupported parameter is ignored, and the service responds according to the supplied supported parameters. This allows for extensibility |
While it is very easy to support datetime and bbox (usually), it is much more work to actually implement subset with it A-Q(!) requirements. I'd propose to split subset and datetime/bbox into separate conformance classes to allow for an easy entry path.
The text was updated successfully, but these errors were encountered: