geopython / GeoHealthCheck

Service Status and QoS Checker for OGC Web Services
https://geohealthcheck.org
MIT License
84 stars 71 forks source link

Testing and issues for new WMTS Probes #420

Open justb4 opened 2 years ago

justb4 commented 2 years ago

Describe the bug

Via issue #379 and PR #406 some new custom WMTS Probes were added. This issue is opened to discuss some problems when testing these Probes with various WMTSs. NB: problems may well be related to the WMTS instances themselves. Sometimes it is hard to assess.

Tested several WMTSs using the WMTS GetTile for all layers. Probe. Direct access to the WMTSs in the GHC Demo site: https://demo.geohealthcheck.org/resources?resource_type=OGC%3AWMTS

Below results and and log output from GHC demo Web app for the various WMTSs.

General Findings

PDOK BRT

No problems detected. Tried several variants for both Probes.

IGN Geoportail (French GDI)

Strange errors related to WMTS not returning image formats but looks like Vector Tiles application/x-protobuf. So maybe not an issue. (?)

2022-02-08 15:59:09,645 - GeoHealthCheck.probe - INFO - Requesting: GET url=https://wxs.ign.fr/choisirgeoportail/geoportail/wmts?SERVICE=WMTS&VERSION=1.0.0&REQUEST=GetTile&LAYER=PLAN.IGN&TILEMATRIXSET=PM&TILEMATRIX=13&TILEROW=2909&TILECOL=4133&FORMAT=application/x-protobuf&EXCEPTIONS=application/vnd.ogc.se_xml&STYLE=default
2022-02-08 15:59:09,758 - GeoHealthCheck.probe - INFO - response: status=200
2022-02-08 15:59:09,758 - GeoHealthCheck.probe - INFO - Result: success=False msg=HTTP Error status=404 response_time=1.342711

Slovenian WMTS

Strange problem getting Bounding box when adding the Probe. Log output below.

2022-02-08 16:00:03,685 - init - ERROR - Exception on /probe/GeoHealthCheck.plugins.probe.wmts.WmtsGetTileAll/380/edit_form [GET]
Traceback (most recent call last):
  File "/venv/lib/python3.7/site-packages/flask/app.py", line 2446, in wsgi_app
    response = self.full_dispatch_request()
  File "/venv/lib/python3.7/site-packages/flask/app.py", line 1951, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/venv/lib/python3.7/site-packages/flask/app.py", line 1820, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/venv/lib/python3.7/site-packages/flask/_compat.py", line 39, in reraise
    raise value
  File "/venv/lib/python3.7/site-packages/flask/app.py", line 1949, in full_dispatch_request
    rv = self.dispatch_request()
  File "/venv/lib/python3.7/site-packages/flask/app.py", line 1935, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/venv/lib/python3.7/site-packages/flask_login/utils.py", line 261, in decorated_view
    return func(*args, **kwargs)
  File "/GeoHealthCheck/GeoHealthCheck/app.py", line 820, in get_probe_edit_form
    probe_obj.expand_params(resource)
  File "/GeoHealthCheck/GeoHealthCheck/plugins/probe/wmts.py", line 453, in expand_params
    raise err
  File "/GeoHealthCheck/GeoHealthCheck/plugins/probe/wmts.py", line 445, in expand_params
    bbox84 = layer_object.boundingBoxWGS84
AttributeError: 'ContentMetadata' object has no attribute 'boundingBoxWGS84'
2022-02-08 16:01:11,345 - GeoHealthCheck.probe - INFO - Requesting: GET url=https://storitve.eprostor.gov.si/ows-pub-wmts/service/wmts

Austrian Basemap

Reported as REST-only (?), while I think KVP is reported as well. Logs. Mostly not-found errors e.g. on https://basemap.at/wmts/bmapoverlay/google3857/11/1098/714.png


2022-02-08 16:01:50,600 - GeoHealthCheck.app - INFO - adding Probe class=GeoHealthCheck.plugins.probe.wmts.WmtsGetTileAll parms={'probe_class': 'GeoHealthCheck.plugins.probe.wmts.WmtsGetTileAll', 'parameters': {'layers': ['geolandbasemap'], 'tilematrixset': 'sample', 'tilematrix': 'sample', 'latitude_4326': '47.698321', 'longitude_4326': '13.1411895', 'format': 'sample', 'exceptions': 'application/vnd.ogc.se_xml', 'style': 'default', 'kvprest': 'REST'}, 'checks': [{'check_class': 'GeoHealthCheck.plugins.check.checks.HttpStatusNoError', 'parameters': {}}, {'check_class': 'GeoHealthCheck.plugins.check.checks.NotContainsOwsException', 'parameters': {'strings': ['ExceptionReport>', 'ServiceException>']}}, {'check_class': 'GeoHealthCheck.plugins.check.checks.HttpHasImageContentType', 'parameters': {}}]}
2022-02-08 16:01:50,624 - GeoHealthCheck.geocoder - INFO - Requesting: url=http://ip-api.com/json/www.basemap.at
2022-02-08 16:01:50,679 - GeoHealthCheck.geocoder - INFO - response: status=200
2022-02-08 16:01:52,325 - GeoHealthCheck.probe - INFO - Requesting: GET url=https://www.basemap.at/wmts/geolandbasemap/google3857/4/8/5.png
2022-02-08 16:01:52,412 - GeoHealthCheck.probe - INFO - Check: fun=GeoHealthCheck.plugins.check.checks.HttpStatusNoError result=False
2022-02-08 16:01:52,413 - GeoHealthCheck.probe - INFO - Check: fun=GeoHealthCheck.plugins.check.checks.NotContainsOwsException result=True
2022-02-08 16:01:52,413 - GeoHealthCheck.probe - INFO - Check: fun=GeoHealthCheck.plugins.check.checks.HttpHasImageContentType result=False
2022-02-08 16:01:52,465 - GeoHealthCheck.probe - INFO - Requesting: GET url=https://www.basemap.at/wmts/bmapoverlay/google3857/11/1098/714.png
2022-02-08 16:01:52,578 - GeoHealthCheck.probe - INFO - Requesting: GET url=https://www.basemap.at/wmts/bmapgrau/google3857/18/140641/91452.png
2022-02-08 16:01:52,681 - GeoHealthCheck.probe - INFO - Requesting: GET url=https://www.basemap.at/wmts/bmaphidpi/google3857/5/17/11.jpeg
2022-02-08 16:01:52,770 - GeoHealthCheck.probe - INFO - Requesting: GET url=https://www.basemap.at/wmts/bmaporthofoto30cm/google3857/18/140641/91452.jpeg
2022-02-08 16:01:52,876 - GeoHealthCheck.probe - INFO - Requesting: GET url=https://www.basemap.at/wmts/bmapgelaende/google3857_0-17/2/2/1.jpeg
2022-02-08 16:01:52,990 - GeoHealthCheck.probe - INFO - Requesting: GET url=https://www.basemap.at/wmts/bmapoberflaeche/google3857_0-17/3/4/2.jpeg
2022-02-08 16:01:53,050 - GeoHealthCheck.probe - INFO - Result: success=False msg=HTTP Error status=404 response_time=0.776604

OpenGeoGroep - OpenBasisKaart

When adding the Probe (like Slovenian example) this error in UI: Error getting Probe form for GeoHealthCheck.plugins.probe.wmts.WmtsGetTileAll

2022-02-08 16:32:13,553 - views - WARNING - Cannot expand plugin vars for GeoHealthCheck.plugins.probe.wmts.WmtsGetTile err=AttributeError("'ContentMetadata' object has no attribute 'boundingBoxWGS84'")
2022-02-08 16:32:13,585 - views - WARNING - Cannot expand plugin vars for GeoHealthCheck.plugins.probe.wmts.WmtsGetTileAll err=AttributeError("'ContentMetadata' object has no attribute 'boundingBoxWGS84'")
2022-02-08 16:32:46,891 - init - ERROR - Exception on /probe/GeoHealthCheck.plugins.probe.wmts.WmtsGetTileAll/424/edit_form [GET]
Traceback (most recent call last):
  File "/venv/lib/python3.7/site-packages/flask/app.py", line 2446, in wsgi_app
    response = self.full_dispatch_request()
  File "/venv/lib/python3.7/site-packages/flask/app.py", line 1951, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/venv/lib/python3.7/site-packages/flask/app.py", line 1820, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/venv/lib/python3.7/site-packages/flask/_compat.py", line 39, in reraise
    raise value
  File "/venv/lib/python3.7/site-packages/flask/app.py", line 1949, in full_dispatch_request
    rv = self.dispatch_request()
  File "/venv/lib/python3.7/site-packages/flask/app.py", line 1935, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/venv/lib/python3.7/site-packages/flask_login/utils.py", line 261, in decorated_view
    return func(*args, **kwargs)
  File "/GeoHealthCheck/GeoHealthCheck/app.py", line 820, in get_probe_edit_form
    probe_obj.expand_params(resource)
  File "/GeoHealthCheck/GeoHealthCheck/plugins/probe/wmts.py", line 453, in expand_params
    raise err
  File "/GeoHealthCheck/GeoHealthCheck/plugins/probe/wmts.py", line 445, in expand_params
    bbox84 = layer_object.boundingBoxWGS84
AttributeError: 'ContentMetadata' object has no attribute 'boundingBoxWGS84'

Context