4.7.4. Exemples

Commençons avec un exemple simple et qui nous servira de base pour la suite. Considérons la définition de couche Mapserver suivante :

LAYER
 CONNECTIONTYPE postgis
 NAME "routes"
 CONNECTION "user=lutilisateur password=lemotdepasse dbname=labase host=leserveur"
 DATA "the_geom FROM routes"
 STATUS ON
 TYPE LINE
 CLASS
  COLOR 0 0 0
 END
END

Cette couche affichera toutes les géométries de la table routes comme des lignes noires.

Maintenant, supposons que nous voulions uniquement afficher les autoroutes lorsque nous zoomons au moins à une échelle de 1:100000, les deux prochaines couches permettent cela :

LAYER
 CONNECTION "user=lutilisation password=lemotdepasse dbname=labase host=leserveur"
 DATA "the_geom FROM routes"
 MINSCALE 100000
 STATUS ON
 TYPE LINE
 FILTER "type_de_route = 'autotourte'"
 CLASS
  COLOR 0 0 0
 END
END
LAYER
 CONNECTION "user=lutilisateur password=lemotdepasse dbname=labase host=leserveur"
 DATA "the_geom FROM routes"
 MAXSCALE 100000
 STATUS ON
 TYPE LINE
 CLASSITEM type_de_route
 CLASS
  EXPRESSION "autoroute"
  SIZE 2
  COLOR 255 0 0
 END
 CLASS
  COLOR 0 0 0
 END
END

La première couche est utilisée lorsque l'échelle est plus grande que 1:100000, et affiche uniquement des lignes noires pour les routes de type "autoroute". L'option FILTER entraine que seules les routes de type "autoroute" doivent être affichées.

La seconde couche est utilisée lorsque l'échelle est plus petite que 1:100000, et affichera les autoroutes comme des lignes rouges à double-profondeurs, et les autre routes comme des lignes noires standards.

Donc, nous avons fait un couple de choses intéressantes en utilisant uniquement les fonctionnalités de Mapserver, mais nos états SQL dans les définitions de DATA sont restées simples. Supposons que le nom des routes soit stocké dans une autre table (pour une raison quelconque) et que nous souhaitions faire une jointure pour récupérer et étiqueter nos routes.

LAYER
 CONNECTION "user=lutilisateur password=lemotdepasse dbname=labase host=leserveur"
 DATA "the_geom FROM (SELECT routes.oid AS oid, routes.the_geom AS the_geom, nom_des_routes.nom as nom
  FROM routes LEFT JOIN nom_des_routes ON routes.id_nom_de_routes = nom_des_routes.id_nom_de_routes) AS routes_nommées
  USING UNIQUE oid USING SRID=-1"
 MAXSCALE 20000
 STATUS ON
 TYPE ANNOTATION
 LABELITEM nom
 CLASS
  LABEL
   ANGLE auto
   SIZE 8
   COLOR 0 192 0
   TYPE truetype
   FONT arial
  END
 END
END

Cette couche d'annotation ajoute des étiquettes vertes à toutes les routes lorsque l'échelle atteint 1:20000 ou moins. Cela montre aussi comment utiliser les jointures SQL dans une définition de DATA.

Posted in version imprimable | Vous devez vous connecter ou vous enregistrer pour écrire des commentaires | 3132 lectures

Posté par rédacteurs le 6 Avril, 2006 - 21:03.

Accéder aux archives

« Novembre 2024  
Lun Mar Mer Jeu Ven Sam Dim
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30  

Ouverture de session

Qui est en ligne

Il y a actuellement 1 utilisateur et 237 invités en ligne.
Locations of visitors to this page
Drupal Top Sites - Ultimate Drupal Exposure