WMS GetMap-Request and class expressions
Stefanie Weykam
sweykam at TELELINE.ES
Fri Oct 7 08:32:05 PDT 2005
Hi list members,
A while ago I developed a very simple mapserver application which I would
now like to make available as WMS. I wonder if it is possible to modify the
class expressions via the WMS GetMap-request ?? Or can this only be done by
WFS?
You can see the application here at: http://161.111.161.171/Atlas/
It contains maps of 3 thematic groups (species distribution maps, maps on
biodiversity indices and environmental factors) and a query that allows to
generate a list of species, biodiversity indices and environmental factors
for each graticule.
The species distribution maps are what I would like to make available as web
map service but I can't figure out how to pass the parameter on that
indicates the species code.
The problem is the layer 'Dlyr', my species distribution layer.
As for the application, the user selects a species name from a list and this
variable is then used to render the map by modifying the predefined classes
in the map file.
$clObj0=$Dlyr->getClass(0);
$clObj0->setExpression('(['.$sp.']=0)');
$clObj1=$Dlyr->getClass(1);
$clObj1->setExpression('(['.$sp.']>0 AND ['.$sp.']<=20)');
$clObj2=$Dlyr->getClass(2);
$clObj2->setExpression('(['.$sp.']>20 AND ['.$sp.']<=40)');
$clObj3=$Dlyr->getClass(3);
$clObj3->setExpression('(['.$sp.']>40 AND ['.$sp.']<=60)');
$clObj4=$Dlyr->getClass(4);
$clObj4->setExpression('(['.$sp.']>60 AND ['.$sp.']<=80)');
$clObj5=$Dlyr->getClass(5);
$clObj5->setExpression('(['.$sp.']>80)');
The class ranges never change, no matter what species is selected.
The species code $sp identifies a column in a PostgreSQL table, i.e. [DEMI].
Each species has its table column.
I have already prepared a first version that you may try typing this in your
browser:
http://161.111.161.171/cgi-bin/AtlasAves.exe?service=WMS&request=GetCapabili
ties
You may retrieve a map composition, for example...
http://161.111.161.171/cgi-bin/AtlasAves.exe?service=WMS&version=1.1.1&reque
st=GetMap&layers=fondo,Dlyr,cuad50,cuad_anno&format=png&transparent
First, the client has to have as well a species list that allows to select
and pass on the species code (I will later make this list available). How is
the species identifier added to the request string ?
I guess, this calls for providing the layer as WFS instead (?). The client
then creates his own classes and I don't have to modify my code at all?
Is it possible to avoid that the whole data set is retrieved by a
GetFeature-request? I tried by specifying 'wfs_maxfeatures', but it had no
effect on the GetFeature response.
I am using MapServer 4.4 and this layer is a PostGIS table.
Thanks for your comments,
Stefanie Weykam
More information about the MapServer-users
mailing list