[mapserver-users] passing cgi query params to wms layers

Puneet Kishor punk.kish at gmail.com
Tue Sep 27 09:27:30 EDT 2011


On Sep 26, 2011, at 11:22 PM, Mr. Puneet Kishor wrote:

> On Sep 26, 2011, at 11:04 PM, Stephen Woodbridge wrote:
> 
>> On 9/26/2011 10:29 PM, Puneet Kishor wrote:
>>> I am using OpenLayers as the front-end, requesting a WMS layer from MapServer that is getting data from Pg. My DATA statement is like so
>>> 
>>> 	DATA "the_geom FROM (SELECT gid, pc, the_geom FROM table) t USING UNIQUE gid USING srid=4326"
>>>        FILTER "pc = 'na'"
>>> 
>>> The above works fine. However, I would like to send the value of "pc" from OpenLayers (that is another problem that I am experiencing; I have asked on OL list on how to send query params to WMS layers, but if any of you know the solution, I would welcome that). In any case, I thought (naively), that I could change my FILTER statement like so
>>> 
>>> 	FILTER "pc = '[pc]'"
>>> 
>>> I tried sending a WMS query directly to test the above like so [http://server/cgi-bin/app?.. blah ..&pc=na] but no joy. Forcing a query error showed me that MapServer was executing the following
>>> 
>>> 	select .. from (..) t where the_geom&&  GeomFromText(..) and (pc = '[pc]')
>>> 
>>> How can I dynamically supply MapServer a filter value?
>> 
>> Does this doc answer your question?
>> http://mapserver.org/cgi/runsub.html
>> 
> 
> 
> Yes it does. I had not seen that doc (hence, I was naively trying [var] kinda sub)


So, it seems I can't use Perl compatible regexps inside the map file for runtime substitution. For example, the following fails

	'pc_validation_pattern' '^\w\w$'

with "msValidateParameter(): Regular expression error. Parameter pattern validation failed." But the following works

	'pc_validation_pattern' '^[a-zA-Z][a-zA-Z]$'

Is there a compile time switch to make MapServer Perl-savvy?

--
Puneet Kishor


More information about the mapserver-users mailing list