Skip to content

Commit a034d15

Browse files
committed
MVT-postgresql : Add check if the indices are not in limits of the TMS, return ProviderTileNotFound error
- Otherwise error was thrown from PostgreSQL `ST_MakeTileEnvelope` function
1 parent 9a320cc commit a034d15

File tree

1 file changed

+8
-0
lines changed

1 file changed

+8
-0
lines changed

pygeoapi/provider/mvt_postgresql.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
from pygeoapi.provider.base import ProviderConnectionError
4242
from pygeoapi.provider.base_mvt import BaseMVTProvider
4343
from pygeoapi.provider.postgresql import PostgreSQLProvider
44+
from pygeoapi.provider.tile import ProviderTileNotFoundError
4445
from pygeoapi.util import url_join
4546

4647
LOGGER = logging.getLogger(__name__)
@@ -65,6 +66,7 @@ def __init__(self, provider_def):
6566
super().__init__(provider_def)
6667

6768
pg_def = deepcopy(provider_def)
69+
# delete the zoom option before initializing the PostgreSQL provider, it breaks otherwise
6870
del pg_def["options"]["zoom"]
6971
self.postgres = PostgreSQLProvider(pg_def)
7072

@@ -145,6 +147,9 @@ def get_tiles(self, layer=None, tileset=None,
145147

146148
query = ''
147149
if tileset == TileMatrixSetEnum.WEBMERCATORQUAD.value.tileMatrixSet:
150+
if not self.is_in_limits(TileMatrixSetEnum.WEBMERCATORQUAD.value, z, x, y):
151+
raise ProviderTileNotFoundError
152+
148153
query = text("""
149154
WITH
150155
bounds AS (
@@ -159,6 +164,9 @@ def get_tiles(self, layer=None, tileset=None,
159164
""".format(geom=self.geom, table=self.table, fields=fields)) # noqa
160165

161166
if tileset == TileMatrixSetEnum.WORLDCRS84QUAD.value.tileMatrixSet:
167+
if not self.is_in_limits(TileMatrixSetEnum.WORLDCRS84QUAD.value, z, x, y):
168+
raise ProviderTileNotFoundError
169+
162170
query = text("""
163171
WITH
164172
bounds AS (

0 commit comments

Comments
 (0)