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 CITE setup for Tiles #1728

Open
3 of 4 tasks
tomkralidis opened this issue Jul 16, 2024 · 10 comments
Open
3 of 4 tasks

add CITE setup for Tiles #1728

tomkralidis opened this issue Jul 16, 2024 · 10 comments
Assignees
Labels
enhancement New feature or request OGC API - Tiles OGC API - Tiles
Milestone

Comments

@tomkralidis
Copy link
Member

tomkralidis commented Jul 16, 2024

Our CITE configuration defines all standards which we support/are compliant to/are an RI for. We need to add an appropriate setup for OGC API - Tiles (perhaps https://github.com/geopython/demo.pygeoapi.io/blob/master/services/pygeoapi_master/local.config.yml#L128-L164).

@tomkralidis
Copy link
Member Author

@doublebyte1 for review:

@doublebyte1
Copy link
Contributor

I think we need to wait for the CITE team to sort out this issue: opengeospatial/ets-ogcapi-tiles10#28

tomkralidis added a commit that referenced this issue Jul 21, 2024
@tomkralidis
Copy link
Member Author

@doublebyte1 @PascalLike I tested both https://demo.pygeoapi.io/cite and a local pygeoapi build (based on the setup / instructions documented in https://github.com/geopython/pygeoapi/wiki/OGCCompliance), against a local master branch build of the OGC API - Tiles ETS with the following (2) failures:

Conformance class: Core: Requirement 5A states that a successful execution of the tile operation with content SHALL be reported as a response with an HTTP status code 200. However the respose code was 404.

Conformance Class: Dataset Tilesets: Requirement 11 states that if the API has a mechanism for exposing root resources (e.g. a landing page) the API SHALL advertise at least one URI to retrieve a tilesets list provided by this service with a link having a rel value: http://www.opengis.net/def/rel/ogc/1.0/tilesets-vector http://www.opengis.net/def/rel/ogc/1.0/tilesets-map or http://www.opengis.net/def/rel/ogc/1.0/tilesets-coverage. However the landing page did not have any such links.

Any idea?

@doublebyte1
Copy link
Contributor

Hi @tomkralidis!

@doublebyte1 @PascalLike I tested both https://demo.pygeoapi.io/cite and a local pygeoapi build (based on the setup / instructions documented in https://github.com/geopython/pygeoapi/wiki/OGCCompliance), against a local master branch build of the OGC API - Tiles ETS with the following (2) failures:

Conformance class: Core: Requirement 5A states that a successful execution of the tile operation with content SHALL be reported as a response with an HTTP status code 200. However the respose code was 404.

Would it be possible to send the urls that are triggering the 404 error?

Conformance Class: Dataset Tilesets: Requirement 11 states that if the API has a mechanism for exposing root resources (e.g. a landing page) the API SHALL advertise at least one URI to retrieve a tilesets list provided by this service with a link having a rel value: http://www.opengis.net/def/rel/ogc/1.0/tilesets-vector http://www.opengis.net/def/rel/ogc/1.0/tilesets-map or http://www.opengis.net/def/rel/ogc/1.0/tilesets-coverage. However the landing page did not have any such links.

Any idea?

I think we are hitting this issue again. pygeoapi does not claim to offer any dataset tilesets and thus it should be not tested for that.

@tomkralidis
Copy link
Member Author

Would it be possible to send the urls that are triggering the 404 error?

  • GET /collections/COLLECTION/tiles/WebMercatorQuad/0/0/0
  • GET /collections/COLLECTION/tiles/WebMercatorQuad/0/2147483647/2147483647

@doublebyte1
Copy link
Contributor

  • 0/2147483647/2147483647

I am assuming you are testing this collection on the cite instance.

In that case, the url template would be:

https://demo.pygeoapi.io/cite/collections/lakes/tiles/WebMercatorQuad/{tileMatrix}/{tileRow}/{tileCol}?f=pbf

This should trigger a 200 response:

https://demo.pygeoapi.io/cite/collections/lakes/tiles/WebMercatorQuad/0/0/0\?f\=pbf

curl -I https://demo.pygeoapi.io/cite/collections/lakes/tiles/WebMercatorQuad/0/0/0\?f\=pbf

HTTP/2 200
access-control-allow-origin: *
content-language: en-US
content-type: pbf
date: Thu, 22 Aug 2024 16:04:01 GMT
server: gunicorn
x-powered-by: pygeoapi 0.18.dev0
content-length: 2960

In the other case, a 404 is correct, because that tile does not exist.

https://demo.pygeoapi.io/cite/collections/lakes/tiles/WebMercatorQuad/0/2147483647/2147483647\?f\=pbf

curl -I https://demo.pygeoapi.io/cite/collections/lakes/tiles/WebMercatorQuad/0/2147483647/2147483647\?f\=pbf

HTTP/2 404
access-control-allow-origin: *
content-language: en-US
content-type: pbf
date: Thu, 22 Aug 2024 16:04:43 GMT
server: gunicorn
x-powered-by: pygeoapi 0.18.dev0
content-length: 97

According to section 7.17 of the Standard (Error conditions):

If the path parameter values tileMatrix, tileRow, tileCol for a tile request are out-of-range (outside the tile matrix set or tile matrix set limits of the resource), the HTTP response SHALL use a status code 404 or a 400. The response can also contain an exception report.

@tomkralidis let me know if I'm missing something here.

@tomkralidis
Copy link
Member Author

@doublebyte1 for the first issue, it was a copy/paste error on my part (I've updated https://github.com/geopython/pygeoapi/wiki/OGCCompliance#ogc-api---tiles accordingly).

For the second 404, this is maybe not an ETS error (intentionally triggering a 404).

The remaining issue thus remains related to clarification of opengeospatial/ets-ogcapi-tiles10#28

@doublebyte1
Copy link
Contributor

@doublebyte1 for the first issue, it was a copy/paste error on my part (I've updated https://github.com/geopython/pygeoapi/wiki/OGCCompliance#ogc-api---tiles accordingly).

For the second 404, this is maybe not an ETS error (intentionally triggering a 404).

The remaining issue thus remains related to clarification of opengeospatial/ets-ogcapi-tiles10#28

@tomkralidis @dstenger I opened a new issue here. opengeospatial/ets-ogcapi-tiles10#30
It is the same issue (the test suite expecting Dataset tilesets) on a different requirement (11),

@tomkralidis
Copy link
Member Author

tomkralidis commented Aug 23, 2024

@doublebyte1 @dstenger FYI I now tested with the following setup:

With the above setup, tests fully pass and the Dataset tileset Conformance Class skipped per the pending the PR.

This means that once the PR is merged and we have an associated release of the ETS, pygeoapi should continue to be compliant.

@tomkralidis
Copy link
Member Author

I tested pygeoapi master against CITE beta (2024-12-08) and there is now a single (new) error:

None of the operationIDs matched those specified by Requirement /req/oas30/operation-id and Table 11

Looks like this requirement was added to OATiles CITE ETS recently. I've put forth a fix at #1863 for review/comment.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request OGC API - Tiles OGC API - Tiles
Projects
None yet
Development

No branches or pull requests

2 participants