我有一个过滤器,我不想在启动应用程序时使用,只有在某个特定的操作上。我知道已经有一个question关于这个,但它不能帮助我,我实际上不明白这两个答案。如何告诉mapserver忽略过滤器?
我是在“我的专栏=值或1 = 1”的逻辑来获取我所有的数据集,而不是只是过滤器,如果它没有被调用。
这是我写的:
FILTER (([ct]='%ct%') or '%ct%' = '%ct%')
VALIDATION
'ct' '^[a-zA-Z\-]+$'
END
我打电话给我的层上的OpenLayers 3 PARAM与
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} });
但回到我的所有数据集。 (如果我删除我的地图文件中的'%ct%' = '%ct%'
,该过滤器应用很好)
任何人都可以帮助我忽略我的状况吗?
我不明白你的问题。表达式“我的列=值或1 = 1”始终为真,并且与根本不是过滤器相同。 “你的意思是”如果没有调用我所有的数据集,而不仅仅是过滤器。“ –
@TommasoDiBucchianico假设我有一层动物(鸡,狗,猫)。我希望他们都能显示在我的地图上。但是我已经在我的地图文件中预先定义了一个过滤器,以便以后只能选择一种类型的动物。由于我的FILTER([动物] =%动物%),如果我不提供任何参数,我的地图将不显示任何内容。如果没有提供参数,我不知道如何在我的FILTER中说我首先需要所有动物(即1 = 1)。如果提供了一个参数,我不希望1 = 1 – So4ne
@TommasoDiBucchianico我知道它总是如此,我需要它永远是真的。对于(([ct] ='%ct%')或'%ct%'='%ct%')我希望Mapfile(或Postgis?)检查[ct] ='%ct%'是否返回true FIRST。在我看来,它总是'%ct%'='%ct%',它返回true。或者我需要的是“如果我没有任何参数设置,然后显示一切,尽管我的过滤器” – So4ne