Ich habe einen Filter, den ich nicht beim Start der Anwendung verwenden möchte, nur auf eine bestimmte Aktion. Ich weiß, dass es bereits eine question darüber gibt, aber es hilft mir nicht, ich verstehe eigentlich nicht beide Antworten.Wie man MapServer anweist, einen Filter zu ignorieren?
Ich war in einer Logik von "meine Spalte = Wert oder 1 = 1", um alle meine Datensätze statt nur den Filter zu erhalten, wenn es nicht aufgerufen wird.
Hier ist, was ich schrieb:
FILTER (([ct]='%ct%') or '%ct%' = '%ct%')
VALIDATION
'ct' '^[a-zA-Z\-]+$'
END
ich mit einem param meine Schicht rufen auf Openlayers 3 mit
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} });
Aber alle meine Daten-Set zurückgegeben wird. (Wenn ich '%ct%' = '%ct%'
in meiner Mapfile entferne, wird der Filter gut angewendet)
Kann mir jemand helfen, meinen Zustand zu ignorieren?
Ich verstehe dich nicht Frage. Der Ausdruck "meine Spalte = Wert oder 1 = 1" ist immer wahr und ist derselbe wie kein Filter. Was meinst du mit "bekomme alle meine Datensätze anstatt nur den Filter, wenn es nicht aufgerufen wird." –
@TommasoDiBucchianico Sagen wir, ich habe eine Schicht mit einer Tiersäule (Huhn, Hund, Katze). Ich möchte, dass sie alle auf meiner Karte angezeigt werden. Aber ich habe einen Filter für meine Mapfile vordefiniert, um später nur einen Tiertyp auswählen zu können. Wegen meines FILTERS ([Tiere] =% Tiere%) zeigt meine Karte nichts an, wenn ich keine Parameter zur Verfügung stelle. Ich weiß nicht, wie ich in meinem FILTER sagen soll, dass ich zuerst alle meine Tiere haben möchte (d. H. 1 = 1), wenn keine Parameter angegeben sind. Und wenn ein Parameter zur Verfügung gestellt wird, möchte ich nicht 1 = 1 – So4ne
@TommasoDiBucchianico Ich weiß, es ist immer wahr und ich muss es immer wahr sein. Für (([ct] = '% ct%') oder '% ct%' = '% ct%') möchte ich, dass Mapfile (oder Postgis?) Prüft, ob [ct] = '% ct%' zuerst TRUE zurückgibt. In meinem Fall scheint es immer "% ct%" = "% ct%" zu geben, was wahr ist. Oder was ich brauche, ist "Wenn ich keine Parameter eingestellt habe, dann zeige alles, trotz meines Filters" – So4ne