35
35
36
36
import logging
37
37
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
39
42
from sqlalchemy .orm import Session
43
+
40
44
from pygeoapi .models .provider .base import (
41
45
TileSetMetadata , TileMatrixSetEnum , LinkType )
42
46
from pygeoapi .provider .base import ProviderConnectionError
@@ -134,8 +138,7 @@ def get_tiles(self, layer='default', tileset=None,
134
138
135
139
:returns: an encoded mvt tile
136
140
"""
137
- if format_ == 'mvt' :
138
- format_ = self .format_type
141
+ z , y , x = map (int , [z , y , x ])
139
142
140
143
[tileset_schema ] = [
141
144
schema for schema in self .get_tiling_schemes ()
@@ -151,25 +154,24 @@ def get_tiles(self, layer='default', tileset=None,
151
154
152
155
geom_column = getattr (self .table_model , self .geom )
153
156
geom_filter = geom_column .intersects (
154
- func . ST_Transform (envelope , storage_srid )
157
+ ST_Transform (envelope , storage_srid )
155
158
)
156
159
157
160
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 ))
161
164
.label ('mvtgeom' )
162
165
)
163
166
164
167
mvtrow = (
165
168
select (mvtgeom , * self .fields .values ())
166
169
.filter (geom_filter )
167
170
.cte ('mvtrow' )
168
- .table_valued ()
169
171
)
170
172
171
173
mvtquery = select (
172
- func . ST_AsMVT (mvtrow , layer )
174
+ ST_AsMVT (mvtrow . table_valued () , layer )
173
175
)
174
176
175
177
with Session (self ._engine ) as session :
@@ -184,7 +186,7 @@ def get_html_metadata(self, dataset, server_url, layer, tileset,
184
186
185
187
service_url = url_join (
186
188
server_url ,
187
- f'collections/{ dataset } /tiles/{ tileset } '
189
+ f'collections/{ dataset } /tiles/{ tileset } ' ,
188
190
'{tileMatrix}/{tileRow}/{tileCol}?f=mvt' )
189
191
metadata_url = url_join (
190
192
server_url ,
0 commit comments