sqlmapserverpostgis-raster

Getting FILTER variable into MapServer DATA string


I need a solution to the following or a link to a detailed parameter guide that describes a Mapserver MapFile DATA element so I can try and work out a solution. I'm trying to pass a dynamic filter to the mapfile but can't work out the syntax to do so. The context is having a web-application where I have a WMS layer in Openlayers that connects to a Mapserver Mapfile which in turn is reading from a PostGIS raster DB. The vector layers version of this approach has the following base syntax which is fine and works for vector tables in the DB:

DATA "geom FROM some_table using unique id using srid=4326"
FILTER (id = '%id%')

In effect this generates an SQL statement where the FILTER is created as a where clause in the DATA SQL.

However, in a raster DB example the DATA syntax shown at this link [http://postgis.net/docs/RT_FAQ.html#idm28328] is as follows:

DATA "PG:host=localhost port=5432 dbname='some_db' user='some_user' password='some_password' schema='some_schema' table='some_table' where='id=12' mode='2' "

So I can get things to work with hardcoded where elements, i.e. id=12 but in the previous example I could set the id parameter dynamically in the Openlayers WMS query through the FILTER line. Does anyone know of the syntax to achieve this in the raster DATA example or is it even possible?


Solution

  • you need to add a "validation" object to your id type. Add something like:

    VALIDATION 'id' '[0-9]+' END

    to your layer object. You can see that page for more explanations: https://mapserver.org/mapfile/validation.html