将FILTER变量导入MapServer DATA字符串

时间:2018-02-07 16:31:55

标签: sql mapserver postgis-raster

我需要以下解决方案或指向描述Mapserver MapFile DATA元素的详细参数指南的链接,以便我可以尝试找出解决方案。 我正在尝试将动态过滤器传递给mapfile,但无法解决语法问题。 上下文有一个Web应用程序,我在Openlayers中有一个连接到Mapserver Mapfile的WMS层,而Mapserver Mapfile又是从PostGIS栅格数据库中读取的。 此方法的矢量图层版本具有以下基本语法,该语法很好,适用于DB中的矢量表:

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

实际上,这会生成一个SQL语句,其中FILTER被创建为DATA SQL中的where子句。

但是,在栅格数据库示例中,此链接[http://postgis.net/docs/RT_FAQ.html#idm28328]中显示的DATA语法如下:

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' "

因此,我可以使用硬编码的方法来处理元素,即id = 12,但在前面的示例中,我可以通过FILTER行在Openlayers WMS查询中动态设置id参数。 有没有人知道在光栅DATA示例中实现这一点的语法,还是可能?

1 个答案:

答案 0 :(得分:0)

您需要向您的ID类型添加“验证”对象。 添加类似的内容:

验证 'id''[0-9] +' 结束

到您的图层对象。 您可以查看该页面以获得更多说明: https://mapserver.org/mapfile/validation.html