Commençons avec un exemple simple et qui nous servira de base pour la suite. Considérons la définition de couche Mapserver suivante :
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 :
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.
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.