CartoWeb 3.5.0
Download Now!


CartoWeb
Advanced Geographical Information System for the Web

<!> Ce document est basé sur un traduction/compilation de la documentation de CartoWeb 3.0, document originellement publié par Frédéric Bauer sur ForumSIG.org (http://forumsig.org/showthread.php?t=2796). Il ne s'agit pas d'une traduction exacte et à jour de la documentation officielle disponible à l'adresse http://cartoweb.org/documentation.html <!>

French Translation, Merci de finir la traduction wiki Thanks for finish the wiki traduction...

A cet adresse http://www.alolise.org/wiki/index.php?title=CartoWEB3

French Translation, Merci de finir la traduction wiki Thanks for finish the wiki traduction...

Cette traduction provient du travail de FredB sur le forum forumsig.org

Ce n'est pas la traduction mais un howto pour comprendre le fonctionnement de cartoweb

INTRODUCTION

Cartoweb3 est une solution produite par Camptocamp (http://www.camptocamp.com/) et disponible depuis le 30 mars 2005 sous licence de logiciel libre GNU GPL (http://www.gnu.org). Elle est basée sur le moteur cartographique UMN Mapserver (http://mapserver.gis.umn.edu) et permet d'exploiter la grande majorité des formats de données géographiques (raster et vectoriels) courants. Elle donne aussi la possibilité de se connecter aux bases de données géographiques PostGreSQL/PostGIS, Arc SDE ou Oracle Spatial. Cartoweb n’est pas réellement un outil de développement, il n’est d’ailleurs pas à proprement parler un outil. En fait, Cartoweb fournit une structure de base pour le développement d’applications basée sur Mapserver et php/mapscript. Un grand nombre de fonctionnalités et de modules sont prédéveloppés, ainsi que la gestion des flux de données. Ces éléments sont personnalisables et intégrables dans un projet personnel.

Ce document présente Cartoweb, décrit son fonctionnement et sa structure, et explique comment configurer l’ensemble pour produire une application personnalisée.

Note1 : pour l’installation de Cartoweb, voir la documentation « Installation de l’environnement serveur ».

Note2 : Ce document est fortement inspiré de la notice en anglais fournie par Camtocamp. La consultation de cette dernière, pour compléter le présent document, serait une bonne idée. Elle est téléchargeable au format pdf à cette adresse : http://www.cartoweb.org/doc/cw3.1/book.pdf

ARCHITECTURE ET FONCTIONNEMENT GENERAL

Place de Cartoweb dans une application cartographique web

Cartoweb est essentiellement basé sur des scripts php5 qui communiquent avec MapServer via la librairie de fonctions php/mapscript. Il est le cœur du site (intranet ou internet) de diffusion de données cartographiques, à ce titre il se place sur le serveur, comme se placerait un site web classique, afin que les scripts puissent être exécutés. Pour comprendre comment fonctionne cet ensemble, nous allons suivre étape par étape le cheminement d’un échange d’informations entre le client distant et le serveur, c'est-à-dire depuis une requête émise par le client jusqu’au retour de la réponse.

[[image:Fig1.jpg|400px|]]

Sur la figure 1, ci-dessus, le chemin suivi, depuis la requête jusqu’à l’accès aux données géographiques, est représenté par les flèches rouges. En partant du client distant nous avons ainsi :

- L’envoi de la requête par le navigateur vers le Serveur, en l’occurrence un serveur Apache. - Apache analyse la requête et la redirige vers Cartoweb. - Cartoweb traite l’information via un grand nombre de scripts php5, ceux-ci sont organisés en plugins (voir document sur Cartoweb pour plus de détail). A partir de la requête envoyée par le client, cartoweb construit sa propre requête destinée à Mapserver. - Pour que les scripts puissent être exécutés Apache fait appel au module php5. - Un certain nombre de fonctions, utilisées dans les scripts de Cartoweb, sont spécifiquement destinées à la communication avec Mapserver. Ces fonctions font partie de la librairie de fonctions Mapscript. - Les fonctions Mapscript sont donc interprétées et traduisent pour Mapserver la requête produite par Cartoweb. - Mapserver réceptionne la requête, l’analyse, et y répond en consultant le Mapfile. - Le fichier Mapfile constitue en quelque sorte un index, grâce auquel MapServer connaît quelles informations qui sont disponibles dans les données et sait à quoi elles correspondent. Grâce au Mapfile, Mapserver accède donc aux données et récupère celles demandées par la requête.

Après cette première étape qui nous a montrés comment l’accès aux données était réalisé, voyons comment ces données sont traitées et retournées au client. Ce cheminement est représenté par les flèches vertes sur le schéma. En partant cette fois des données, nous pouvons distinguer les étapes suivantes :

- Les données sont récupérées et renvoyées à Mapserver. Les modes de communication, entre Mapserver et les données, diffèrent suivant la nature des données (formats des couches ou images), ils sont définis dans le Mapfile et Mapserver adoptent en conséquences « la marche à suivre ». - Une fois les données récupérées, Mapserver les traite pour produire des images et des métadonnées. - Les images ainsi produites, ainsi que les informations les accompagnant sont récupérées par Cartoweb via l’utilisation, une nouvelle fois, des fonctions Mapscript. - Cartoweb traite les informations en fonction de la requête initialement envoyée par le client et transmet l’ensemble à une sous-partie de Cartoweb qui se charge d’organiser les données en vu de l’affichage. - Avant le renvoi vers le client, les scripts php sont interprétés pour produire des pages html. Leur mise en page est gérée par un ensemble de fichiers appelés templates accompagnés éventuellement par des fichiers css (styles et mise en forme). Enfin des fonctions javascript peuvent être adjointes à la page pour la rendre plus dynamique. - Pour finir l’ensemble est renvoyé par Apache vers le client.

Les fonctionnalités offertes

Cartoweb dans sa forme de base rend possible l’implantation d’un nombre déjà important de fonctionnalités ; étant modulable et libre il peut être étendu librement et sans limite, si ce n’est les compétences de développement. Les fonctionnalités potentiellement exploitables sont ainsi :

* Accès à de nombreux formats de données raster : TIFF (world file), GeoTIFF, CEOs, DOQ, ECW, ESRI Labelled BIL, Arc/Info Binary Grid, OGDI and Erdas Imagine, GIF, PNG, JPEG * Accès à de nombreux formats de données vectorielles : Shapefiles, DGN, UK .NTF, SDTS, U.S. Census TIGER/Line, IHO S*57 (ENC), MIF, TAB, OGDI Vectors * Accès à des bases de données spatiales : PostgreSQL/PostGIS, ArcSDE et Oracle Spatial/Locator * Compatibilité avec les normes de l’Open GIS consortium WMS, WFS, SFS, GML * Sorties de données/images aux formats : PNG, GIF JPEG, PDF, WBMP, GeoTIFF, SWF * Gestion automatique des systèmes de projection * Environnement multi*tiers * Fonctionnalités de visualisation avancées en mode DHTML * Compatibilité avec les anciens navigateurs en mode HTML simple * Navigation : zoom, recentrage, déplacement, panning * Mesure de distance et de surface * Gestion dynamique de la classification des couches, de l’iconographie et des labels * Vignette de positionnement dynamique et barre d’échelle * Choix dynamique de l’échelle et de la taille de la carte * Création, modification et suppression d’objets de type point, ligne ou surface à l’aide d’une applet JAVA 1.1 (AWT) * Requête spatiale par point ou polygone avec retour des informations (attributs ou bases de données externes) * Exportation au format CVS des données attributaires * Localisation d’objets (centrage sur objet) par recherche dans les attributs ou base de données externes * Système de cache dynamique permettant de stocker les états de visualisation fréquents et de diminuer la charge de Mapserver * Impression au format PDF * Accès direct à des objets, des vues, des états * Gestion dynamique et hiérarchique des légendes, avec accès aux définitions de métadonnées externes * Interface multilingue * Regroupement hiérarchique des couches en thèmes dépendant éventuellement du contexte

Structure et éléments constituants

Structure générale

[[image:Fig2.jpg|60px|]]

Figure 2 : Structure de Cartoweb (source CartoWeb Documentation, Camptocamp)

Dans un premier temps, Cartoweb se compose de deux modules principaux : Cartoclient et Cartoserver. Cartoserver traite les données et communique avec Mapserver, Cartoclient gère, quant à lui, le lien avec le client, réception des requêtes et mise en forme des réponses. Ces deux modules permettent un mode de fonctionnement de type client-serveur, où un Cartoserver peut faire le lien avec Mapserver et fournir les résultats, pour le compte de plusieurs Cartoclients ; ceci via le protocole SOAP (http://www.w3.org/TR/soap12/). Toutefois Cartoweb peut fonctionner comme un module unique, où la communication entre Cartoserver et Cartoclient se fait directement (sans utiliser le protocole SOAP). Nous n’étudierons que ce dernier mode de fonctionnement dans la présente documentation.

Fonctionnalités

Pour proposer ses diverses fonctionnalités, Cartoweb applique le principe de modularité, chaque module appelé plugin et est chargé de réaliser des tâches bien précises. Deux critères permettent de décrire ces plugins : * leur appartenance à Cartoclient ou à Cartoserver ; * leur appartenance au cœur du système (Coreplugins) ou leur aspect annexe.

Les coreplugins sont indissociables et indispensables au fonctionnement de Cartoweb. Les autres plugins sont totalement indépendants et peuvent être implémentés ou non, suivant les besoins. Leur appartenance à Cartoserver ou à Cartoclient définit simplement leur niveau d’action.

Ce double découpage, comme nous le verrons dans 3.Structure détaillée, est présent à tous les plans, les scripts php, les fichiers de configurations et les templates sont structurés en fonction de ce découpage. Ceci permet de retrouver facilement les divers éléments et d’entrevoir leur fonction, mais en contrepartie fragmente beaucoup l’application et il est nécessaire de jongler avec un nombre important de fichiers.

En respectant cette structure il est tout à fait possible de développer ses propres plugins, répondant à des besoins spécifiques, voir la partie 5.Modification/Adaptation pour avoir quelques compléments sur ce point.

Fonctionnement

Le schéma ci-dessus présente le principe général de fonctionnement de cartoweb, voyons le rôle des éléments représentés. Mapserver/Données : Il s’agit de la source des données, que Cartoweb aura en charge de traiter. Fichiers de configuration : Les fichiers de configuration définissent, quels sont les plugins à activer et paramètrent leur fonctionnement. - Coreplugins : Les coreplugins, comme nous l’avons déjà signalé, constitue les éléments indispensables au fonctionnement de Cartoweb. Accompagnés des plugins activés, ils traitent et transforment les données pour permettre leur affichage. Plugins : Les plugins complètent l’action des coreplugins par l’apport de fonctionnalités supplémentaires. Templates : Les templates définissent la mise en page grâce au HTML et à des commandes supplémentaires interprétées par le moteur de templates Smarty (http://smarty.php.net). Css : Les Css (Cascading style sheets), définissent les styles (texte, blocs, etc…) à appliquer lors de la mise en page. Compléments : Les compléments sont des éléments qui viennent agrémenter la page produite et y implémente des fonctionnalités supplémentaires.

Le principe est donc simple. Les données transmises à Cartoweb sont traitées en fonctions des plugins activés et de leur configuration. Les données ainsi transformées sont mises en page et transmises au navigateur du client.

STRUCTURE DETAILLEE

Arborescence principale

[[image:Fig4.jpg|600px|]]

Figure 4 : Arborescence Principale de Cartoweb

Rôles et structure des fichiers

La structuration, nous l’avons déjà dit, est un aspect important pour Cartoweb.

Cette structuration apparaît clairement dans l’arborescence présentée sur la figure 4, ci –dessus.

Les dossiers représentés en bleu foncé sur la figure, sont les dossiers contenant les scripts php propres à Cartoweb.

Le dossier /include/ contient également du code, mais il s’agit de modules non spécifiquement écrits pour cartoweb ; il contient notamment le code permettant la gestion des pdf et le moteur de templates smarty.

Le dossier /scripts/, contient lui aussi des scripts, annexes, qui peuvent servir indépendamment de cartoweb, il y a notamment un script qui gère le nettoyage des données temporaires.

Les scripts principaux sont donc répartis dans cinq dossiers, on retrouve le double découpage présenté en 2.3.2 (Coreplugins/plugins, Cartoserver/cartoclient). {{refl|vers_2_3_2}}

Voyons le contenu de ces cinq dossiers. * Le dossier /client/ contient les scripts propres à cartoclient. * Le dossier /server/ contient les scripts propres à cartoserver. * Le dossier /common/ contient les scripts concernant à la fois cartoclient et cartoserver. * Le dossier /coreplugins/, comme son nom l’indique, contient les scripts décrivant les coreplugins. * Et le dossier /plugins/ contient de son coté les scripts des plugins supplémentaires.

La structure interne des dossiers /coreplugins/ et /plugins/, même s’ils ne contiennent pas la même chose, est identique. Il s’y trouve un dossier pour chaque plugin et dans ce dossier peuvent exister jusqu’à cinq autres sous-dossiers suivant le type de plugins :

* le sous-dossier /client/, concerne la partie de code du plugin qui s’exécute du coté de cartoclient. Certains plugins ne possèdent pas ce dossier, puisqu’ils ne s’exécutent que du coté cartoserver, le plugin mapquery par exemple, voir la figure 2 pour savoir de quel coté s’exécute les divers plugins.

* Le sous-dossier /server/, concerne la partie de code du plugin qui s’exécute du coté de cartoserver. Comme pour le sous-dossier /client/, certains plugins n’en possèdent pas.

* Le sous-dossier /common/, contient le code commun au coté cartoclient et cartoserver. Les plugins ne s’exécutant que d’un coté ne possèdent pas ce dossier.

* Le sous-dossier /templates/, contient les éléments de mise en page spécifiques au plugin.

* Le sous-dossier /htdocs/, contient les compléments spécifiques à la mise en page du plugin : images, javascript, css,…

Les dossiers en violet, /client_conf/ et /server_conf/, contiennent les fichiers de configuration (.ini) par défaut pour cartoweb et les plugins.

/client_conf/ contient le fichier de configuration de cartoclient (client.ini) et un fichier pour chaque plugin ayant un fonctionnement du coté cartoclient.

/server_conf/ contient le fichier configurant cartoserver (server.ini), un fichier pour chaque plugin ayant un fonctionnement du coté cartoserver et un fichier spécifique lié au mapfile (qui se trouve aussi dans ce dossier). Plus de détails sur ce dernier dossier seront donnés dans la partie 4.Configuration et utilisation.

Les dossiers en jaune sur la figure, /htdocs/, /templates/ et /templates_c/, contiennent les éléments de mises en page de cartoclient.

/log/ contient les journaux d’alertes.

/locale/ et /po/ concernent l’internationalisation.

/www-data/ contient les fichiers temporaires générés au cours de l’utilisation de cartoweb.

Les plugins existants

Les coreplugins

Images :Ce plugin définit le format d’affichage de la carte principale.

Layer :Ce plugin permet de décrire la structure des couches d’informations.

Location :Il s’agit du plugin qui décrit et paramètre les outils géographiques de navigation (zoom, déplacement).

Mapquery, Query, Tables :Ces plugins concernent le paramétrage et le fonctionnement des requêtes.

Statictools :Ce plugin permet la mesure de surfaces et de distances.

Les plugins

Auth :Permet la gestion des droits, autorisations et utilisateurs.

ExportCsv :Permet l’export des résultats de requêtes au format CSV.

ExportHtml :Permet l’export de la carte au format HTML.

ExportPdf :Permet l’export de la carte au format PDF.

Hilight :Gère la mise en évidence des objets sélectionnés sur la carte (surbrillance par exemple).

Outline :Autorise le tracé de lignes, points ou polygones sur la carte.

La figure ci-dessous, présente un exemple d’interface d’application développée avec Cartoweb, elle montre pour quelques éléments le plugin responsable du paramétrage.

[[image:Fig5.jpg|600px|]]

Figure 5 : Zones d'influence de quelques plugins Pour la configuration de ces plugins voir la partie 3. Configuration et utilisation

Schéma heuristique

La figure ci-dessous, montre une autre modélisation de Cartoweb, sur le principe d’un schéma heuristique.

[[image:Fig6.jpg|600px|]]

Figure 6 : Schéma heuristique général de Cartoweb

CONFIGURATION ET UTILISATION

Créer un projet

[[image:Fig7.jpg|600px|]]

Figure 7

Pour créer un nouveau projet, c’est à dire développer sa propre application, il faut créer un dossier au nom du projet dans le dossier /projects/ de cartoweb. Ce dossier possèdera une arborescence semblable à celle du dossier racine de cartoweb, voir figure 7 ci-dessous, qui montre l’exemple d’un projet appelé DDAF. Tous les dossiers de la figure 7 ne sont pas indispensables, il ne s’agit que d’un exemple. En fait dans cette arborescence on trouvera les fichiers de configurations propres au projet, les templates et éventuellement des plugins spécialement développés. On place donc dans le projet uniquement les fichiers qui diffèrent de la configuration par défaut proposée dans l’arborescence principale. Tous les éléments qui seront configurés dans le projet prévaudront sur ceux configurés par défaut dans le dossier racine. Ceci signifie par exemple que les paramètres entrés dans le fichier client.ini de /projects/monProjet/client_conf/ seront utilisés prioritairement par rapport à ceux du fichier client.ini de cartoweb/client_conf/. Par contre tout ce qui n’est pas explicitement renseigné dans le projet fonctionnera avec les paramètres par défaut.

Les fichiers suivants sont ceux qui peuvent être modifiés pour configurer spécifiquement pour l’application :

{|border=3 |client_conf/*.ini |rowspan=3| Configuration de cartoclient et cartoserver et des plugins |- | server_conf/server.ini |- | server_conf/<mapId>/*.ini |}

{|border=3 |[core]plugins/*/client/*.php |rowspan=5| Modification ou ajout de plugins |- | [core]plugins/*/common/*.php |- | [core]plugins/*/server/*.php |- |[core]plugins/*/htdocs/*.php |- | [core]plugins/*/templates/*.tpl |}

{|border=3 | htdocs/css/*.css |rowspan=4| Mise en page spécifique au projet |- | htdocs/js/*.js |- | htdocs/gfx/layout/*.gif |- | templates/*.tpl |}

Remarques : En théorie 5 fichiers devraient suffire à définir une application :

* Client.ini * Server.ini * Mapfile.map * Mapfile.ini * Layer.ini

Pour lancer l’application il faut ouvrir le fichier client.php qui se trouve dans cartoweb/htdocs/. Pour que le projet lancé automatiquement à l’ouverture de la page, soit celui que l’on a créé, il faut ajouter un fichier current_project.txt dans le dossier racine de cartoweb3. Ce fichier ne doit contenir qu’une seule ligne avec le nom du projet (le même que le dossier où celui-ci se trouve).

Configuration, les fichiers .ini

Les fichiers de configurations (.ini) sont les intermédiaires principaux permettant de personnaliser une application. Il en existe un pour chaque plugin, plus un pour cartoserver, un pour cartoclient et un pour le mapfile. Sur la figure 7, il s’agit des fichiers représentés en vert. Ils se trouvent dans le dossier /client_conf/, pour les fichiers de configuration des plugins s’exécutant du coté client, dans /server_conf/nomProjet/ pour les fichiers de configuration des plugins s’exécutant du coté server et dans /server_conf/ Pour le fichier server.ini.

Remarque : Les commandes des fichiers de configuration sont sensibles à la casse. Il n’y a jamais de majuscule au début de la commande.

auth.ini

Ce fichier est un élément de la gestion des droits d’accès.

Il permet de faire apparaître la boîte de dialogue qui permet de se loguer.

Il gère la liste des utilisateurs et leur mot de passe.

Fait correspondre aux utilisateurs des rôles.

Les rôles définissent le niveau de droit accorder à l’utilisateur.

On peut créer autant de rôles que l’on désire, mais trois sont prédéfinis :

* all * loggedin * anonymous

Les commandes de ce fichier sont :

* AuthActive = True/False :Active ou non le lien pour accéder à la page de connexion.

* users.USERNAME = String :Définit le mot de passe pour l’utilisateur dont le nom est USERNAME. Ce mot de passe n’est pas inséré en clair, il s’agit en fait du mot de passe traité avec md5sum, voir ci-dessous.

* roles.USERNAME = Liste :Définit les rôles attribués à un utilisateur.

Pour coder un mot de passe avec md5sum, taper en ligne de commande, en s’assurant d’être placé dans le dossier où se trouve md5sum.exe :

  • echo -n motdepasse | md5sum

Exemple de fichier auth.ini :

  • authActive = true users.fred = a0988225952d851d35607b546b3a0234 users.visiteur = a0988225952d851d35607b546b3a0234 roles.fred = admin, visiteur roles.visiteur = visiteur

Client.ini

Ce fichier configure Cartoclient.

Les commandes principales de ce fichier sont :

* cartoserverDirectAccess = True/False :True signifie que l’on n’utilise pas le mode SOAP, pour cela il faut que Cartoclient et Cartoserver soient sur la même machine.

* showProjectChooser = True/False :Permet d’afficher le sélectionneur de projets.

* availableProjects = Liste :Indique quels sont les projets à faire apparaître dans la liste.

* securityAllowedRoles = Liste :Liste des rôles autorisés à afficher les données.

* showDevelMessages = True/False :Affiche les messages relatifs au développement

* developerIniConfig = True/False

* allowTests = True/False :Autorise les tests par l’interface Web.

* cartoclientUrl = URL :Chemin vers Cartoclient (accès au fichier client.php)

* cartoserverUrl = URL :Chemin vers Cartoserver (accès au fichier cartoserver.wsdl.php)

* mapId = String :Indique le fichier Mapfile à utiliser, il s’agit du nom indiqué Par le paramètre NAME du Mapfile.

* initialMapStateId = String :Sélectionne un état initial.

* initialTool = zoom_in/zoom_out/pan/query/distance/surface :Indique quel outil est sélectionné par défaut à l’affichage de la page.

* smartyCompileCheck = true|false :Avec la valeur False les templates sont compilés dans le dossier /Template_c/ et ne peuvent par conséquent plus être modifié, cela augmente les performances de fonctionnement.

* loadPlugins = Liste :Indique les plugins à charger en plus des Coreplugins. Attention plusieurs plugins ont un équivalent du coté Cartoserver, il faudra les charger aussi du coté serveur dans le fichier Mapfile.ini.

* I18nClass = I18nDummy/I18nGettext (ici une majuscule en première lettre!!!)

* defaultLang = String :Choix de la langue par défaut, ici fr.

Exemple de fichier client.ini :

  • ; ********Configuration du client pour le projet DDAF********** ; Affichage de la liste de sélection des projets : showProjectChooser = True ; Acces direct au Cartoserver, pas d'utilisation de SOAP : cartoserverDirectAccess = True ; Selection initiale de l'outil : initialTool = pan ; Liste des plugins à charger : loadPlugins = auth, outline, exportPdf ; internationalisation :

    I18nClass = I18nGettext DefaultLang = fr ; Gestion des caches : noWsdlCache = false noMapInfoCache = false smartyCompileCheck = false ; Activation des messages de développement : showDevelMessages = true allowTests = false smartyDebugging = false ; Fichier Mapfile à utiliser : mapId = DDAF ; Type d'URL 'Miniproxy|Symlink' : urlProvider = Miniproxy ; Choix de l'état à charger au premier affichage de l'application initialMapStateId = default

ExportPdf.ini

Ce fichier sert à configurer les paramètres d’export au format pdf de la carte. Les commandes sont nombreuses et permettent principalement de paramétrer la mise en page. Nous n’allons pas détailler toutes ces commandes, consulter la notice de Cartoweb pour plus de détails.

Les commandes sont regroupées en trois catégories :

* Général * Formats * Blocks

Les commandes de la catégorie « général » s’écrivent :

* general.nomDeCommande = Valeur :Par exemple la commande définissant les résolutions possibles pour le pdf :

* general.resolutions = Liste

Exemple de configuration de « général » :

  • ; ************ Configuration de l’export pdf ***************** ; Paramétrage general : general.formats = A4, A3 general.defaultFormat = A4 general.resolutions = 96, 150, 300 general.mapServerResolution = 96 general.defaultResolution = 96 general.overviewScaleFactor = 10 general.defaultOrientation = portrait general.activatedBlocks = titrelegend, mainmap, title, note, scalebar, overview, copyright, queryResult, page, legend, scaleval,logo

    general.pdfEngine = CwFpdf ;general.pdfVersion = 1.3 general.output = redirection general.filename = "Carte-[date,dMY-Hi].pdf" general.distUnit = mm general.horizontalMargin = 0 general.verticalMargin = 0 general.allowedRoles = all ;general.importRemotePng = true

Les commandes de la catégorie « format » s’écrivent :

* formats.nomDuFormat.nomDeCommandes = valeur :Le nom du format correspond au nom définit par general.formats =

Par exemple la commande définissant la longueur de la page pdf pour le format A4:

* formats.A4.bigDimension = Longueur

Exemple de configuration de « formats » :

  • ; Paramétrage des formats ; Format A4 formats.A4.label = A4 formats.A4.bigDimension = 297 formats.A4.smallDimension = 210 formats.A3.maxResolution = 300 ; Format A3 formats.A3.label = A3 formats.A3.bigDimension = 420 formats.A3.smallDimension = 297 formats.A3.maxResolution = 150 formats.A3.allowedRoles = all

Les commandes de la catégorie « blocks » s’écrivent :

* blocks.nomDuBloc.nomDeCommande = Valeur :Le nom du bloc est un des noms définis par general.activatedBlocks =

Par exemple la commande définissant la taille de la police pour un bloc qu’on aura nommé « title » :

* blocks.title.fontSize = Taille

Exemple de configuration du bloc « title » :

  • blocks.title.zIndex = 2 blocks.title.weight = 10 blocks.title.verticalBasis = top blocks.title.verticalMargin = 15 blocks.title.hCentered = true blocks.title.fontSize = 20 blocks.title.fontItalic = true blocks.title.fontBold = true blocks.title.fontUnderline = true blocks.title.backgroundColor = -eeeeee blocks.title.height = 15

Pour les blocs il existe aussi l’ensemble de commandes s’écrivant :

* template.nomDeCommande = Valeur

Cet ensemble de commandes définit un formalisme par défaut appliqué à l’ensemble des blocs si les paramètres ne sont pas redéfinis explicitement dans un bloc.

Exemple de configuration de « Template » :

  • ; parametres par défaut des blocs : template.type = text template.fontFamily = times template.fontSize = 12 template.fontItalic = false template.fontBold = false template.color = black template.backgroundColor = white template.borderWidth = 0.25 template.borderColor = black template.borderStyle = solid template.padding = 3 template.horizontalMargin = 0 template.verticalMargin = 0 template.horizontalBasis = left template.verticalBasis = top template.hCentered = false template.zIndex = 1 template.textAlign = center template.verticalAlign = center template.orientation = horizontal

Images.ini

Ce fichier existe en deux exemplaires, l’un configure le plugin pour le coté Cartoclient (se situe dans /client_conf/), l’autre pour le coté Cartoserver (se trouve dans /server_conf/nomProjet ). Il permet de configurer l’affichage de la carte principale.

Coté client

Les commandes coté client :

* mapSizesActive = True/False :Active ou non la possibilité de modifier la taille de la carte (taille d’affichage à l’écran). * mapWidth = Taille en pixels (si MapSizesActive = False) :Définit la largeur fixe de la carte. * mapHeight = Taille en pixels (si MapSizesActive = False) :Définit la hauteur fixe de la carte. * mapSizes.-.width = Taille en pixels :Définit une largeur possible. Le - est un chiffre qui identifie une option donnée. * mapSizes.-.height = Taille en pixels :Définit une hauteur possible. Le - est un chiffre qui identifie une option donnée. * mapSizes.-.label = String :Définit le nom qui devra s’afficher pour une option d’affichage donnée. Le - est un chiffre qui identifie une option donnée. * mapSizesDefault = Nombre :Définit la taille à appliquer par défaut. Le chiffre correspond à l’option d’affichage à mettre par défaut.

Exemple de Configuration :

  • ;************ Paramétrage de carte ************** mapSizesActive = true mapSizesDefault = 1 ; Option d’affichage 0 : mapSizes.0.label = petite mapSizes.0.width = 430 mapSizes.0.height = 300 ; Option d’affichage 1 : mapSizes.1.label = moyenne mapSizes.1.width = 600 mapSizes.1.height = 420 ; Option d’affichage 2 : mapSizes.2.label = grande mapSizes.2.width = 860 mapSizes.2.height = 600 ; Option d’affichage 3 : mapSizes.3.label = très grande mapSizes.3.width = 1240 mapSizes.3.height = 840

Coté Serveur

Du coté Cartoserver le fichier, indique simplement la taille maximale acceptée pour la carte.

Les commandes sont:

* maxMapWidth = Taille en pixels :Largeur maximale. * maxMapHeight = Taille en pixels :Hauteur maximale.

Layers.ini

Ce fichier existe en deux exemplaires, l’un configure le plugin pour le coté Cartoclient (se situe dans /client_conf/), l’autre pour le coté Cartoserver (se trouve dans /server_conf/nomProjet ). Il permet de configurer la structure des couches géographiques.

Coté Client

Coté client il n’y a qu’une seule commande disponible.

* applySecurity =True/False :Active la gestion de la sécurité au niveau des couches d’informations géographiques.

Coté Serveur

Il existe deux types d’objets pour gérer les couches :

* les Layers, qui correspondent à une et une seule couche, * les LayerGroup, qui rassemblent plusieurs couches ou plusieurs groupes de couches.

Les commandes pour les objets de type Layer s’écrivent :

* Layer.nomCouche.nomDeCommande = Valeur

Les commandes disponibles sont :

* layer.NomCouche.[…] :* ClassName = Layer ::Définit le type d’objet Layer ou Layergroup. :* MsLayer = Nom de la couche ::Définit le nom de la couche. :* Label = Nom dans la légende sur le client ::Définit le nom de la couche qui apparaîtra au niveau de la légende. :* Icon = ::Définit l’image à associer à la couche dans la légende. :* Link = URL ::Permet de créer un lien hypertexte vers des infos sur la couche, dans la légende.

Les commandes pour les objets de type Layer s’écrivent :

* Layer.nomDuGroupe.nomDeCommande = Valeur

Les commandes disponibles sont :

* layers.layerId.[…] :* className = LayerGroup ::Définit le type d’objet Layer ou Layergroup. :* children = Liste,

Liste des couches faisant partie du groupe, on utilise le nomCouche.

* Aggregate = True/False. :Si True alors les enfants ne sont pas séparables du parent lors de l’affichage dans la légende. * Label = :Définit le nom du groupe qui apparaîtra au niveau de la légende. * Icon = :Définit l’image à associer au groupe dans la légende. * Link = :Permet de créer un lien hypertexte vers des infos sur le groupe, dans la légende. * rendering = tree|block|radio|dropdown :Définit la façon dont le groupe doit être représenté dans la légende : sous forme d’arborescence, de blocs, de bouton radio ou de liste.

Exemple de configuration :

  • ;********* Configuration de la structure des couches**************** ; Création automatique de la légende : autoClassLegend = true

    ;LayerGroup layers.root.className = LayerGroup layers.root.children = limadmin layers.root.rendering = block layers.root.label = Couches affichables

    layers.limadmin.className = LayerGroup layers.limadmin.children = limcomm,limcanton layers.limadmin.label = Limites administratives ;Layers layers.limcomm.className = Layer layers.limcomm.label = Limites communales layers.limcomm.msLayer = limcomm layers.limcanton.className = Layer layers.limcanton.label = Limites cantonales layers.limcanton.msLayer = limcanton

Location.ini

Ce fichier existe en deux exemplaires, l’un configure le plugin pour le coté Cartoclient (se situe dans /client_conf/), l’autre pour le coté Cartoserver (se trouve dans /server_conf/nomProjet ). Il permet de configurer les fonctions de recherche et de déplacement.

Coté client :

* scalesActive = Ture/False :Active ou non la possibilité de changer d’échelle. * recenterActive = True/False :Active ou non la possibilité de recentrer la carte. * idRecenterActive = True/False :Active ou non la possibilité de recentrer la carte sur un élément dont on indique l’identifiant. * idRecenterLayers = Liste de Layers :Liste des couches pour lesquelles on autorise le recentrage à partir de l’identifiant. * shortcutsActive = True/False :Active ou non la possibilité d’utiliser des raccourcis, c’est à dire des points dont les coordonnées ont été présaisis. * scaleUnitLimit = * panRatio = Nombre :Définit l’amplitude du déplacement de la carte lors de l’utilisation des directions (N, E, S, O). 0,5 par exemple, signifie qu’on se déplace d’une demi-carte à chaque fois.

Exemple de configuration :

  • ;*****************Configuration location client ************** recenterActive = true scalesActive = true shortcutsActive = true idRecenterActive = true idRecenterLayers = Foret scaleUnitLimit = 100000 panRatio = 0.5

Coté Serveur

* minScale = Nombre :Seuil minimal pour l’échelle. * maxScale = Nombre :Seuil maximal pour l’échelle. * scaleModeDiscrete = True/False :Active ou non le mode discret pour les échelles. C’est à dire que les niveaux de zoom sont prédéfinis et on peut choisir l’échelle en fonction des choix créés. * zoomFactor = Nombre :Facteur de zoom si le mode discret est désactivé. * scales.-.value = Nombre :Définit une option d’échelle. Le - est un chiffre qui identifie une option donnée. * scales.-.label = String :Définit le nom d’une option d’échelle. Le - est un chiffre qui identifie une option donnée. * scales.-.visible = True/False :Affiche ou non l’échelle. Si False l’échelle n’est pas sélectionnable par la liste de choix, mais reste accessible par l’utilisation de zoom-in et zoom_out. * shortcuts.-.label = String :Nom du raccourci. * shortcuts.-.bbox = X1,Y1,X2,Y2 :Boite englobante du raccourci. * recenterDefaultScale = Nombre :Echelle à utiliser lors du recentrage.

Exemple de configuration :

  • ;*****************Configuration location serveur ************** ; seuils de zoom : minScale = 5000 maxScale = 500000 recenterDefaultScale = 10000 ; Configuration des echelles predefinies : scaleModeDiscrete = true ; Les echelles : scales.0.label = 1/5000 scales.0.value = 5000 scales.0.visible = true scales.1.label = 1/10000 scales.1.value = 10000 scales.1.visible = true scales.2.label = 1/25000 scales.2.value = 25000 scales.2.visible = true scales.3.label = 1/50000 scales.3.value = 50000 scales.3.visible = true scales.4.label = 1/75000 scales.4.value = 75000 scales.4.visible = true scales.5.label = 1/100000 scales.5.value = 100000 scales.5.visible = true scales.6.label = 1/250000 scales.6.value = 250000 scales.6.visible = true scales.7.label = 1/500000 scales.7.value = 500000

Outline.ini

Ce fichier existe en deux exemplaires, l’un configure le plugin pour le coté Cartoclient (se situe dans /client_conf/), l’autre pour le coté Cartoserver (se trouve dans /server_conf/nomProjet ).

Ce plugin permet de tracer des éléments sur la carte, pour les voir imprimé par la suite.

Coté Client

* multipleShapes = True/False :Autorise ou non la possibilité de tracé plusieurs dessins en même temps. * labelMode = True/False :Active ou non la possibilité de donner des non aux tracés réalisés.

Coté Serveur

* PointLayer = String :Nom de la couche qui servira au tracé de points, voir 3.3 Mapfile. * LineLayer = String :Nom de la couche qui servira au tracé de lignes, voir 3.3 Mapfile. * PolyLayer = String :Nom de la couche qui servira au tracé de polygones, voir 3.3 Mapfile.

Query.ini

Ce fichier existe en deux exemplaires, l’un configure le plugin pour le coté Cartoclient (se situe dans /client_conf/), l’autre pour le coté Cartoserver (se trouve dans /server_conf/nomProjet ).

* persistentQueries = Tue/False :Rend le résultat de la requête permanent, c’est à dire qu’il ne disparaît lors des rechargements de pages. Il faut pour cette fonctionnalité que la métadonnée «id_attribute_string » soit renseignée, voir 3.3 Mapfile. * displayExtendedSelection = True/False : * queryLayers = Liste :Définit les couches sur lesquelles les requêtes sont autorisées. * returnAttributesActive = True/False :Autorise ou non le renvoie des attributs. Si False, seul l’identifiant est renvoyé.

Exemple de configuration :

  • returnAttributesActive = true persistentQueries = true displayExtendedSelection = false queryLayers = PPR

Coté Serveur

Une seule commande :

* drawQueryUsingHilight = True/False :Autorise ou non l’utilisation du plugin Hilight pour la mise en évidence des objets sélectionnés. Voir 3.3 Mapfile pour quelques précisions concernant le fonctionnement de Hilight.

Mapquery.ini

Ce fichier permet de gérer le lien avec Mapserver lors de requêtes.

Il n’y a que deux commandes :

* MaxResults = Nombre :Nombre maximum de résultats. * ignoreQueryThreshold

nomMapfile.ini

Ce fichier participe à la configuration de Cartoserver.

Ce fichier se trouve dans le dossier /server_conf/nomProjet/

Les commandes sont :

* mapInfo.loadPlugins = Liste :Indique les plugins à charger en plus des Coreplugins. Attention plusieurs plugins ont un équivalent du coté Cartoclient, il faudra les charger aussi du coté client.

* mapInfo.initialMapStates.MapStateId.[…] :* Layers.LayerId .[…] ::* Selected True/False ::* Unfolded True/False ::* Hidden True/False ::* Frozen True/False

Avec :

::* Selected ::: Sélectionne la couche indiquée par le LayerId. ::* Unfolded ::: Les couches enfants sont invisibles. ::* Hidden ::: Les couches et les enfants n’apparaissent plus dans la liste, mais restent toutefois visibles si elles sont activées. ::* Frozen ::: Les couches apparaissent dans la liste mais ne peuvent être cochées ou décochées.

Exemple de commande pour définir la boîte englobante de la carte initiale :

* mapInfo.initialMapStates.initialMapStateId.location.bbox = "xmin,ymin,xmax,ymax"

  • ; Choix des plugins : mapInfo.loadPlugins = outline, hilight, exportPdf ; définition de l’état initial default mapInfo.initialMapStates.default.layers.limcomm.selected = true ; Charset encoder class

    EncoderClass.config = EncoderISO

server.ini

Ce fichier configure Cartoserver.

Les commandes sont :

* Commandes pour la gestion des caches : :* noWsdlCache = True/False :* noMapInfoCache = True/False ::True pour le développement et false pour la production. :* noMapResultCache = True/False :* noSoapXMLCache = True/False :: True pour le développement et false pour la production.

* Autres commandes :

:* imageUrl = String ::Chemin vers le dossier où Mapserver génère les cartes. :* showDevelMessages = True/False

Le mapfile

Ce fichier (en rouge sur la figure 7) se trouve dans un dossier portant le nom du projet, contenu dans le dossier /server_conf/, le mapfile portant lui-même le nom du projet.

On a ainsi :

Projects/nomProjet/Server_conf/nomProjet/nomProjet.map

Le Mapfile décrit l’ensemble des couches, leurs symbolisations et beaucoup d’autres choses pour comprendre et créer un Mapfile voir la documentation « Mapserver » et la documentation de référence à l’adresse suivante :

http://mapserver.gis.umn.edu/doc44/mapfile-reference.html.

Dans Cartoweb un projet possède obligatoirement un Mapfile, et ce Mapfile est accompagné d’un fichier de configuration qui doit s’appeler NomMapfile.ini. Il est commode que le Mapfile et le projet portent le même nom.

Utilisation de outline

Pour que le plugin outline fonctionne, il faut ajout au mapfile trois couches « virtuelles » qui accueilleront les tracés.

Voici un exemple de déclaration de ces couches :

  • LAYER NAME "cartoweb_point_outline" TYPE POINT
  • .. END LAYER NAME "cartoweb_line_outline" TYPE LINE
  • .. END LAYER NAME "cartoweb_polygon_outline" TYPE POLYGON
  • .. END

Si l’on veut en plus utiliser la possibilité de donner des noms aux différents tracés, il faut adjoindre à ces couches un objet Label, comme le montre l’exemple ci-dessous :

  • LAYER NAME "cartoweb_point_outline" TYPE POINT
    • .. CLASS
      • STYLE
        • ..
        END LABEL
        • FONT Vera TYPE truetype COLOR 51 51 51 SIZE 10
        END
      END
    END

Utilisation de Hilight

Pour utiliser le plugin hilight il faut pour les couches qui pourront être sélectionnées ajouter une deuxième couche qui portera le même nom suivi de « _hilight ». Cette seconde couche définit le style de l’objet sélectionné.

Par exemple pour la couche suivante :

  • LAYER
    • NAME "PPR" CONNECTIONTYPE OGR CONNECTION "D:\data\PPR.TAB" TYPE Polygon
      • PROJECTION "init=epsg:27582"
      END METADATA
      • "id_attribute_string" "IDENTPERI|string"
      END CLASS
      • NAME "PPR" COLOR 10 255 255
      END
    END

On ajoutera :

  • LAYER
    • NAME "PPR_hilight" TYPE POLYGON CONNECTIONTYPE OGR CONNECTION "D:\Data\PPR.TAB" TRANSPARENCY 50 CLASS
      • STYLE
        • COLOR 255 0 104
        END
      • END
    END

Les métadonnées

Cartoweb est capable d’interpréter un certain nombre de métadonnées.

Voici quelques-unes unes de ces métadonnées :

* "exported_values" :indique la liste des metadonnées envoyées au client * "force_imagetype" "jpeg|png..." :Force le format d’affichage spécifiquement pour une couche. * "id_attribute_string" "name|type" :Désigne le nom du champ identifiant de la couche et son type (integer ou string) * "query_returned_attributes" "attribute1 attribute2" :Indique les champs dont le contenu doit être renvoyé lors d’une requête.

* "hilight_color" "0-255 0-255 0-255" * "hilight_createlayer" "true" * "hilight_transparency" "1-100" * "mask_color" "0-255 0-255 0-255" * "mask_transparency" "true" * "outside_mask" "layer_name"

Autres fichiers

Les autres fichiers de configuration sont les templates, les css et les javascript principalement. Ces fichiers peuvent être spécifiques à un plugin ou s’appliquer à l ‘ensemble de cartoserver. Enfin, il peut aussi y avoir des plugins spécialement développés pour le projet, dans ce cas-là celui-ci est placé dans le dossier /plugin/.

Liens utiles

* Le site sur Mapserver : ** http://mapserver.gis.umn.edu

* La doc de référence pour le Mapfile : ** http://mapserver.gis.umn.edu/doc44/mapfile-reference.html

* Le site de Camtocamp : ** http://www.camptocamp.com/

* La doc pour Cartoweb : ** http://www.cartoweb.org/doc/book.pdf.

* Pour apprendre à utiliser le moteur de templates Smarty : ** http://smarty.php.net

* Un manuel en français pour php : ** http://fr3.php.net/manual/fr/install.php

* Des liens pour php/mapscript : ** http://mapserver.gis.umn.edu/doc44/phpmapscript-class-guide.html ** http://mapserver.gis.umn.edu/cgi-bin/wiki.pl?PHPMapScriptCGI ** http://mapserver.gis.umn.edu/cgi-bin/wiki.pl?PHPMapScript ** http://mapserver.gis.umn.edu/doc/phpmapscript-byexample-howto.html

* Pour comprendre le protocole SOAP : ** http://www.w3.org/TR/soap12/

* D'excellents forum sur le SIG en général, avec un topic spécial technologies web : ** http://forumsig.symen.ch ** http://geomatique.georezo.net

* Ensembles des mailing-list autour de Mapserver : ** http://lists.maptools.org/mailman/listinfo

* La mailing-list de Cartoweb : ** http://lists.maptools.org/mailman/listinfo/cartoweb-users

* Pour en savoir plus sur la licence GNU : ** http://www.gnu.org

CartoWeb Wiki: FrenchTranslation (last edited 2020-01-18 14:27:21 by jay)

© 2002-2007 CartoWeb by Camptocamp SA - Wiki powered by MoinMoin