[mapserver-users] runtime substitution DATA
Guillaume Sueur
no-reply at neogeo-online.net
Wed Feb 25 08:31:34 PST 2009
These are a really good explanation and examples Steve ! Many many
thanks, I'm going to put my hands into it !
Regards,
Guillaume
Steve Lime a écrit :
> You should be able to use either approach. To change the whole thing you'd do:
>
> &map.layer[mylayer]=DATA+'some new SQL string'&...
>
> but in this case you must set DATAPATTERN at the map level to a regular expression to use
> to validate the new SQL. I think this is really hard to do properly and so should probably be
> avoided.
>
> Another alternative is replacing just parts of the SQL, kind of an SQL template approach, here's
> an example I'm using in production now:
>
> DATA "point FROM (SELECT *,oid FROM sites2 WHERE has_telemetry ~ '%has_telemetry%' AND has_archive ~ '%has_archive%' AND has_water_chemistry ~ '%has_water_chemistry%' AND is_cwl_site ~ '%is_cwl_site%' AND is_flood_warning_gage ~ '%is_flood_warning_gage%') as foo USING UNIQUE oid USING SRID=-1"
> METADATA
> has_telemetry_validation_pattern '^[01.]$'
> has_archive_validation_pattern '^[01.]$'
> has_water_chemistry_validation_pattern '^[01.]$'
> is_cwl_site_validation_pattern '^[01.]$'
> is_flood_warning_gage_validation_pattern '^[01.]$'
> END
>
> In this example my data contain 0 or 1 depending on the properties of a site. I want to allow the user
> to pick 0, 1 or either so I use regex's in PostgreSQL (hence the . being a legal character from my
> application. The validation patterns restrict input to 0,1 or . (e.g. either). Another example:
>
> DATA 'point FROM (select *,oid, substring(station from 2) as station_no_char from sites2 where oid=%id%) as foo USING UNIQUE oid USING SRID=-1'
> METADATA
> id_validation_pattern '^[0-9]{1,14}$'
> END
>
> Here I'm using the oid to identify one site and the validation pattern to limit input to a sequence of
> numbers from 1 to 14 characters in length. If the value for "id" doesn't match then an error is thrown.
>
> Steve
>
>>>> On 2/25/2009 at 3:07 AM, in message <49A50A6E.90406 at neogeo-online.net>,
> Guillaume Sueur <no-reply at neogeo-online.net> wrote:
>> Hi list,
>>
>> I'm trying to change the DATA statement of a PostGIS Layer on the fly,
>> from a WMS request.
>> I made it work for FILTER or EXPRESSION, but no success with DATA,
>> either using my %PARAM% in the middle of the SQL string or for the whole
>> thing.
>> I've seen here (http://mapserver.org/cgi/runsub.html) that it should
>> validate a DATAPATTERN.
>>
>> Would someone have some clues about this ?
>>
>> Thanks
>>
>> Guillaume
>> _______________________________________________
>> mapserver-users mailing list
>> mapserver-users at lists.osgeo.org
>> http://lists.osgeo.org/mailman/listinfo/mapserver-users
>
>
>
More information about the MapServer-users
mailing list