AW: [mapserver-users] default values if not provided in the URL
Arnd Wippermann
arnd.wippermann at web.de
Thu Oct 27 11:47:08 PDT 2011
Hi,
You can use a wrapper for the mapserver request instead of a url with the
mapfile parameter.
Inside the wrapper you can decide which mapfile to use.
Simple example wrapper in asp:
http://trac.osgeo.org/mapserver/ticket/1254
Arnd
-----Ursprüngliche Nachricht-----
Von: mapserver-users-bounces at lists.osgeo.org
[mailto:mapserver-users-bounces at lists.osgeo.org] Im Auftrag von Puneet
Kishor
Gesendet: Donnerstag, 27. Oktober 2011 18:51
An: Fawcett, David (MPCA)
Cc: mapserver-users at lists.osgeo.org
Betreff: Re: [mapserver-users] default values if not provided in the URL
David,
On Oct 27, 2011, at 11:19 AM, Fawcett, David (MPCA) wrote:
> Two hackish thoughts:
>
> 1. Utilize a pair of mapfiles. The first one has all of the classes on
by default. The second one has all of the class with STATUS OFF.
>
> On the client side, you determine if you have any class args and route
> the request to the appropriate mapfile. If the client has a request
> with class args, you append one of these for each class
> '&map.layer[0].class[3]=status on' (specifying the correct layer and
> class index values)
>
The mapserver request is being made in a number of ways. If there is control
on the client side, then, yes, different map files can be requested.
http://server/mapall returns all the classes, and
http://server/mapfew?class=Foo,Bar returns only Foo and Bar
However, the same URI is to be reused in other client apps as well (such as
OL), so the ability to choose which map file to request is limited. In any
case, for a number of "external" reasons, the URI is supposed to be unique,
so http://server/mapall and http://server/mapfew violate that principle,
however, http://server/mapthem (defaulting to 'class=All') and
http://server/mapthem?class=Foo,Bar do not violate that uniqueness
principle.
Alright, moving on ...
> If you only had a few classes, you could easily manage this with one
> mapfile (without running up against the character limits on GET
> requests)
>
I said earlier that I have 100s of classes. I was wrong. Turns out I have 49
classes in this map file. However, in another map file I do have almost 700
classes. The use case is either the user gets all, or is able to specify one
or two to filter and show only those.
> 2. What are you really trying to do? It seem like classes are for
selecting and symbolizing/formatting data for output. Do you really want to
filter out the data using a filter at the layer level. If you can avoid
running all of your data through the expressions for each class, it should
perform better too.
>
Dunno how else to explain but with the following text -- the table (aka a
layer) has a column called "classes" and these classes map to specific
colors stored in another column.
I want to be able to return a map as per the URI rules above.
> David.
>
> -----Original Message-----
> From: mapserver-users-bounces at lists.osgeo.org
> [mailto:mapserver-users-bounces at lists.osgeo.org] On Behalf Of Puneet
> Kishor
> Sent: Thursday, October 27, 2011 10:50 AM
> To: mapserver-users at lists.osgeo.org
> Subject: [mapserver-users] default values if not provided in the URL
>
> the fine manual says http://mapserver.org/cgi/runsub.html
>
>> Since version 5.6, you can provide a default value for any
>> substitution parameter, that will be applied if the parameter was not
found in the url.
>> You do this by providing special entries inside the layer metadata :
>>
>> METADATA
>> 'default_sound' 'yes'
>> 'default_nseats' '5'
>> 'default_multimedia' 'yes'
>> END
>>
>> In this example, the mapfile will be created as if the url contained
>> "&sound=yes&nseats=5&multimedia=yes"
>
>
> Right then. Except, I want *all* my classes to be drawn if no class
> has been provided. And, if one or more classes have been provided,
> then I want only those to be drawn. So,
>
> http://server/mapfile?mode=map
>
> should return a map with all the 100+ classes in a layer. And
>
> http://server/mapfile?mode=map&classes=Foo,Bar
>
> (or some other variation of the above) should return a map with only the
requested classes in the layer. I can't think of anyway of doing the above
without resorting to scripting, and I still have had no luck with WMS
returned from Perl MapScripting.
>
> Suggestions.
>
> --
> Puneet Kishor_______________________________________________
> mapserver-users mailing list
> mapserver-users at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/mapserver-users
>
>
_______________________________________________
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