【发布时间】:2016-10-20 08:55:22
【问题描述】:
我有一个过滤器,我不想在应用程序启动时使用,只在某个操作上使用。我知道已经有一个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}
});
但是我的所有数据集都返回了。 (如果我在我的映射文件中删除'%ct%' = '%ct%',过滤器应用得很好)
谁能帮我忽略我的病情?
【问题讨论】:
-
我不明白你的问题。表达式“我的列 = 值或 1 = 1”始终为真,与根本不过滤相同。 “如果未调用过滤器,则获取我的所有数据集而不是仅获取过滤器”是什么意思。
-
@TommasoDiBucchianico 假设我有一个包含一列动物(鸡、狗、猫)的图层。我希望它们都显示在我的地图上。但是我已经在我的地图文件上预定义了一个过滤器,以便以后只能选择一种动物。由于我的 FILTER ([animals] = %animals%) 如果我不提供任何参数,我的地图将不会显示任何内容。如果没有提供参数,我不知道如何在我的 FILTER 中说我首先想要我的所有动物(即 1 = 1)。如果提供了参数,我不想要 1 = 1
-
@TommasoDiBucchianico 我知道它永远是正确的,我需要它永远正确。对于 (([ct]='%ct%') 或 '%ct%' = '%ct%') 我希望 Mapfile(或 Postgis?)检查 [ct]='%ct%' 是否返回 true FIRST。就我而言,似乎总是 '%ct%' = '%ct%' 返回 true。或者我需要的是“如果我没有设置任何参数,则显示所有内容,尽管我的过滤器”
标签: openlayers-3 wms mapserver map-files