Skip to content

Commit 75cac23

Browse files
committed
Use geoalchemy2 functions
1 parent f71a63f commit 75cac23

File tree

1 file changed

+12
-10
lines changed

1 file changed

+12
-10
lines changed

pygeoapi/provider/mvt_postgresql.py

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,12 @@
3535

3636
import logging
3737

38-
from sqlalchemy.sql import func, select
38+
from geoalchemy2.functions import (ST_TileEnvelope, ST_Transform, ST_AsMVTGeom,
39+
ST_AsMVT, ST_CurveToLine, ST_MakeEnvelope)
40+
41+
from sqlalchemy.sql import select
3942
from sqlalchemy.orm import Session
43+
4044
from pygeoapi.models.provider.base import (
4145
TileSetMetadata, TileMatrixSetEnum, LinkType)
4246
from pygeoapi.provider.base import ProviderConnectionError
@@ -134,8 +138,7 @@ def get_tiles(self, layer='default', tileset=None,
134138
135139
:returns: an encoded mvt tile
136140
"""
137-
if format_ == 'mvt':
138-
format_ = self.format_type
141+
z, y, x = map(int, [z, y, x])
139142

140143
[tileset_schema] = [
141144
schema for schema in self.get_tiling_schemes()
@@ -151,25 +154,24 @@ def get_tiles(self, layer='default', tileset=None,
151154

152155
geom_column = getattr(self.table_model, self.geom)
153156
geom_filter = geom_column.intersects(
154-
func.ST_Transform(envelope, storage_srid)
157+
ST_Transform(envelope, storage_srid)
155158
)
156159

157160
mvtgeom = (
158-
func.ST_AsMVTGeom(
159-
func.ST_Transform(func.ST_CurveToLine(geom_column), out_srid),
160-
func.ST_Transform(envelope, out_srid))
161+
ST_AsMVTGeom(
162+
ST_Transform(ST_CurveToLine(geom_column), out_srid),
163+
ST_Transform(envelope, out_srid))
161164
.label('mvtgeom')
162165
)
163166

164167
mvtrow = (
165168
select(mvtgeom, *self.fields.values())
166169
.filter(geom_filter)
167170
.cte('mvtrow')
168-
.table_valued()
169171
)
170172

171173
mvtquery = select(
172-
func.ST_AsMVT(mvtrow, layer)
174+
ST_AsMVT(mvtrow.table_valued(), layer)
173175
)
174176

175177
with Session(self._engine) as session:
@@ -184,7 +186,7 @@ def get_html_metadata(self, dataset, server_url, layer, tileset,
184186

185187
service_url = url_join(
186188
server_url,
187-
f'collections/{dataset}/tiles/{tileset}'
189+
f'collections/{dataset}/tiles/{tileset}',
188190
'{tileMatrix}/{tileRow}/{tileCol}?f=mvt')
189191
metadata_url = url_join(
190192
server_url,

0 commit comments

Comments
 (0)