I have a task to allow a single WFS request to return two different responses depending on zoom: return usual SELECT * FROM table
if zoom level >n and return SELECT ST_SimplifyPreserveTopology(geom, x) FROM table
if zoom level <=n.
But I don't understand how to apply zoom level expression for parametric request to PostgreSQL. ...
Answer
It seems to be doable to add a parameter in your WFS through a SQL view: https://geoserver.geo-solutions.it/edu/en/adding_data/add_sqllayers.html
Your client will have to send a parameter at the end of the request, for exemple a zoom_level
or something like that. Then you can use this parameter in your SQL view, either with something like a SELECT CASE WHEN zoom_level>10 THEN ST_Simplify(geom) ELSE geom END as geom
or more dynamically (for exemple compute a tolerance
for your ST_Simplify
with some math formula).
Be aware that adding a parameter sent to a SQL database can be dangerous, there is a field to add a verification with a REGEX in Geoserver to defend against SQL injection (it's explained in the article).
No comments:
Post a Comment