1. Génération d'une imagemap simple


Ici nous présentons comment générer un imagemap pour les communes du Languedoc-Roussillon.

Dans un premier temps nous allons définir la requête à utliser dans la mapfile (plus précisément dans la section DATA de la couche représentant ces communes) afin d'extraire les informations dont nous aurons besoin plus tard :

select gid, LOWER(nom_commun) as nom, numeroinse as value, simplify(the_geom,10) as the_geom from commune_lr ORDER BY gid

ndrpf : vous noterez que nous utilisons ici la fonction PostGIS simplify décrite ici.

Cette couche est supposée de type PostGIS (la couche contient un ligne du type : CONNECTIONTYPE POSTGIS), nous ne mentionnons pas ici la chaîne de connection au serveur PostgreSQL (la ligne CONNECTION) étant donné qu'elle dépend fortement de votre configuration.

Cette couche utilisera les trois modèles suivant :

imagemap_header.html :
pour l'entête (section HEADER de la couche) qui contiendra la ligne :

<map name="mymap">

imagemap_template.html :
pour le corps (section TEMPLATE de la couche), ce modèle sera utilisé pour chaque élément retourné par la requête que nous avons défini ci-dessus, et il contiendra les lignes :

<area shape="polygon" coords="[shpxy precision=0 proj=image] " href="#?[gid]" title="[nom]" alt="[nom]" onmouseover="displayData('[gid]',this.title,'[value]');" style="border: 1px #eee solid;background-color: #aaa;" />

et imagemap_footer.html :
pour le pied de page (section FOOTER de la couche) qui contiendra la ligne :

</map>

Nous vous donnons ci-dessous les lignes de la section format sortie de la mapfile (OUTPUTFORMAT) :

OUTPUTFORMAT
  NAME "imagemap"
  MIMETYPE "text/html"
  DRIVER "imagemap"
  EXTENSION "html"
  IMAGEMODE "PC256"
  TRANSPARENT FALSE
END

Si comme nous vous souhaitez sauvegarder l'imagemap résultante dans un fichier XML nommé imagemap.xml, utilisez la commande ci-dessous afin de récupérer le fichier désiré :

wget -O imagemap.xml "http://127.0.0.1/cgi-bin/mapserv?map=/[chemin]/imagemap.map&qlayer=[couche]&mode=nquery&searchmap=true"

ndrpf : vous noterez que nous utilisons ici le script cgi mapserv par souci de simplicité de ce manuel, néanmoins il est évident que vous pourriez générer l'imagemap en utilisant votre language de programmation préféré si le support mapscript pour ce lanaguage est installé sur votre système.

Nous avons donc maintenant notre imagemap dans le fichier imagemap.xml.

Dans notre page de consultation et plus précisément dans la balise img correspondant à l'image de la carte, il faut lui ajouter l'attribut usemap et y affecter le nom de notre imagemap.

Il va sans dire qu'il faut aussi ajouter le contenu de l'imagemap elle-même. Cela se fait facilement, par exemple si vous utilisez un script php, il vous suffira d'utiliser la commande include.

Dans notre cas, nous aurrons donc dans la page de consultation quelque chose du genre :

<map name="mymap">
[...]
</map>
<img src="ma_carte_generee.png" id="map" width="[ma_largeur]" height="[ma_hauteur]" border="1" style="[mon_style]" usemap="#mymap" />

Si vous souhaitez plus d'information concernant le support des imagemaps pour Mapserver vous pouvez consulter cette page (en anglais).