Comment afficher uniquement certaines classes d'une couche dans UMN-mapserver?

9

Je visualise une couche de forme dans le serveur de carte. Maintenant, je veux faire quelques demandes pour seulement certaines classes de cette couche. Je veux par exemple une seule demande pour les classes d'eau et plus tard uniquement pour les classes de bois. Puis-je réaliser cela avec le serveur de carte?

Mnementh
la source

Réponses:

7

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.

DavidF
la source
7

Vous devriez dans votre cas avoir deux couches, une pour le bois et une pour l'eau. Vous pouvez avoir deux calques en utilisant le même fichier de formes.

Ensuite, vous pouvez choisir les couches à visualiser directement dans la demande par le paramètre LAYERS. Les classes ne représentent que différentes parties des données (par exemple, la façon dont les données de ces couches doivent être rendues).

Peter
la source
4

Si vous en avez vraiment, vraiment besoin, tous dans un seul calque, vous pouvez utiliser des styles nommés pour y parvenir. Voir ici pour plus de détails. La suggestion de Peter de plusieurs couches est à bien des égards une approche beaucoup plus simple, cependant.

Howard Butler
la source