41
41
from pygeoapi .provider .base import ProviderConnectionError
42
42
from pygeoapi .provider .base_mvt import BaseMVTProvider
43
43
from pygeoapi .provider .postgresql import PostgreSQLProvider
44
+ from pygeoapi .provider .tile import ProviderTileNotFoundError
44
45
from pygeoapi .util import url_join
45
46
46
47
LOGGER = logging .getLogger (__name__ )
@@ -65,6 +66,7 @@ def __init__(self, provider_def):
65
66
super ().__init__ (provider_def )
66
67
67
68
pg_def = deepcopy (provider_def )
69
+ # delete the zoom option before initializing the PostgreSQL provider, it breaks otherwise
68
70
del pg_def ["options" ]["zoom" ]
69
71
self .postgres = PostgreSQLProvider (pg_def )
70
72
@@ -145,6 +147,9 @@ def get_tiles(self, layer=None, tileset=None,
145
147
146
148
query = ''
147
149
if tileset == TileMatrixSetEnum .WEBMERCATORQUAD .value .tileMatrixSet :
150
+ if not self .is_in_limits (TileMatrixSetEnum .WEBMERCATORQUAD .value , z , x , y ):
151
+ raise ProviderTileNotFoundError
152
+
148
153
query = text ("""
149
154
WITH
150
155
bounds AS (
@@ -159,6 +164,9 @@ def get_tiles(self, layer=None, tileset=None,
159
164
""" .format (geom = self .geom , table = self .table , fields = fields )) # noqa
160
165
161
166
if tileset == TileMatrixSetEnum .WORLDCRS84QUAD .value .tileMatrixSet :
167
+ if not self .is_in_limits (TileMatrixSetEnum .WORLDCRS84QUAD .value , z , x , y ):
168
+ raise ProviderTileNotFoundError
169
+
162
170
query = text ("""
163
171
WITH
164
172
bounds AS (
0 commit comments