Voici une autre façon de procéder. De cette façon, vous utilisez une couche avec des expressions dans chaque classe. C'est un peu plus «cher» de le faire de cette façon car cela implique des expressions logiques, mais vous ne remarquerez peut-être jamais la différence à moins que vous ne rencontriez des situations de charge très élevée.
Chaque classe a une expression en deux parties. Les deux parties de l'expression doivent être vraies pour les traits à dessiner. La première partie de l'expression sélectionne les fonctionnalités qui doivent appartenir à cette classe en fonction d'un attribut de votre fichier de formes. La deuxième partie de l'expression évalue la valeur d'une variable transmise via l'URL. Peu importe le nom de la variable dans votre URL (n'utilisez pas de mots réservés comme «couche»), il suffit de faire correspondre le nom de la variable dans votre expression.
Voici quelques exemples de couches:
LAYER
NAME "watersheds"
STATUS DEFAULT
DATA 'majclip'
TYPE POLYGON
CLASS
NAME "water"
EXPRESSION ([MAJOR] < 42 AND '%wanted%' = 'water')
STYLE
COLOR 0 0 255
END
END
CLASS
NAME "wood"
EXPRESSION ([MAJOR] >= 42 AND '%wanted%' = 'wood')
STYLE
COLOR 0 255 0
END
END
END
Pour dessiner uniquement les caractéristiques de l'eau, vous utiliseriez une demande d'URL comme celle-ci:
http: //localhost/cgi-bin/mapserv.exe? Map = / ms4w / apps / mymapfile.map & mode = map & voulait = bois
Comme il s'agit de la troisième manière valable d'atteindre votre objectif, vous voulez vraiment réfléchir à vos objectifs. Si vos données changent fréquemment, vous souhaiterez peut-être utiliser cette option. Si vos données ne changent pas aussi souvent, je choisirais personnellement deux couches. Je pourrais même diviser le fichier de formes en plusieurs fichiers de formes par type d'utilisation du sol si cela améliore les performances. (Ce n'est peut-être pas le cas, les filtres de calque sont assez efficaces). Avec la cartographie Web, plus vous pré-optimisez vos données, mieux c'est.