如何告诉mapserver忽略过滤器?

时间:2016-10-20 08:55:23

标签: openlayers-3 wms mapserver map-files

我有一个过滤器,我不想在启动应用程序时使用,只能在某个操作上使用。我知道已有question关于此问题,但它对我没有帮助,实际上我不理解这两个答案。

我的逻辑是“我的列=值或1 = 1”来获取我的所有数据集,而不仅仅是过滤器,如果它没有被调用。

这是我写的:

FILTER (([ct]='%ct%') or  '%ct%' = '%ct%')
VALIDATION
    'ct' '^[a-zA-Z\-]+$'
END

我使用

在Openlayers 3上使用参数调用我的图层

url: 'http://localhost:5000/cgi-bin/mapserv.exe?map=/ms4w/apps/tutorial/htdocs/essai.map&SERVICE=WMS&VERSION=1.1.1%20&REQUEST=GetCapabilities', serverType: 'mapserver', params: {'LAYERS': 'aisdata', 'ct':'myvalue', 'TILED': true} });

但是我的所有数据集都被返回了。 (如果我在mapfile中删除'%ct%' = '%ct%',则过滤器应用得很好)

有人能帮助我忽略我的病情吗?

1 个答案:

答案 0 :(得分:1)

在VALIDATION块中添加一个默认值,以便您的值默认为空字符串,然后在FILER块中添加OR条件,以检查该值是否为空字符串:

Wikitude.Architect.WTFeatures

如果数据库列LoadArchitectWorldFromURL确实具有数字类型,则前一个过滤器将产生内部服务器错误,因为您无法将空字符串与数字进行比较。在这种情况下,请使用数值作为默认值,例如0或-1。