将 FILTER 变量获取到 MapServer DATA 字符串中

Getting FILTER variable into MapServer DATA string

我需要以下内容的解决方案或 link 描述 Mapserver MapFile DATA 元素的详细参数指南,以便我可以尝试制定解决方案。 我正在尝试将动态过滤器传递给映射文件,但无法计算出这样做的语法。 上下文有一个 Web 应用程序,我在 Openlayers 中有一个 WMS 层,它连接到一个 Mapserver Mapfile,后者又从 PostGIS 栅格数据库读取。 这种方法的向量层版本具有以下基本语法,适用于数据库中的向量表:

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

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

但是,在光栅数据库示例中,此 link [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' "

所以我可以使用硬编码的 where 元素,即 id=12,但在前面的示例中,我可以通过 FILTER 行在 Openlayers WMS 查询中动态设置 id 参数。 有谁知道在栅格数据示例中实现此目的的语法,或者甚至可能吗?

您需要向您的 ID 类型添加一个 "validation" 对象。 添加如下内容:

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

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