WOW !! MUCH LOVE ! SO WORLD PEACE !
Fond bitcoin pour l'amélioration du site: 1memzGeKS7CB3ECNkzSn2qHwxU6NZoJ8o
  Dogecoin (tips/pourboires): DCLoo9Dd4qECqpMLurdgGnaoqbftj16Nvp


Home | Publier un mémoire | Une page au hasard

 > 

Développement d'une application de webmapping MapServer/PostGIS

( Télécharger le fichier original )
par Julien Berron
Université d'Avignon et des Pays de Vaucluse - Master 2 Géomatique et Conduite de Projets 2006
  

Disponible en mode multipage

Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy

Master 2 Professionnel

Géomatique et

Conduite de Projets de Développement

RAPPORT DE STAGE

- Développement d'une application de Webmapping -

- pour la Mairie de Crest (26) -

- Promotion 2006 - 2007 -

 
 
 

- Université d'Avignon et des Pays de Vaucluse -

74 rue Louis Pasteur

84029 Avignon Cedex 1

- Mairie de Crest -

18 rue de la République

26400 Crest

Master 2 Professionnel

Géomatique et Conduite de Projets de Développement

- Année 2006 - 2007 -

Enseignant responsable : Lahouari Kaddouri

Jury de soutenance : Lahouari Kaddouri

Cyrille Genre-Grandpierre

Maître de stage : Laurent Chazot

(service informatique - Mairie de Crest)

- SOMMAIRE -

Table des Figures 4

Glossaire 5

Avant-Propos 6

I - Contexte et nature de la mission 8

1- Contexte de la mission 8

2- Nature de la mission 9

2.1. Présentation de la mission 9

2.2. Cahier des charges 9

2.3. Notions de Webmapping et Open Source 10

3- Pertinence du projet 12

3.1. Contexte général : progression du taux d'équipement des collectivités locales 12

3.2. Utilité et image du webmapping 13

II - Mise en oeuvre et rendu 15

1- Organisation de travail 15

2- Choix de la solution 16

2.1. Technologies libres disponibles 16

a. HTML simple (carte statique) 16

b. Solution SVG (Scalable Vector Graphics) 17

c. Applet Java 17

d. Serveur cartographique open source 18

2.2. Technologie et distribution choisies 19

3- Intégration et développement 22

3.1. Installation de la distribution 22

3.2. Intégration des données 23

3.2. Développement de l'interface web 25

4- Rendu 26

4.1. Aperçu de l'ergonomie 26

4.2. Détail des fonctionnalités 28

III - Evaluation 30

1- Côté commanditaire 30

1.1. Utilité de l'application 30

1.2. Perspectives d'évolution 30

a. Evolution des fonctionnalités et de la configuration existantes 30

b. Développement de nouvelles fonctionnalités 31

2- Côté prestataire 31

2.1. Intérêt de la mission 31

2.2. Difficultés rencontrées 32

Conclusion 34

Annexes 35

English version 53

Bibliographie et webographie 54

- TABLE DES FIGURES -

Figure 1. Localisation 8

Figure 2. Localisation des services municipaux concernés 8

Figure 3. Principe de l'architecture client / serveur 11

Figure 4. Evolution du taux d'équipement en SIG 13

Figure 5. Planning prévisionnel 16

Figure 6. Solutions et fonctionnalités 20

Figure 7. Distribution choisie 21

Figure 8. Architecture de l'application 22

Figure 9. Modèle conceptuel des données 24

Figure 10. Modèle conceptuel de traitement 25

Figure 11. Page d'accueil et formulaire d'authentification 27

Figure 12. Interface de navigation 28

Figure 13. Fonctionnalités avancées 29

Figure 14. Planning observé 32

- GLOSSAIRE -

API Application Programming Interface (Interface de programmation d'Application).

Il s'agit ici de l'ensemble des classes disponibles pour une plateforme donnée.

Applet Application qui s'exécute côté client dans la fenêtre du navigateur.

CGI Common Gateway Interface. Script exécuté côté serveur écrit en général en Perl ou C#. Il permet l'échange de données entre le serveur et le navigateur. Quand il reçoit une requête du poste client, le CGI détermine (en fonction de l'extension) l'action à effectuer.

EPSG Nomenclature définie l'European Petroleum Survey Group (devenue depuis le Oil and Gas Producers Surveying and Positioning Committee -OGP-) regroupant sous un code unique à 5 chiffres les systèmes de référence spatiale existant dans le monde.

Framework Environnement de développement permettant la production de tout ou partie d'une application.

Géomatique Ensemble des applications relatives au traitement informatique des données géographiques.

HTTP Hypertext Transfer Protocol. Protocole de communication client-serveur très utilisé pour internet. Le HTTP constitue la partie application de l'ensemble des protocoles de la pile TCP/IP (Transmission Control Protocol / Internet Protocol) utilisés pour les échanges d'informations sur internet.

Mapscript API permettant l'accès à la bibliothèque de fonctions associées à MapServer. Exploitable à partir de nombreux langages de programmation (C#, Java , PHP, Perl, Python, Ruby) selon la compilation de MapServer, Mapscript est très souvent utilisé en PHP.

PHP Hypertext Preprocessor. Langage de script libre très populaire souvent utilisé pour être exécuté par un serveur HTTP.

Projection Système de coordonnées spatiales résultant de l'application de formules mathématiques destinées à traduire des coordonnées géographiques en coordonnées planes (carte).

SGBD(R) Système de Gestion de Base de Données (Relationnelle). Programme ou ensemble de programmes d'administration de base de données permettant la saisie, l'importation, le stockage, l'indexation, la manipulation, l'analyse et l'extraction des données.

SIG Système d'Information Géographique. Ensemble des moyens humains et matériels (informatique et données) permettant l'administration et l'exploitation de données géoréférencées.

SQL Structured Query Language. Langage de requête standardisé permettant d'interroger une base de données relationnelle (ou une table).

Webmapping Ensemble des techniques permettant la diffusion en ligne de données géoréférencées.

- AVANT- PROPOS -

Les SIG en ligne connaissent depuis quelques années un développement soutenu. Ils permettent en effet la diffusion de l'information ainsi que la mutualisation des données et sont en cela complémentaires par rapport aux plateformes bureautiques ayant encore le quasi monopole de la production de données.

Une conjonction de facteurs crée un contexte favorable à la hausse du taux d'équipement notamment des collectivités et organismes publics ou parapublics. Parallèlement à une offre éditeur de plus en plus riche, des solutions libres souvent robustes et éprouvées permettent de concevoir des outils sur mesure largement adaptables.

C'est ce type de mission que je cherchais à réaliser dans le cadre de mon stage de Master 2. Il s'agit d'un travail de 17 semaines effectué d'avril à septembre 2007.

Avant d'aller plus loin, je tiens à remercier M. Laurent Chazot, responsable du service informatique de la Mairie de Crest et M. Hervé Mariton, Maire de Crest, pour la mission qui m'a été confiée ainsi que l'ensemble du personnel de la Mairie pour la qualité de leur accueil.

Je remercie également Aline et Sophie pour l'organisation et la direction de la table ronde consacrée au webmapping et aux solutions libres à l'Université d'Avignon le 07 mars 2007. Cette réunion m'a apporté de nombreux éclairages qui ont contribué à orienter mes choix.

Merci enfin à la communauté du monde du webmapping libre pour son efficacité et sa disponibilité ainsi qu'à toutes celles et à tous ceux, en particulier Diane et Evgeni, qui m'ont aidé dans la réalisation de cette mission.

Merci à toutes et tous.

Plan du Rapport

I - CONTEXTE ET NATURE DE LA MISSION

1- Contexte de la mission

2- Nature de la mission

3- Pertinence du projet

II - MISE EN OEUVRE ET RENDU

1- Organisation de travail

2- Choix de la solution

3- Intégration et développement

4- Rendu

III - EVALUATION

1- Côté commanditaire

2- Côté prestataire

*

* *

I - CONTEXTE ET NATURE DE LA MISSION

1- Contexte de la mission

La ville de Crest est située dans le département de la Drôme (26) à 28 km au sud-est de la préfecture Valence.

La commune s'étend sur 23,38 km² et compte un peu plus de 8 000 habitants. Elle constitue le centre économique et commercial d'un bassin de vie rural d'environ 35 000 habitants et 700 km².

Crest ne fait partie aujourd'hui d'aucun EPCI1(*) à fiscalité propre puisque la ville s'est retirée de la communauté de communes du Crestois en 1996. Elle est actuellement membre de syndicats mixtes départementaux notamment pour la gestion de ses réseaux (assainissement et électricité en particulier).

La nature de la mission (voir 2.1.) a nécessité un travail en liaison avec différents services municipaux : services techniques, urbanisme, service informatique.

Les services techniques occupent des locaux distincts du principal bâtiment de la Mairie.

2- Nature de la mission

2.1. Présentation de la mission

La mission confiée dans le cadre de ce stage de 17 semaines consistait à produire un outil de consultation en ligne des données géoréférencées municipales disponibles. Il s'agissait de développer une application cartographique sur serveur à partir de technologies libres (voir 2.3.). Celle-ci devant permettre une gestion améliorée et une exploitation facilitée des informations.

Au départ, la démarche était inscrite dans une ambition plus large de développement du Système d'Information Géographique (SIG) communal incluant éventuellement la production de couches métiers, en particulier les données relatives à l'entretien des espaces verts en vue de rationaliser l'action des agents communaux.

Mais la mission a rapidement était resserrée autour du développement de l'application cartographique compte tenu de sa complexité et des délais.

Pour la Mairie, ce projet s'insérait dans un large programme de dématérialisation des démarches et de facilitation de l'accès aux services publics ainsi que dans une volonté de rationalisation du catalogage des données.

L'ensemble de la mission a été réalisée sous la coordination du responsable du service informatique qui a catalysé les besoins et desiderata des différents services intéressés, une réunion ayant permis dès avant le début du stage de fixer les objectifs de la mission ainsi que le cahier des charges.

2.2. Cahier des charges

Le cahier des charges comportait trois volets encadrant et orientant le travail : les recommandations portant sur l'interface (graphisme et ergonomie), les fonctionnalités attendues et les spécifications concernant l'architecture de l'application.

· Architecture de l'application

Aucune installation côté client ne doit être nécessaire pour la navigation.

Deux entrées doivent être prévues : l'une publique, l'autre protégée par login et mot de passe donnant accès en plus des données accessibles à partir de l'entrée publique, aux informations nominatives cadastrales, aux couches métiers, au module de recherche et à l'interface de gestion de la base de données.

La gestion des données doit être centralisée et facilitée par une application dédiée.

Le serveur cartographique doit être accessible via une page d'accueil.

· Fonctionnalités

L'ensemble des fonctionnalités standards d'un viewer doit être disponible (zoom, déplacement, interrogation d'objet, module de recherche, calcul de distance et de surface, affichage à échelle souhaitée, sortie image et impression).

La gestion des couches doit être simple et facilement accessible.

Possibilité d'effectuer des requêtes par attribut.

La navigation et l'utilisation des fonctionnalités doivent être intuitives et améliorées par rapport à celles d'un viewer.

· Interface graphique

L'interface doit être simple et ergonomique.

Reprise d'éléments de la charte graphique du site officiel de la ville permettant une identification visuelle : jaune code couleur #FFCC33 (R 255 ; G 204 ; B 51) et police de caractère Edwardian Script ITC pour le `Ville de Crest' de la bannière.

Optimisation pour Microsoft Internet explorer 6.0 (résolution 1024*768 pixels).

L'application devait enfin être livrée avec un guide de maintenance et d'utilisation détaillant la distribution et l'architecture du serveur, les étapes de son installation ainsi que les manipulations fréquentes (comme l'ajout de nouvelles couches ou le paramétrage de l'affichage).

2.3. Notions de Webmapping et Open Source

Le terme webmapping désigne la diffusion de cartes dynamiques ou statiques2(*) ainsi que des données attributaires pouvant être associées sur un réseau (intranet/extranet/internet). Il s'agit d'un domaine en pleine expansion grâce au développement de solutions open source arrivées à maturité.

Les informations cartographiques brutes ou les données géoréférencées sont ainsi consultables à partir de postes clients. Elles sont en général stockées dans un système de gestion de base de données (SGBD) sur un ou plusieurs serveurs et administrables de façon centralisée.

Les SIG « en ligne » se distinguent donc des SIG bureautiques classiques (MapInfo, ArcGIS, Geoconcept ou produit bureautique open source) nécessitant une installation logicielle sur chaque poste nécessaire (ou au minimum un viewer) ainsi que parfois, une copie des données si celles-ci ne sont pas accessibles par le réseau local.

Evoluant rapidement, le webmapping est souvent présenté comme étant l'avenir des SIG.

La plupart des solutions ne nécessitent pas d'installation lourde côté client. L'échange d'information se fait par le navigateur internet (Internet Explorer, Firefox,...) via les requêtes HTTP envoyées par le poste client et les pages HTML que le serveur lui envoie en réponse (Fig. 3.).

La progressive généralisation de ces technologies au sein des collectivités et organismes gestionnaires du territoire notamment, est accélérée par le recours à des technologies Open Source éprouvées. Ce développement est encouragé par l'Etat3(*). Ces solutions permettent en effet de faire l'économie d'une offre éditeur tout en permettant d'envisager des développements ultérieurs afin de répondre aux besoins spécifiques et constatés des utilisateurs. Ces développements peuvent être effectués en interne par le personnel ou par un prestataire externe (Consultant, SSL - Société de Services en Logiciels Libres ou SSII - Société de Services en Ingénierie Informatique).

Le caractère open source d'une application implique non seulement la libre diffusion en totalité ou en partie de son code source mais aussi, sa libre redistribution (gratuite ou non) et la possibilité de développer librement des applications dérivées ou des fonctionnalités complémentaires. Elle ne doit pas non plus impliquer de discrimination ni entre personnes ou groupes de personnes ni entre domaines d'application.

La licence GNU (licence publique générale - General Public License « GNU GPL ») est la licence open source la plus répandue. Elle prévoit la liberté d'usage, d'étude, de modification et de distribution de tout ou partie des applications couvertes. La clause « copyleft » est une de ses caractéristiques. Elle consiste à octroyer à l'utilisateur un droit total de redistribution conditionné par la mise à disposition du code source de la version modifiée.

L'OGC (Open Geospatial Consortium - anciennement OpenGIS Consortium) est l'organisation à but non lucratif consacrée au développement des solutions libres en géomatique et à l'interopérabilité des systèmes. Elle regroupe plusieurs centaines d'organismes commerciaux, gouvernementaux et de recherche dans le monde afin de promouvoir les systèmes ouverts, définir des normes et des standards en matière de technologies et services géospatiaux.

3- Pertinence du projet

3.1. Contexte général : progression du taux d'équipement des collectivités locales

Les avantages qu'apporte l'outil SIG dans la gestion et le développement des collectivités locales poussent celles-ci à s'équiper. On assiste d'ailleurs à une accélération du rythme d'équipement depuis quelques années parallèlement à la diversification de l'offre et des solutions techniques propriétaires ou open source disponibles.

Il s'agit d'un mouvement qui touche particulièrement les communes démographiquement comparables à Crest soit rassemblant une population comprise entre 5 000 et 10 000 habitants (Fig. 4.).

Il faut cependant souligner qu'en dehors des grandes collectivités, la mise en place d'un SIG ne s'accompagne pas toujours de celle d'un poste ou d'un service dédié. Le SIG peut alors se résumer à une licence monoposte d'une solution bureautique éditeur, aux couches réseaux et cadastrales couplées éventuellement à des viewers sur des postes tiers.

C'est le cas de Crest où le SIG communal consistait avant le déploiement du serveur cartographique, en une licence monoposte MapInfo ainsi qu'à des postes disposant du viewer MapInfo.

3.2. Utilité et image du webmapping

La tendance est à la mutualisation de l'information par le biais de serveurs déployés en intranet ou accessible à tous à partir d'un internet. Ce mouvement concerne aussi les données géoréférencées.

Comme on l'a vu, le développement du webmapping constitue probablement une étape dans la généralisation du recours à l'outil SIG par les collectivités. Mais aujourd'hui ce sont avant tout les plus grandes d'entre elles ainsi que les organismes gestionnaires du territoire et certaines administrations centrales qui sont équipées d'un portail cartographique en ligne.

Cependant certaines collectivités de taille plus réduite et parfois même modeste, se dotent de ce type d'outil dans une démarche motivée par la recherche d'un nouveau vecteur de promotion et de communication en ligne, d'un outil facilitant l'exploitation en interne des données disponibles et peut-être aussi par un esprit pionnier.

Dans le cas de Crest, il s'agit en outre de s'inscrire dans un projet plus large de dématérialisation des informations et des procédures. Un portail cartographique permet en effet à toute personne résidante de consulter à partir de n'importe quel ordinateur ayant accès à internet, par exemple des données (non nominatives) relatives au cadastre et ainsi soulager le service urbanisme lorsqu'il s'agit de simples consultations.

A ce souci de rationalisation et de meilleur accès à l'information s'ajoute la nécessité pour la Mairie de faciliter l'exploitation des données géoréférencées par des services éloignés physiquement (Fig. 2.).

La mise en place d'une application cartographique en ligne est facilitée on l'a vu, par l'existence de solutions libres éprouvées. Si dans ce type de projet, des compétences en développement doivent pouvoir être mobilisées, l'économie réalisée par rapport aux solutions éditeurs permet potentiellement à tout organisme intéressé de se doter d'un outil de webmapping adapté à ses besoins.

Il faut enfin noter que le fait de mettre en place et d'exploiter un serveur cartographique open source permet une sensibilisation des services au monde du libre profitable à terme puisque comme on l'a vu, le recours à des applications métiers ou bureautiques libres progresse.

*

* *

II - MISE EN OEUVRE ET RENDU

1- Organisation de travail

Pour la réalisation du projet, j'ai disposé d'une totale liberté d'organisation et d'une large marge de manoeuvre dans le choix de la solution, les éléments de cadrage étant définis en amont, dans le cahier des charges.

Après la phase assez rapide de diagnostic portant sur le matériel et les données, j'ai dû travailler en tant que prestataire externe. En effet, aucun poste adapté n'était disponible et aucune compétence en géomatique et développement orienté web (notamment php) susceptible de m'aider n'existaient en interne. Comme il a été dit, cette mission était encadrée par le responsable informatique de la Mairie, M. Chazot, lequel a aussi des responsabilité au sein du service financier. Pour la Mairie, il ne s'agissait donc pas de coordonner cette mission avec le travail d'un service ou d'un agent en particulier, mais de produire un outil conforme aux attentes en termes de fonctionnalités et aux prescriptions techniques détaillées dans le cahier des charges. De mon côté, ma démarche avait une forte dimension technique et ne consistait donc pas à me sensibiliser à des logiques procédurales en dehors de celles existant entre commanditaire et prestataire de service.

Connaissant déjà le monde de l'entreprise, cette organisation devait me permettre de m'adapter à une autre façon de travailler caractérisée par une plus grande responsabilisation.

Entre la phase d'inventaire (matériel et données) et celle du déploiement du serveur sur site, l'essentiel de la mission a donc consisté en un travail de développement en local sur mon poste personnel.

Au final, on verra que la comparaison entre le planning tel qu'il a été établi de façon prévisionnelle (Fig. 5.) et celui observé au terme de la mission (Fig. 14.) montre quelques décalages.

A ce stade, mon approche de ce travail était en effet linéaire alors que ses phases de réalisation se sont révélées être peu cloisonnées dans les faits. Il a notamment fallu procéder à plusieurs compilations de différentes distributions et à différents moments de la réalisation du projet.

Finalement, l'entrée en matière et le choix définitif de la solution ont pris plus de temps que prévu, ce dernier point s'est en outre fait en parallèle de l'élaboration de l'interface web notamment (voir II. 3.).

Cependant, les délais définis dans le planning prévisionnel ont été globalement tenus.

2- Choix de la solution

2.1. Technologies libres disponibles

Il existe actuellement quatre principales solutions techniques libres permettant de publier en ligne des données cartographiques. Le choix entre celles-ci est facilité par leurs limites respectives ainsi que par la lourdeur de leur déploiement qui permettent de circonscrire chacune à un type d'usage et de finalité particulier (Fig. 6.).

a. HTML simple (carte statique)

Il s'agit de la solution la plus légère et la plus facilement mise en place. Elle consiste à insérer une simple image (.jpg, .png, .gif, .bmp) dans une page HTML classique.

Le HTML ne permet cependant que de définir des zones cliquables pointant vers une autre page (fonctionnalité utilisable par exemple pour proposer à la navigation un zoom sur zone prédéfinie) ou associées à un événement javascript permettant par exemple l'affichage de données attributaires au passage de la souris.

Cette solution ne gère pas les sources vectorielles ni la projection et demeure très limitée en termes d'outil de navigation. Elle ne permet pas non plus l'intégration d'outil d'analyse et de recherche attributaire ou spatiale.

b. Solution SVG (Scalable Vector Graphics)

Il s'agit d'un format image vectoriel ouvert (basé sur la norme XML) permettant un encodage et un affichage sans perte de qualité de formes géométriques.

Les données peuvent être stockées comme table (.tab ou .shp par exemple) avant d'être encodées en SVG et envoyées au poste client. Elles sont alors chargées dans la mémoire cache du navigateur pour pouvoir être visualisées par l'utilisateur, ce qui permet une grande fluidité dans la navigation mais peut être lourd en temps et en ressource pour le poste client.

Cette solution permet notamment de développer des outils de requête spatiale et de procéder à la mise à jour des données (notamment géométriques si le fichier source est une table SIG).

En revanche, elle nécessite l'installation d'un visualisateur gratuit (Adobe SVG viewer) côté client. Certains navigateurs -excepté Microsoft Internet Explorer- supportent toutefois le SVG en natif selon leur version mais demeure marginaux en termes de part de marché. Enfin pour les plateformes Linux, la librairie librsvg peut permettre notamment de convertir du .svg en .jpg ou .png (module rsvg) pour autoriser l'affichage sur des navigateurs ne supportant pas le SVG en natif.

c. Applet Java

Comme le SVG, il s'agit d'une application exécutée côté client. Elle consiste en un module écrit en Java (Sun Microsystem) et inséré dans une page web. L'application doit donc être téléchargée par le poste client avant l'affichage des données et à chaque visite du site (Alov Map, JShape 2, ArcJ).

Les données sont extraites des tables SIG (en général le format .shp d'ESRI est privilégié). Les données attributaires sont stockées dans une base de données.

A l'instar du SVG, l'avantage de cette solution est sa légèreté mais suppose aussi un volume de transfert potentiellement lourd et des délais avant visualisation pouvant être longs selon les données visualisables (hors applet en lui-même qui pèse environ 200 ko) puisque l'ensemble des couches doivent être préalablement téléchargées par le client.

Il existe toutefois une solution hybride permettant à l'utilisateur de sélectionner les données (raster ou vectorielles) qu'il veut afficher avant de les télécharger (Dynamic Alov dérivé de l'applet Java Alov Map).

Enfin, une variante client-serveur en Java a été développée toujours dans la gamme Alov et permet un téléchargement progressif des données ainsi que leur stockage dans un SGBD (servlet Java®).

L'exécution d'une applet Java nécessite comme pour le SVG, l'implémentation côté client d'un plugin (Java Runtime Environment).

d. Serveur cartographique open source

Il s'agit de la solution la plus lourde mais la plus complète en termes de fonctionnalités. Elle suppose une architecture logicielle plus complexe que les solutions précédemment évoquées et un investissement en temps plus important pour les phases de compilation, de développement et d'intégration.

Ce type d'architecture classique client-serveur nécessite l'installation sur un serveur dédié ou partagé, des composantes logicielles minimum nécessaires au fonctionnement de l'application cartographique : serveur web, interprétateur de script, moteur cartographique. L'implémentation d'APIs PHP, Javascript, .NET, Perl, Python, Java, C# ou Ruby pour le développement d'applications spécifiques ou d'un framework (environnement d'interfaçage) permet d'intégrer ou de développer des outils de navigation plus ou moins avancés accessibles dans une interface web personnalisable.

Le moteur cartographique est le coeur du système. Il existe actuellement trois choix possibles : la plateforme Autodesk MapGuide proposée par le célèbre éditeur Autodesk, dont une version est libre (Autodesk MapGuide Open Source4(*)) et hébergée par l'OSGeo5(*). Cette solution offre une large panoplie de fonctionnalités ainsi qu'une interface de navigation clé en main mais doit être couplée à un autre produit, Autodesk MapGuide Studio (version de démonstration renouvelable, non libre), pour gérer les sorties d'impression ou image (layout) notamment.

MapGuide Open Source supporte de nombreux formats vecteurs ou matriciels.

GeoServer est une solution écrite en Java développée depuis 2001 et consacrée à l'implémentation de webservices (WFS-T, WMS, WCS, WMC, SLD,...)6(*).

La troisième solution est représentée par MapServer. Très connu et réputé, MapServer est un moteur cartographique (écrit en C++) performant sur lequel sont basées de nombreuses applications cartographiques présentes aujourd'hui en ligne. Il s'agit d'un environnement de développement libre, très populaire, développé à partir de 1994 par l'Université du Minnesota (UMN) en coopération avec la NASA et le Département des Ressources Naturelles du Minnesota (MNDNR). MapServer n'est donc pas une solution clé en main personnalisable mais un moteur cartographique générant notamment les images envoyées au client. C'est un exécutable CGI (Common Gate Interface)7(*) qui se place dans la partie inactive du serveur (Apache/cgi-bin dans le cas d'Apache).

Exploitables grâce l'API8(*) MapScript (PHP, Python, Perl, Ruby, Java ou C#), les fonctionnalités de MapServer sont nombreuses : échelles dynamiques, étiquetage, gestions de symboles, cartographie thématique avec expressions logiques ou régulières,... (voir annexe 1 « Diagramme de classe PHPMapscript » p.36).

MapServer gère de nombreux formats vecteurs (dont les .shp) ou raster (dont TIFF/GeoTIFF et ECW) grâce aux bibliothèques GDAL pour le raster et OGR pour le vecteur et supporte la projection de cartes grâce à la bibliothèque PROJ4.

MapGuide Open Source, GeoServer et MapServer peuvent être déployés sur les plateformes Windows ou Linux et supportent les serveurs HTTP Apache et IIS.

2.2. Technologie et distribution choisies

Le cahier des charges prévoyait des outils de navigation qui excluaient le recours à la solution la plus légère, la carte statique. De la même façon, il spécifiait qu'aucune installation ne devait être nécessaire sur le poste client pour visualiser les données. Les options SVG et Java ont donc dû être écartées (Fig. 6.).

Le choix s'est alors porté sur la solution serveur cartographique mais il restait à ce stade, à arbitrer entre le produit open source de la gamme MapGuide d'Autodesk, GeoServer et MapServer. C'est finalement MapServer qui a été retenu compte tenu de sa grande adaptabilité qui permet le développement d'applications personnalisées, du fait aussi que la gestion de la mise en page de sortie (layout) est libre, de la richesse de la documentation disponible et du dynamisme de sa communauté de développeurs.

La solution choisie pour la Mairie de Crest est finalement l'une des plus fréquentes et des plus éprouvées puisqu'elle est construite autour de MapServer. Elle a été développée pour un environnement Windows. Il s'agit d'une distribution associant à MapServer, le serveur web Apache, l'interprétateur de script PHP qui permet au serveur de lire les scripts, l'API MapScript, les librairies GDAL/OGR et PROJ4, un client web à partir duquel est développée l'interface utilisateur et un Système de Gestion de Bases de Données (SGBD) permettant une administration centralisée des données et facilitant leur mise à jour notamment (Fig. 7.).

MapServer n'est ni compilé ni associé avec aucun client web prédéfini. Il a donc fallu opter soit pour un développement ex nihilo de l'interface web et des fonctionnalités demandées dans le cahier des charges, à partir de l'API PHPMapscript de MapServer, soit choisir un framework (environnement de développement de l'interface web) libre existante.

Là encore, plusieurs projet open source existent (MapBuilder, Ka-Map, Cartoweb, Chameleon, MapBender, OpenLayer etc). Après un listing exhaustif de ces solutions et des essais comparatifs limités à quelques unes d'entre elles compte tenu des délais de la mission, Chameleon (Configurable Web Mapping Client Component - CWC2)9(*) a été retenu.

Il s'agit d'un environnement de développement libre pour l'interfaçage d'applications de webmapping basées sur MapServer. Ce client respecte les standards définis par l'OGC (Open Geospatial Consortium) et permet d'intégrer des fonctionnalités basiques de navigation écrites en php (widget) existantes, d'en adapter et d'en développer de plus avancées et personnalisées. Outre sa praticité lors de la phase de développement et d'intégration de la solution, l'avantage du framework est d'établir un environnement normé de développement facilitant l'adaptation du géomaticien ou développeur appelé ultérieurement à étendre ou adapter les fonctionnalités actuelles de l'application.

Enfin, le serveur cartographique devait être couplé à un SGBD relationnel supportant les données géographiques pour répondre aux spécifications du cahier des charges en matières d'administration des données10(*).

Le choix est ici plus restreint dans le monde du libre. Le très populaire MySQL supporte les données géométriques et géoréférencées depuis sa version 4.1. L'autre solution est représentée par PostgreSQL et son extension spatiale PostGIS11(*), très utilisée dans le domaine spécifique du webmapping et souvent associé à MapServer. Cette dernière solution a été retenue, complétée par l'interface web intuitive d'administration des données stockées dans le SGBD, PhpPgAdmin.

Au total le système utilise environ 8 Mo de ressource mémoire, Apache et PostGIS tournant en service windows. L'espace disque nécessaire varie en fonction des données.

3- Intégration et développement

3.1. Installation de la distribution

On a vu que le choix de la solution a impliqué un certain nombre de compilations et de tests visant à sélectionner une solution répondant au cahier des charges et une distribution stable.

Finalement, c'est donc la distribution listée précédemment qui a été retenue incluse en partie dans le paquet ms4w qui rassemble une version précompilée de MapServer, Apache, PHPMapScript et les librairies GDAL/OGR et PROJ4.

L'architecture de l'application est classique comme on l'a vu mais nécessite à ce stade l'intégration et le paramétrage de l'ensemble des composantes logicielles. Ces opérations sont rapidement évoquées ci-dessous mais pour le détail de l'installation étape par étape, voir annexe 3 « Extrait Guide de Maintenance et Utilisation » - Partie 2 « Installation » p.42.

L'installation est simple puisqu'elle consiste à copier le répertoire du paquet ms4w sur le disque dur (en général à la racine du lecteur), d'exécuter deux scripts batch (l'un installant Apache en service Windows et l'autre chargeant les librairies pour MapServer), de paramétrer les fichiers de configuration du serveur web et de PHP, de mettre à jour le path de Windows et de redémarrer la machine.

A ce stade MapServer est installé mais il reste à initialiser le SGBD et à intégrer le framework pour achever l'installation de l'environnement de travail.

Dans la distribution choisie, ces manipulations sont simples et consistent là encore à copier le répertoire de PostgreSQL sur le disque dur (en général à la racine du lecteur) et celui du framework dans le répertoire `apps' de la distribution ms4w.

Il est ensuite nécessaire de mettre à jour les alias d'Apache contenus dans le répertoire `httpd.d' du paquet ms4w ou directement dans le fichier de configuration du serveur `httpd.conf' afin que le serveur prenne en charge le framework Chameleon (la même manipulation doit être faite pour l'interface du SGBD PhpPgAdmin).

Là encore, il faut mettre à jour les variables d'environnement de Windows pour indiquer au système d'exploitation le chemin vers PostgreSQL, quel port est affecté au SGBD (port 5432 par défaut) ainsi que le nom de la machine serveur. Une fois chose faite, il faut redémarrer la machine et il ne reste plus alors qu'à initialiser le SGBD sous l'invite de commande, de charger le module spatial PostGIS et de créer la/les base(s) de données dans la/lesquelle(s) doivent être stockées les tables.

3.2. Intégration des données

L'environnement de travail étant installé et fonctionnel, il s'agissait à partir de ce moment de préparer et intégrer les données.

Deux bases de données ont été créées, l'une contenant les couches, l'autre destinée à l'administration du serveur, contenant dans un premier temps uniquement les couples login/mot de passe permettant l'accès à l'entrée protégée. Les orthophotographies (dalles ECW) ont été stockées dans un répertoire `data' de l'application puisque PostgreSQL/PostGIS ne gère pas les rasters.

La préparation des données a notamment consisté dans un premier temps à vérifier leur intégrité, certaines tables pouvant être `mitées'. Il a aussi été jugé préférable pour certaines tables, de concaténer les champs nominatifs dans un nouveau champ destiné à un étiquetage facilité sous MapServer.

Les données étaient constituées des couches métiers relatives à l'assainissement, du réseau hydrographique, des données cadastrales, du PLU, de la voirie et des emprises SNCF.

L'ensemble des tables de la base `données' a été importé à partir de .shp issues des fichiers cartographiques exploités par les services municipaux. Toutes allaient contenir un champ géométrique créé à l'import de la couche dans PostgreSQL grâce à l'extension PostGIS. Ce champ (`the_geom') contient donc les coordonnées de chaque point constituant un objet géométrique de la table ainsi que le code EPSG12(*) correspondant à la projection Lambert III Sud (epsg :27593). Ce champ géométrique permet à MapServer de dessiner le(s) objet(s) en fonction de la requête et de générer ensuite l'image envoyée au client.

A sa création, la base `données' serait ainsi composée uniquement de tables contenant des objets géographiques qui à ce titre, pourraient être exploitées par le biais de requêtes spatiales. De plus, les données concernaient des thématiques assez indépendantes et n'entretenaient que rarement des relations autres que géométriques (spatiales) entre elles (Fig. 9.).

Seules les données cadastrales (bâti, parcelles et sections), la couche risques naturels et le zonage PLU contenaient des informations attributaires permettant une exploitation à partir du module de requête sur champ prévu par le cahier des charges.

3.2. Développement de l'interface web

Après la phase de compilation et d'intégration de l'environnement de travail ainsi que des données, l'étape suivante a consisté à concevoir une interface de navigation conforme au cahier des charges en ce qui concerne les outils de navigation et l'ergonomie générale.

La modélisation du traitement des données par le système était le préalable à la phase de développement puisqu'elle précise l'architecture de l'application déjà schématisée (Fig. 8.) et oriente le travail de production (Fig. 10.).

Cette ultime phase a donc comporté deux étapes. La première a consisté à doter l'application de l'ensemble des fonctionnalités de navigation prévues par le cahier des charges. Pour cela, il a fallu implémenter les scripts PHP disponibles dans la distribution du framework (outils communs) ou développer, parfois à partir d'autres travaux, les fonctionnalités plus avancées (mesure de surface, recherche attributaire, sorties).

La deuxième étape concernait la production de l'interface utilisateur. A partir du modèle défini selon les spécifications du cahier du charges (Fig. 10.), il a donc fallu construire deux modèles HTML (voir annexe 2d « Extrait du template » p.41) pour l'interface web (pour l'entrée publique et pour l'entrée protégée par login et mot de passe) comportant la fenêtre d'affichage de la carte, la légende dynamique, la barre de navigation et la bannière notamment. Il a ensuite fallu produire la page d'accueil renvoyant vers les deux entrées distinctes et vers une page tiers devant contenir des informations sur les données ainsi que les mentions légales. Le contenu de cette page n'était pas disponible au moment de la livraison. Les pages d'accueil, d'information et d'authentification sont placées dans le répertoire htdocs d'Apache tandis que les éléments du framework (navigation, templates et mapfiles) sont stockés dans le répertoire apps/chamelon.

L'entrée limitée est gérée en PHP avec stockage des couples login/mot de passe dans une base de données (distincte de celle contenant les données géoréférencées) pour plus de sécurité et pour faciliter l'administration des droits (voir annexe 2a « Script d'authentification » p.38). Cette étape de développement `orienté web' a nécessité des productions DAO (Dessin Assisté par Ordinateur), en particulier l'image de fond de la page d'accueil et les deux bannières insérées dans les templates. Ce travail graphique s'appuie sur les spécifications du cahier des charges afin de reprendre certains éléments d'identité visuelle du portail officiel de la ville (couleur et police de caractère).

Préalablement à cela, il a été nécessaire de paramétrer l'accès aux données et l'affichage de celles-ci dans les mapfiles. Cependant ce paramétrage a été régulièrement revu et s'est finalement étalé jusqu'à la mise au point de la version livrée de l'application (voir annexe 2c « Extrait du mapfile » p.40).

4- Rendu

4.1. Aperçu de l'ergonomie

Le portail cartographique est accessible à partir d'une page d'accueil classique. Celle-ci contient un menu en CSS renvoyant soit vers l'interface de navigation (via un formulaire HTML d'authentification pour l'entrée sécurisée contenant en plus des données publiques, les couches métiers et les données nominatives du cadastre) soit vers une page d'informations. Un lien hypertexte pointant vers le portail officiel de la ville est aussi inséré.

L'image de fond reprend la structure du template de l'interface de navigation (Fig. 11.).

Au final, le système répond aux différents points du cahier des charges. Sur le plan graphique, l'interface est simple et intègre les éléments visuels précédemment listés.

Il ne nécessite aucune installation spécifique côté client. L'ensemble des données ainsi que des fonctionnalités sont interrogeables à partir d'un navigateur internet en configuration par défaut (affichage optimisé pour Microsoft Internet Explorer en résolution 1024*768 pixels).

L'interface de navigation se compose d'une fenêtre d'affichage des données, d'une barre de navigation horizontale sous la bannière, d'une légende dynamique verticale sur la gauche et d'un bloc horizontal en bas de page consacré à la gestion de l'échelle (Fig. 12.).

4.2. Détail des fonctionnalités

L'interface dispose des outils de navigation communs (zoom, déplacement, affichage des données attributaires). Elle propose en outre des outils de mesure de distance et de surface.

Outils de navigation :

 

Zoom avant

 

Zoom arrière

 

Vue générale - Ré-initialisation

 

Zoom sur un secteur ou un point

 

Déplacement

 

Interrogation d'objet

 

Mesure de surface

 

Mesure de distance

 

Gestion de l'échelle

Des fonctionnalités avancées permettent d'effectuer des recherches sur les attributs des couches, de préparer une carte pour l'impression ou la sauvegarde et d'accéder à l'interface de gestion des bases de données (PhpPgAdmin).

 

Module de recherche attributaire (section protégée)

 

Sortie impression et image

 

Lien vers interface d'administration des bases de données (sect. protégée)

A l'instar de l'outil d'interrogation d'objet, ces fonctionnalités ouvrent chacune une nouvelle fenêtre ou un popup (Fig. 13.).

III - EVALUATION

1- Côté commanditaire

1.1. Utilité de l'application

La version 1.0 du serveur cartographique livrée permet donc de visualiser les données géoréférencées de la Mairie. Elle dispose de toutes les fonctionnalités d'un viewer tout en offrant une interface plus conviviale et intuitive facilitant la navigation et l'affichage des couches.

Cet outil d'abord accessible sur le réseau du bâtiment principal de la Mairie, est destiné à être mis en ligne sur internet. Il sera donc à la disposition du public notamment pour des consultations concernant le cadastre en attendant éventuellement, la production de couches thématiques d'informations par exemple destinées à la promotion touristique.

Mais surtout, cette mise en ligne doit permettre aux services techniques d'accéder au serveur puisque comme on l'a vu, ceux-ci sont installés dans un bâtiment annexe éloigné de 1,5 km, ce qui justifie en soi l'installation de ce type d'outil.

Développée intégralement à partir de technologies open source, cette application est appelée à évoluer. En effet, selon les besoins observés des services, il est d'ores et déjà prévu de consacrer d'autres missions à son développement.

1.2. Perspectives d'évolution

En vue d'exploiter au mieux les données disponibles, il convient en effet d'envisager le développement de fonctionnalités complémentaires et/ou l'adaptation des outils existants aux besoins constatés des services municipaux.

a. Evolution des fonctionnalités et de la configuration existantes

· La légende de sortie impression/image récupère le nom des thèmes xml de la légende (récupéré dans le mapfile) mais pas ceux des couches elles-mêmes. Cela peut-être complété en modifiant les classes définies dans le script php du widget printproduction.

· Il est possible de développer un module de recherche attributaire multi-critères à partir du module existant.

· Il est envisageable de construire une légende déroulante afin de répondre à l'empilement futur des couches dans la légende et faciliter la navigation.

b. Développement de nouvelles fonctionnalités

· Une fonctionnalité de requête spatiale (et tampons/buffers) permettrait des sélections en fonction de localisations (distances, inclusions, intersections,...).

· Il peut également être utile de prévoir la possibilité de mettre à jour les attributs stockés dans la base de données à partir d'un formulaire (sans passer par PhpPgAdmin) et, en fonction des possibilités techniques du moment, de mettre à jour les objets géométriques par numérisation à partir de l'interface de navigation.

2- Côté prestataire

2.1. Intérêt de la mission

Le premier intérêt de ce type de mission a été le niveau de responsabilisation et le fait de se positionner en tant que prestataire afin de répondre à une commande. La démarche ainsi que le contexte et l'approche du commanditaire ont donc donné à ce stage une réelle dimension professionnalisante. C'est ce que je recherchais.

Elle m'a aussi permis de mieux cerner la nature des besoins en outils SIG et leurs usages dans les collectivités du type de Crest ainsi que la perception qu'en ont les principaux services concernés (services techniques et urbanisme). La prise en compte de ce dernier aspect a été peut-être facilité par mon profil d'urbaniste partageant sans doute la même approche que ceux-ci de l'exploitation d'une application de ce type et des données.

La réussite de la mission a nécessité de mobiliser les connaissances acquises pendant la formation (méthodologie et traitement des données sur plateformes SIG, développement web notamment) ainsi que des compétences développées préalablement dans le cadre d'autres formations et d'expériences professionnelles (développement et production DAO).

La table ronde consacrée aux solutions open source et au webmapping organisée par la promotion en cours d'année a par ailleurs permis d'orienter en amont mes choix (MapServer, MapGuide OS).

La mise en oeuvre de ce projet a aussi conduit à une plus grande connaissance des technologies open source et du webmapping. Cet aspect a été d'autant plus enrichissant que la solution choisie a été comme on l'a vu, développée dans un environnement MapServer. Il s'agit en effet de la solution la plus éprouvée ainsi que la plus connue et constitue une technologie en plein essor, souvent choisie pour le déploiement d'un serveur de données géoréférencées dans une administration ou en entreprise.

Enfin par rapport à la formation, ce travail a eu l'avantage de nécessiter le recours à des techniques complémentaires à celles dispensées au cours d'enseignements et travaux consacrés au développement web et aux bases de données notamment.

2.2. Difficultés rencontrées

La principale difficulté a été de tenir les délais. Le cahier des charges et le planning prévisionnel (Fig. 5.) ont constitué un cadrage sérieux du travail mais la nécessité de trouver une distribution stable et de tester différentes solutions (en particulier en ce qui concerne le client web) a pris un temps qui était difficilement évaluable au préalable.

Certaines phases prévues dans le planning prévisionnel ont donc dû être revues (Fig. 14.)

Les délais ont finalement été tenus et l'application a pu être déployée comme convenu avec le commanditaire. Elle a été suivie d'une rapide formation mais le guide d'utilisation et de maintenance prévu par le cahier des charges a dû en revanche être livré avec un peu de retard sur la date initialement prévue mais sans conséquence.

*

* *

- CONCLUSION -

L'usage d'outils de webmapping connaît depuis la fin des années 1990 un développement parallèle à celui d'internet et des réseaux en général. La possibilité de mettre en ligne des informations géoréférencées a dans le même temps été facilitée par l'existence de technologies open source qui constituent aujourd'hui la référence dans le domaine du webmapping.

C'est dans ce contexte et afin de répondre à des contraintes spécifiques que la Mairie de Crest a décidé de doter ses services d'une application permettant une exploitation des données à partir d'internet ainsi qu'une gestion centralisée de celles-ci.

La mission qui m'a été confiée a donc consisté à développer un outil répondant à ces premières spécifications. Pour la mener à bien, j'ai dû me positionner en tant que prestataire externe capable à la fois de comprendre la commande et proposer des choix ou solutions, de respecter le cahier des charges ainsi que de tenir les délais.

Finalement, l'application a pu être livrée au terme de la mission et répond aux exigences techniques exprimées par le commanditaire. Il est toutefois prévu de poursuivre son développement pour répondre aux besoins des services qui pourront être constatés à l'avenir.

L'intérêt de ce travail réside donc avant tout dans la démarche qu'il a fallu adopter pour atteindre les objectifs. De la même façon, le choix d'une solution tournant autour de MapServer m'a permis d'approfondir mes connaissances concernant cet environnement qui reste le plus connu et utilisé dans le domaine du webmapping.

Enfin, développer une application à partir de composants intégralement open source conduit à une plus grande sensibilisation au monde du libre en général et à ses possibilités.

La mise en oeuvre de cette mission a toutefois comporté certaines difficultés en particulier une dimension collaborative du travail qui s'est limitée au cadrage de la mission, à l'élaboration du cahier des charges et au déploiement in situ de l'application.

Mais, la mission reste très largement positive en ce qui me concerne et présente en outre l'avantage d'avoir porté sur une démarche et des technologies appelées probablement à se développer.

- ANNEXES -

Annexe 1 Diagramme de classe PHPMapscript (Veremes & DM Solutions Group Inc.) 36

Annexe 2a Script d'authentification 38

Annexe 2b Extrait du script de mesure de surface 39

Annexe 2c Extrait du mapfile (section publique) 40

Annexe 2d Extrait du template (section publique) 41

Annexe 3 Extrait du Guide de Maintenance et Utilisation

(hors description et arborescence de l'application) 42

*

* *

Annexe 1

Diagramme de classe PHPMapscript (Veremes & DM Solutions Group Inc.)

Annexe 2a

Script d'authentification

<?php session_start();

// vérification du remplissage des inputs de la page xxxx.xxx

if (isset($_POST['connexion']) && $_POST['connexion'] == 'Connexion')

{

if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['pass']) && !empty($_POST['pass']))) {

function no_cache() {

header("Pragma: no-cache");

header("Cache-Control: no-cache");

}

no_cache();

// connexion à la base de données postgresql "xxxx" en tant que superutilisateur

$connexion = pg_connect("host=xxx.xxx.xxx.xx dbname=xxxx user=xxxxxx password=xxxxxxx");

if ($connexion == 0)

{

erreur('Echec lors de la connexion',true,false);

}

// vérification de l'existence du couple login/pass dans la base de données "xxxx" et //déconnexion

$sql = "SELECT count(*) FROM xxxxxxx WHERE pseudo='".$_POST['login']."' AND passe='".$_POST['pass']."'";

$req = pg_query($sql) or die('Erreur SQL');

$data = pg_fetch_array($req);

pg_free_result($req);

pg_close();

// si le couple login/pass renseigné existe, renvoi vers l'entrée sécurisée du

// serveur cartographique

if ($data[0] == 1) {

$_SESSION['pseudo'] = $_POST['login'];

header('Location: /xxxxx/xxx.xxxxx');

exit();

}

// si le couple login/pass renseigné n'existe pas, renvoi vers une nouvelle page

// d'identification

elseif ($data[0] == 0) {

header('Location: xxxxx.xxxx');

exit();

}

}

else {

header('Location: xxxxx.xxxx');

exit();

}

}

?>

Annexe 2b

Extrait du script de mesure de surface

<?php

...

function {$szName}()

{

// cree nouveaux calques pour tracage lignes

var sId = "";

gaszAreaDivPointNames = new Array();

gaszAreaDivNodeNames = new Array();

var content = "<img src='{$szImagesURL}ruler_pix.gif' width='6' height='6'><br>";

var content2 = "<img src='{$szImagesURL}ruler_node.gif' width='7' height='7'><br>";

for (var i=1; i < {$nPoints}; i++)

{

// cree calques points

sId = 'areaPointLayer'+i;

CWCDHTML_CreateLayer(sId, 10, 10, 0, 0, false, content);

CWCDHTML_SetLayerZOrder( sId, 20 );

gaszAreaDivPointNames.push( sId );

// cree calques noeuds

sId = 'areaNodeLayer'+i;

CWCDHTML_CreateLayer(sId, 10, 10, 0, 0, false, content2);

CWCDHTML_SetLayerZOrder( sId, 20 );

gaszAreaDivNodeNames.push( sId );

}

// init objet polygone

goROIAreaObj = new CWCPolygonROI({$nPoints});

goROIAreaObj.pointImageWidth = 6;

goROIAreaObj.nodeImageWidth = 7;

goROIAreaObj.left = gMapWhspc;

goROIAreaObj.top = gMapWvspc;

goROIAreaObj.right = gMapWhspc + gMapWiWidth;

goROIAreaObj.bottom = gMapWvspc + gMapWiHeight;

goROIAreaObj.edgeColor = goCWCROIManager.szEdgeColor;

goROIAreaObj.edgeWidth = goCWCROIManager.nEdgeWidth;

goROIAreaObj.fillLayer = goCWCROIManager.bUseFill;

// ET ----------------------------------------------------------------------------------

// ATTENTION declarer meme code couler que dans ROIRenderer (lignes 94 et 139).

goROIAreaObj.fillColor = 'ffcc33';

// ET ----------------------------------------------------------------------------------

goROIAreaObj.fillOpacity = goCWCROIManager.nFillOpacity;

// affiche polygone

goROIAreaObj.Show();

}

...

?>

Annexe 2c

Extrait du mapfile (section publique)

###MAPFILE

###APPLICATION CHAMELEON/MAPSERVER SERVEUR CARTOGRAPHIQUE MAIRIE DE CREST

###################################

MAP

NAME SERVCREST

STATUS ON

SIZE 650 450

SYMBOLSET ../xxx/xxxx.sym

EXTENT 808891 269917 816398 277471

UNITS METERS

SHAPEPATH "../xxxx"

IMAGECOLOR 255 255 255

IMAGETYPE JPEG

FONTSET ../xxx/xxxx.txt

TRANSPARENT FALSE

OUTPUTFORMAT

NAME JPEG

DRIVER "GD/JPEG"

MIMETYPE "image/jpeg"

IMAGEMODE PC256

EXTENSION "jpg"

FORMATOPTION "QUALITY=80"

END

###################################

. . .

##################################

#debut parametrage des couches

###################################

#theme xml legende #Zonage PLU#

LAYER

GROUP "Zonage PLU"

NAME "[nom_table]"

METADATA

SPATIALSEARCH "gid,refzone,surface,perimetre,nbpolygone,type,stype"

SPATIALSEARCHLIST ""

END

TYPE POLYGON

LABELITEM "refzone"

STATUS OFF

HEADER "gid^|refzone^|surface^|perimetre^|type^|stype^|legende^|"

CONNECTIONTYPE postgis

CONNECTION "host=xxx port=xxxx user=xxx password=xxxxx dbname=xxxxxxx"

DATA "the_geom from [nom_table]"

CLASS

STYLE

COLOR 193 191 255

OUTLINECOLOR 100 100 100

END

LABEL

SIZE MEDIUM

POSITION CC

COLOR 255 255 255

BACKGROUNDCOLOR 193 191 255

END

TEMPLATE "ttt_query.html"

END

TOLERANCE 5

TRANSPARENCY 55

PROJECTION "init=epsg:27593"

END

END#layer

. . .

Annexe 2d

Extrait du template (section publique)

...

<!-- DEBUT DU CONTAINER CSS PRINCIPAL -fichier htdocs/style2.css- -->

<div id="Cadre">

<form method="post">

<div id="Banniere">

<img SRC="images/ban_templatepublic.jpg" WIDTH="939" BORDER="0" HEIGHT="68" USEMAP="#ban_templatepublic">

</div>

<cwc2 type="LegendTemplate" visible="false" embedded="true"

template="legend_template.html" popupstyleresource="TextButtons"

popupwidth="500" popupheight="400" status="false" menubar="false"/>

<!-- BARRE NAVIGATION CARTE -fichier htdocs/style2.css- -->

<div id="BarreNavigation" name="NavToolsLayer">

<table border="0" cellspacing="4" cellpadding="0" align="left">

<tr>

<!-- Appel de la liste des fonctionnalités disponibles dans la barre de navigation -->

[#navigation.html#]

</tr>

</table>

</div>

<!-- LIENS SORTIE -fichier htdocs/style.css- -->

<div id="Liens" align="right">

<table border="0" cellspacing="3" cellpadding="0">

<tr><td>

<cwc2 type="PrintProduction" visible="true" popupheight="500" popupwidth="600" template="legend_template.html" styleresource="TextButtons2" image="icons/icon_print.png" imagetip="Imprimer ou sauvegarder" label="Imprimer">

<image state="normal"/>

<image state="selected"/>

<image state="hover"/></cwc2>

</td></tr>

</table>

</div>

<!-- LEGENDE DONNEES -fichier htdocs/style2.css- -->

<div id="LegendLayer" name="LegendLayer">

<table width="185px" border="0" cellspacing="0" cellpadding="0">

<cwc2 type="XMLThemeLegend" popupwidth="185" popupheight="560">

<selection name="SampleLegend" template="templatepublic.html" themefile="legendepublic.xml" contextfile="mapfilepublic.map" rendererfile="renderer.html"/>

</cwc2>

</table>

<!-- BOUTON ACTUALISER CARTE -fichier htdocs/style2.css- -->

<div id="BoutonUpdate">

<table cellspacing="0" cellpadding="0">

<tr><td>

<cwc2 type="UpdateMap" styleresource="TextButtons2" visible="true" image="icons/icon_update.png" imagetip="Actualiser" label="Actualiser">

<image state="normal"/>

<image state="selected"/>

<image state="hover"/>

</cwc2>

</td></tr>

</table>

</div></div>

<!-- FENETRE CARTE MAPDHTML -fichier htdocs/style2.css- -->

<div id="Carte" name="MainMapLayer">

<cwc2 type="MapDHTML" bordercolor="#ffffff" visible="true" width="745" height="499" allowresize="false" marqueecolor="FF0000" marqueewidth="2" minscale="1"/>

</div>

...

Annexe 3

Extrait Guide de Maintenance et Utilisation

(hors description et arborescence de l'application)

Extrait Guide de Maintenance et Utilisation

- SOMMAIRE -

1. Description du produit

2. Installation 43

Etape 1 : Installation d'Apache, PHP, Mapserver et librairies (GDAL/OGR, PROJ4). 43

Etape 2 : Mise à jour des variables d'environnement Windows. 43

Etape 3 : Copie des fichiers de l'application. 43

Etape 4 : Initialisation de PostgreSQL/PostGIS et création des bases de données. 43

Etape 5 : Importation des données (création des tables). 45

Etape 6 : Tâches planifiées. 47

3. Manipulations courantes 47

Manipulation 1 : Mettre à jour une couche. 47

Manipulation 2 : Importer une nouvelle couche. 48

Manipulation 3 : Changer les paramètres d'affichage d'une couche. 50

Manipulation 4 : Définir un nouveau login/mot de passe pour l'entrée limitée. 50

Manipulation 5 : Créer une nouvelle base de données avec champ géométrique. 50

Manipulation 6 : Créer une nouvelle base de données simple. 51

Manipulation 7 : Créer une nouvelle table simple. 51

4. Annexes

Annexe 1 : Table de correspondance des couches.

Annexe 2 : Arborescence de l'application.

a. Arborescence du répertoire c:\ms4w.

b. Arborescence du répertoire c:\PostgreSQLWin32

2. Installation

L'application est livrée avec 2 CDROM contenant :

· Disque 1 : Distribution originale (sources et bins).

· Disque 2 : Application, shapes, images produites pour l'application et manuel.

Etape 1 : Installation d'Apache, PHP, Mapserver et librairies (GDAL/OGR, PORJ4).

1. Copier les répertoires `ms4w' et `PostgreSQLWin32' (Disque 1) à la racine du disque dur.

2. Ouvrir le répertoire `ms4w' et : - double-cliquer sur le fichier `apache-install.bat'

- ______''_______''_______ `setenv.bat'

Etape 2 : Mise à jour des variables d'environnement Windows.

1. Ouvrir la fenêtre de mise à jour des variables d'environnement de Windows (clic droit sur Poste de Travail > Propriétés > onglet Avancé > Variables d'environnement).

2. Copier la 1re ligne du fichier `variables_environnement.txt' (Disque 1) dans le PATH (sélectionner la ligne `PATH' dans la partie `variables système' de la fenêtre et cliquer sur modifier puis coller la ligne en vérifiant bien qu'un ` ;' sépare chaque chemin renseigné).

3. Créer 4 nouvelles variables (PGHOME c:\PostgreSQLWin32, PGDATA c:\PostgreSQLWin32\data, PGHOST localhost, PGPORT 5432) comme indiqué dans le fichier `variables_evironnement.txt' (Disque 1). Pour cela cliquer sur nouveau dans la partie `variables système' de la fenêtre et renseigner les 2 champs pour chaque nouvelle variable.

4. Redémarrer la machine.

Etape 3 : Copie des fichiers de l'application.

1. Copier le contenu du dossier `ms4w' du disque 2 (application/ms4w) dans le répertoire `ms4w' et ses sous-répertoires de la machine.

2. Copier le contenu du dossier `PostgreSQLWin32' du disque 2 (application/PostgreSQLWin32) dans le répertoire `PostgreSQLWin32 et ses sous-répertoires de la machine.

3. Copier le dossier shp du disque 2 (shp_&_images/shp) dans le répertoire data de PostgreSQL (PostgreSQLWin32/data).

4. Redémarrer Apache en exécutant le script `apache-restart.bat' dans ms4w.

Etape 4 : Initialisation de PostgreSQL/PostGIS et création des bases de données.

1. Créer un compte utilisateur simple Windows (non administrateur) nommé `[utilisateur]' et avec pour mot de passe `[passe]' (Démarrer > Panneau de configuration > Comptes d'utilisateurs).

2. Ouvrir une session comme administrateur PostgreSQL.

Dans Démarrer > Exécuter :

runas /user:[utilisateur] cmd

L'invite de commandes s'ouvre et vous demande d'entrer le mot de passe utilisateur.

Entrer :

[passe]

3. Initialiser PostgreSQL.

Taper :

cd c:\windows\system32

Initdb -A trust

4. Fermer l'invite de commandes.

5. Ouvrir l'invite de commande en tant qu'administrateur Windows.

Démarrer > Tous les programmes > Accessoires > Invite de commandes

6. Installer PostgreSQL en tant que service Windows.

Taper :

cd c:\Documents and Settings\[ici_nom_compte_administrateur_windows]

pg_ctl register -u [utilisateur] -p [passe]

7. Démarrer le service PostgreSQL.

Taper :

net start postgresql

Note : si Windows refuse de démarrer le service postgresql, le faire manuellement.

Pour cela Démarrer > Panneau de configuration > Outils d'administration > Services.

Chercher dans la liste le service `PostgreSQL'. Faire un clic droit dessus et ouvrir les propriétés. Dans l'onglet `général `, choisir le type de démarrage automatique. Dans l'onglet `connexion' choisir `Ouvrir un session en tant que ce compte' (.\postgresql). Renseigner les 2 champs mot de passe (entrer `[passe]'). Retourner dans l'onglet `général' et cliquer sur démarrer puis appliquer. Fermer toutes les fenêtres.

8. Redémarrer la machine et vérifier que le service postgresql (postgres.exe) a bien été démarré par Windows. Si le problème persiste vous pouvez utiliser le script `start_postgresql.bat' (Disque 2) en tâche planifiée au démarrage pour lancer automatiquement le service.

Dans l'invite de commandes, les commandes pg_ctl start et pg_ctl stop permettent de démarrer ou arrêter manuellement le service postgresql.

9. Créer la base de données `[nom_bdd1]' (sans accent) pour les couches.

Ouvrir l'invite de commande en tant qu'administrateur PostgreSQL :

Dans Démarrer > Exécuter :

runas /user:[utilisateur] cmd

L'invite de commandes s'ouvre et vous demande d'entrer le mot de passe utilisateur.

Entrer :

[passe]

10. Taper :

cd c:\postgresqlwin32

createdb [nom_bdd1]

createlang plpgsql [nom_bdd1]

11. Charger l'extension PostGIS et les projections dans PostgreSQL pour la base de données `[nom_bdd1]'. Taper :

psql -d [nom_bdd1] -f c:\PostgreSQLWin32\share\postgresql\postgis.sql

psql -d [nom_bdd1] -f c:\PostgreSQLWin32\share\postgresql\spatial_ref_sys.sql

12. Créer la base de données `[nom_bdd2]' pour les logins et les mots de passe.

Taper :

cd c:\postgresqlwin32

createdb [nom_bdd2]

createlang plpgsql [nom_bdd2]

Etape 5 : Importation des données (création des tables).

Les couches à intégrer à la base de données sont contenues dans le répertoire PostgreSQLWin32/data/xxxx. Les copies de sauvegarde sont dans le dossier shp_&_images/xxxx du disque 2.

1. Ouvrir l'invite de commande en tant qu'administrateur PostgreSQL :

Dans Démarrer > Exécuter :

runas /user:[utilisateur] cmd

L'invite de commandes s'ouvre et vous demande d'entrer le mot de passe utilisateur.

Entrer :

[passe]

2. Importer couche par couche les données dans la base de données `donnees'.

Taper :

cd c:\postgresqlwin32\data\xxxx

shp2pgsql -s 27593 -c [nom_de_la_table_d'origine.shp] [nouveau_nom_de_la_table] | psql [nom_bdd1]

Note : le nouveau nom de la table doit correspondre à celui renseigné dans le mapfile (c:/ms4w/apps/chameleon/map) et le fichier de légende xml c:/ms4w/apps/chameleon/htdocs). Si une table doit être remplacée ou mise à jour, veiller à entrer le même nom que la table postgresql d'origine (voir 3. Manipulations courantes). Voir tableau des correspondances des couches en annexe (Annexe 1 : Table de correspondance des couches).

3. Redémarrer Apache (exécuter le script `apache-restart.bat' dans ms4w) et la machine.

4. Création de la table `[nom_table]' dans la base de données `[nom_bdd2]'.

Accéder à l'interface d'administration de la base de données (PhpPgAdmin) en entrant l'url http://xxxx/phpPgAdmin/index.php dans la barre d'adresse du navigateur.

Entrer le login [utilisateur] et le mot de passe [passe] pour vous logger.

Cliquer sur la base de données `[nom_bdd2]' et sur `SQL' en haut à droite de l'écran pour ouvrir une invite de commande SQL.

Taper dans la fenêtre :

CREATE TABLE [nom_table] ("Pseudo" character varying(20) DEFAULT ' '::character varying NOT NULL,"Passe" character varying(20) DEFAULT ' '::character varying);

Ou copier directement cette commande SQL à partir du fichier `SCRIPT_create_table_authentification.sql' contenu sur le disque 2 (application\commandes SQL).

5. Importer un couple login/mot de passe dans la table `[nom_table]' de la base de données `[nom_bdd2]'.

Retourner dans l'invite de commande SQL et taper dans la fenêtre :

INSERT INTO [nom_table] VALUES('[login]','[mdp]');

[login] et [mdp] doivent être remplacés respectivement par le login choisi et par le mot de passe correspondant. Attention à conserver les guillements.

Ou copier directement cette commande SQL à partir du fichier `SCRIPT_insert_login_et_mdp.sql' contenu sur le disque 2 (application\commandes SQL).

Cette opération doit être répétée pour chaque nouveau couple login/mot de passe souhaité.

6. Fermer l'invite de commande SQL.

Vérifier l'existence de la table `[nom_table]' dans la fenêtre de gauche de l'interface (arborescence déroulante).

Vérifier la présence dans la table `[nom_table]' du/des couple(s) login/mot de passe importés en cliquant sur la table `[nom_table]' et sur parcourir.

7. Se déconnecter de PhpPgAdmin (lien de déconnexion en haut à droite de l'écran) et fermer la fenêtre.

A ce stade, il n'est pas nécessaire d'effectuer d'autres manipulations dans PostgreSQL pour exploiter le serveur cartographique. Cependant, une documentation complète du SGBD est disponible à l'adresse http://docs.postgresqlfr.org/pgsql-8.1.2-fr/index.html.

La liste des commandes SQL est également disponible à l'adresse http://docs.postgresqlfr.org/pgsql-8.1.2-fr/sql-commands.html.

Etape 6 : Tâches planifiées.

Il est souhaitable de vider régulièrement le répertoire tmp (ms4w/tmp) en exécutant les scripts `del-ms_tmp.bat' (au 1er niveau de l'arborescence) et `del-buttons.bat' (dans tmp/ms_tmp).

Pour automatiser cette tâche créer une tâche planifiée par Windows.

Démarrer > Tous les programmes > Accessoires > Outils système > Tâches planifiées.

Effacer manuellement les fichiers et dossiers dont le nom est du type `sess_xxxxx' (au 1er niveau de l'arborescence) et vider régulièrement le log `ms_error.txt'.

Attention cependant à ne pas supprimer les sous-répertoires (auquel cas les recréer ou les récupérer à partir de la sauvegarde contenue dans le disque 2).

3. Manipulations courantes

Manipulation 1 : Mettre à jour une couche.

1. Exporter en shape (.shp) la table mise à jour via le traducteur universel de MapInfo (Outils > Traducteur universel) dans le répertoire c:\PostgreSQLWin32\share\postgresql\xxxx.

2. Dans PhpPgAdmin, supprimer la table à mettre à jour (cliquer sur la base de données `[nom_bdd1]' et dans la fenêtre de droite listant les tables contenues dans la base, cliquer sur supprimer dans la ligne correspondant à la table à mettre à jour).

Note : Il est nécessaire de préalablement effectuer cette suppression puisque PostgreSQL ne peut pas écraser une couche existante et la couche mise à jour doit avoir le même nom que l'ancienne afin d'éviter de la renommer dans le mapfile et le fichier xml de légende.

3. Importer la couche mise à jour dans la base de données `[nom_bdd1]'.

Pour cela, ouvrir l'invite de commande en tant qu'administrateur PostgreSQL :

Dans Démarrer > Exécuter :

runas /user:[utilisateur] cmd

L'invite de commandes s'ouvre et vous demande d'entrer le mot de passe utilisateur.

Entrer :

[passe]

Importer couche par couche les données dans la base de données `[nom_bdd1]'.

Taper :

cd c:\postgresqlwin32\data\xxxx

shp2pgsql -s 27593 -c [nom_de_la_table_mise_a_jour.shp] [nom_de_la_table] | psql [nom_bdd1]

Note : le nom de la table doit être le même que celui de l'ancienne table supprimée. Voir tableau des correspondances des couches en annexe (Annexe 1).

Manipulation 2 : Importer une nouvelle couche.

1. Exporter en shape (.shp) la nouvelle table via le traducteur universel de MapInfo (Outils > Traducteur universel) dans le répertoire c:\PostgreSQLWin32\share\postgresql\xxxx.

2. Importer la nouvelle couche dans la base de données `[nom_bdd1]'.

Pour cela, ouvrir l'invite de commande en tant qu'administrateur PostgreSQL :

Dans Démarrer > Exécuter :

runas /user:[utilisateur] cmd

L'invite de commandes s'ouvre et vous demande d'entrer le mot de passe utilisateur.

Entrer :

[passe]

Importer la nouvelle couche dans la base de données `[nom_bdd1]'.

Taper :

cd c:\postgresqlwin32\data\xxxx

shp2pgsql -s 27593 -c [nom_de_la_nouvelle_table.shp] [nom_de_la_nouvelle_table] | psql [nom_bdd1]

3. Mettre à jour le mapfile (c:\ms4w\apps\chameleon\map).

Editer le/les mapfile(s) (mapfilepublic.map et mapfilelimite.map) avec le bloc note.

Dans la section ` #paramètres des couches#' :

Copier un bloc `layer' (commençant par LAYER et finissant par END#LAYER) existant du même type que celui de la nouvelle couche (polygon, line, point) défini à la ligne :

TYPE POLYGON (ou LINE ou POINT)

Coller le nouveau bloc layer dans le groupe et suivant la position relative voulue (Mapserver dessine les couches dans l'ordre défini dans le mapfile).

Paramétrer le nouveau layer :

Mettre à jour avec le nom entré dans la base de données, les lignes :

NAME "xxxx"

Et :

DATA "the_geom from xxxx"

Où `xxxx' est le nom de la nouvelle couche entré dans la base de données `donnees'.

Paramétrer la couleur d'affichage de la couche en modifiant les lignes suivantes surlignées:

CLASS

STYLE

COLOR 0 51 255

OUTLINECOLOR 255 255 255

END

Personnaliser les paramètres d'étiquetage en modifiant ou ajoutant les lignes suivantes:

LABELITEM "champx"

Où `champx' correspond au nom de champ servant à l'étiquetage.

Et :

LABEL

SIZE MEDIUM #taille de l'étiquette

MINFEATURESIZE AUTO #taille minimale d'affich.

POSITION CC #position par rapport à l'objet

COLOR 162 163 163 #couleur de la police

BACKGROUNDCOLOR 207 255 255 #couleur de fond

END

Sélectionner les champs interrogeables par clic en les listant dans la ligne :

HEADER "champ1^|champ3^|champ7^|"

Où `champ1' etc correspondent aux noms des champs attributaires que l'on veut rendre interrogeables par clic à partir de l'outil de navigation `informations' de l'interface web.

Sélectionner les champs interrogeables par requête attributaire en les listant dans la ligne du bloc METADATA :

SPATIALSEARCH "champ1,champ7,champ10 "

Où `champ1' etc correspondent aux noms des champs attributaires que l'on veut rendre interrogeables à partir du module de requête attributaire de l'interface web.

Note : L'ensemble des paramètres du mapfile sont détaillés à l'adresse http://fa.vdb.free.fr/MapServer/doc/mapfile-reference_fr.html .

4. Mettre à jour le fichier de légende xml (c:\ms4w\apps\chameleon\htdocs).

Editer le/les fichiers(s) de légende xml (legendepublic.xml et legendelimite.xml) avec le bloc note.

Copier un groupe (contenu dans les balises <group> et </group>) existant et le coller dans le `thème' xml (groupe de layer dans le mapfile) où la couche doit être affichée.

<group name="nom" ABSTRACT="TBA" visible="true" icon="images/.gif">

<layer name="xxxx"/>

</group>

`xxxx' correspond au nom de la table entrée dans la base de données et à la ligne `NAME' du mapfile et `nom' correspond au nom de la couche souhaité pour l'affichage dans la légende de l'interface web.

5. Vider le répertoire tmp (c:\ms4w\tmp) en exécutant les script `del-ms_tmp.bat' et `del-buttons.bat' et en supprimant manuellement les fichiers et répertoires du type sess_xxxx contenus dans c:\ms4w\tmp.

6. Redémarrer Apache en exécutant le script `apache-restart.bat' dans c:\ms4w.

Manipulation 3 : Changer les paramètres d'affichage d'une couche.

Voir point 3. de la manipulation 2 `Importer une nouvelle couche' et listing des paramètres du mapfile à l'adresse http://fa.vdb.free.fr/MapServer/doc/mapfile-reference_fr.html .

Manipulation 4 : Définir un nouveau login/mot de passe pour l'entrée limitée.

Accéder à l'interface d'administration de la base de données (PhpPgAdmin) en entrant l'url http://localhost/phpPgAdmin/index.php dans la barre d'adresse du navigateur ou en cliquant sur le lien `Administrer' de la section protégée du serveur cartographique.

Entrer le login [utilisateur] et le mot de passe [passe] pour vous logger.

Cliquer sur la base de données `[nom_bdd2]' et sur `SQL' en haut à droite de l'écran pour ouvrir une invite de commande SQL.

Importer un couple login/mot de passe dans la table `[nom_table]' de la base de données `[nom_bdd2]' en entrant la ligne suivante :

INSERT INTO [nom_table] VALUES('[login]','[mdp]');

Où [login] et [mdp] sont respectivement le login choisi et le mot de passe correspondant. Attention à conserver les guillemets.

Ou copier directement cette commande SQL à partir du fichier `SCRIPT_insert_login_et_mdp.sql' contenu sur le disque 2 (application\commandes SQL).

Cette opération doit être répétée pour chaque nouveau couple login/mot de passe souhaité.

Manipulation 5 : Créer une nouvelle base de données avec champ géométrique.

Créer la base de données `xxxx' (sans accent) devant contenir des objet géographiques (nécessité de charger l'extension PostGIS et les projections).

Ouvrir l'invite de commande en tant qu'administrateur PostgreSQL :

Dans Démarrer > Exécuter :

runas /user:[utilisateur] cmd

L'invite de commandes s'ouvre et vous demande d'entrer le mot de passe utilisateur.

Entrer :

[passe]

Taper :

cd c:\postgresqlwin32

createdb xxxx

createlang plpgsql xxxx

Charger l'extension PostGIS et les projections dans PostgreSQL pour la base de données `xxxx'.

Taper :

psql -d xxxx -f c:\PostgreSQLWin32\share\postgresql\postgis.sql

psql -d xxxx -f c:\PostgreSQLWin32\share\postgresql\spatial_ref_sys.sql

Manipulation 6 : Créer une nouvelle base de données simple.

Créer la base de données `yyyy' ne devant pas contenir d'objet géographiques.

Ouvrir l'invite de commande en tant qu'administrateur PostgreSQL :

Dans Démarrer > Exécuter :

runas /user:[utilisateur] cmd

L'invite de commandes s'ouvre et vous demande d'entrer le mot de passe utilisateur.

Entrer :

[passe]

Taper :

cd c:\postgresqlwin32

createdb yyyy

createlang plpgsql yyyy

Manipulation 7 : Créer une nouvelle table simple.

Création de la table `nouvelle_table' composée des champs `Nom' et `Prénom', dans la base de données `yyyy'.

Accéder à l'interface d'administration de la base de données (PhpPgAdmin) en entrant l'url http://xxxx/phpPgAdmin/index.php dans la barre d'adresse du navigateur ou en cliquant sur le lien `Administrer' de la section protégée du serveur cartographique.

Entrer le login [utilisateur] et le mot de passe [passe] pour vous logger.

Cliquer sur la base de données `yyyy' et sur `SQL' en haut à droite de l'écran pour ouvrir une invite de commande SQL.

Taper dans la fenêtre :

CREATE TABLE nouvelle_table ("Nom" character varying(20) DEFAULT ' '::character varying NOT NULL,"Prenom2" character varying(20) DEFAULT ' '::character varying);

Où `Nom' et `Prenom' sont ici de type character flottant limité à 20 caractères.

Importer un couple Nom/Prénom dans la table `nouvelle_table' de la base de données `yyyy'.

Dans l'invite de commande SQL de PhpPgAdmin taper :

INSERT INTO nouvelle_table VALUES('[nom]','[prenom]');

Où [nom] et [Prenom] doivent être remplacés par le couple Nom/Prénom à entrer dans la table. Attention à conserver les guillemets.

Note : Une documentation complète du SGBD PostgreSQL est disponible à l'adresse http://docs.postgresqlfr.org/pgsql-8.1.2-fr/index.html.

La liste des commandes SQL est également disponible à l'adresse http://docs.postgresqlfr.org/pgsql-8.1.2-fr/sql-commands.html.

*

* *

- ENGLISH VERSION -

Over the last few years, WebGIS have developed rapidly. Indeed, they allow the delivery of information and the « mutualisation » of data.

The mission consisted in producing a Webmapping application for municipal geospatial data consultation. The objective was to develop a web server application using open source technologies. This application is supposed to allow a better management and an easier information exploitation.

The set up of a Webmapping application is made easier thanks to proved open source applications. If, in this type of project, development competences are needed, the saving realised compared to software producers solutions potentially allows any interested organisation to equip themselves with this type of tool which would be adapted to their needs.

I had total freedom on this project right from the start and had room for manoeuvre in choosing the best suited application, the framework being already defined in the project specification. After the fast diagnostic phase related to the material and data, I had to work as an external provider.

There are currently four main open source solutions allowing to publish online geospatial data : static HTML, SVG, Java applet, map server architecture. The choice between the four of them is made easier thanks to their own limits and the heaviness of their display that allow to circumscribe each of them to a particular type of use and aim.

Eventually, the UMN Mapserver program and its PHPMapscript API were selected. After the compilation and integration phase of development environment and data, the next step consisted in conceiving a web client interface in accordance with the project specification as far as the navigation tools and the general ergonomy are concerned.

The interest of such a work lies mainly in the different steps that had to be taken in order to reach the objectives. Also, the choice of an application relating to MapServer allowed me to deepen my knowledge of that environment which remains the best known and the most used system in the Webmapping field.

- BIBLIOGRAPHIE & WEBOGRAPHIE -

Bibliographie

Kropla (B.), Beginning MapServer : Open Source GIS Development, The Expert's Voice In Open Source, Apress, 2005, 448p.

Webographie

Serveurs http libres

Apache http Server http://www.apachefrance.com/

JigSaw (écrit en Java) http://www.w3.org/Jigsaw/

Serveurs/moteurs cartographiques libres

UMN MapServer http://mapserver.gis.umn.edu/

MapGuide OS http://mapguide.osgeo.org/

GeoServer http://geoserver.org/

Librairies

GDAL (support sources matricielles) http://www.gdal.org/

OGR (support sources vecteurs) http://www.gdal.org/ogr/

PROJ4 (projections) http://proj.maptools.org/

API, Framework et outils libres

API Mapscript (classes) http://mapserver.gis.umn.edu/docs/reference/mapscript

CWC2 Chameleon (client) http://chameleon.maptools.org/

FWTools (pack d'outils libres) http://fwtools.maptools.org/

DBDesigner (modélisation BDD) http://www.fabforce.net/dbdesigner4/

Maguma Open Studio (éditeur PHP) http://openstudio.sourceforge.net/

SGBDR libres

PostgreSQL http://www.postgresqlfr.org/

PostGIS (module spatial pgsql) http://www.postgis.fr/

MySQL http://www-fr.mysql.com/

Communautaire Open Source et Forum SIG

Maptools (anglais) http://www.maptools.org/

SourceForge (anglais) http://sourceforge.net/

OSGeo (anglais) http://www.osgeo.org/

PHP (français) http://www.phpfrance.com/

Nabble GIS (anglais) http://www.nabble.com/GIS-f1188.html

Georezo (français) http://georezo.net/

PortailSIG (français) http://www.portailsig.org/

ForumSIG (français) http://www.forumsig.org/

OGC (anglais) http://www.opengeospatial.org/

Bibliographie et webographie non exhaustives.

* 1 Etablissement Public de Coopération Intercommunale

* 2 Une carte statique consiste en une simple image (jpg, png, gif) insérée dans une page html. Elle peut-être cliquable c'est-à-dire pourvue de zones cliquables définies entre les balises <map> et </map> dans le bloc `body' de la page html. Ces zones peuvent pointer vers un lien (ou zoom prédéfini) ou afficher l'information attributaire au passage de la souris.

Une carte dynamique permet une navigation poussée incluant le zoom, les déplacements voir un affichage sélectif des données, des outils de mesure et de recherche notamment.

* 3 En 2006, 81% des collectivités locales avaient recours à des produits open source. La part des dépenses liées au libre dans leur budget informatique est passée de 4 à 7% entre 2005 et 2006. Les administrations centrales dépendantes de l'Etat sont en avance (part de 10% en 2005 et 14% en 2006). Pour mutualiser les expériences, l'ADULLACT (Association des Développeurs et Utilisateurs de Logiciels Libres pour l'Administration et les Collectivités Territoriales) a été mise en place ainsi qu'une plateforme de développement collaboratif (Gforge Adullact). Les administrations centrales dépendantes de l'Etat sont en avance (10% en 2005 et 14% en 2006). Chiffres Enquête Markess International 2006.

* 4 http://www.autodesk.fr/adsk/servlet/index?siteID=458335&id=7499959 et http://mapguide.osgeo.org/

* 5 Open Source Geospatial Foundation, plateforme collaborative visant à piloter et développer les projets open source dans le domaine de la géomatique (http://www.osgeo.org/node/172).

* 6 WFS-T (objet vectoriel), WMS (carte), WCS (raster), WMC (sources) etc sont des protocoles de l'OGC portant sur le transfert par internet de données géoréférencées à partir de serveurs distants.

* 7 Un programme CGI est exécuté côté serveur. Il permet l'échange de données entre le serveur et le navigateur. Quand il reçoit une requête du poste client, le CGI détermine (en fonction de l'extension) l'action à effectuer. MapServer utilise ainsi les informations passées dans l'URL (et les paramètres renseignés dans le(s) fichier(s) de configuration -Mapfile-) pour dessiner la carte demandée ainsi que l'échelle et les envoyer via le serveur web au poste client dans une page HTML standard modélisée (template).

* 8 Application Programming Interface (Interface de programmation d'Application). Il s'agit ici de l'ensemble des commandes permettant d'accéder aux fonctionnalités du noyau MapServer.

* 9 Chameleon a été développé par DM Solutions Inc. pour le Canada's GeoConnections Access Program (http://chameleon.maptools.org).

* 10 Cette architecture classique est en outre nécessaire pour envisager l'implémentation future de nouvelles fonctionnalités telles que le traitement de requêtes spatiales. Cet outil n'était pas prévu par le cahier des charges où la simplicité et l'intuitivité étaient souhaitées, mais fortement envisagé dans une nouvelle phase de développement de l'application.

* 11 Portails communautaires : http://www.postgresqlfr.org et http://www.postgis.fr

* 12 European Petroleum Survey Group. Organisme créé en 1985, devenu depuis le Oil and Gas Producers Surveying and Positioning Committee (OGP) ayant mis en place une base de données (www.epsg.org) contenant les systèmes de référence spatiale existant dans le monde et auxquels il a attribué un identifiant à 5 chiffres. Cette codification est utilisée dans les standards de l'Open Geospatial Consortium (OGC).






Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy








"Il y a des temps ou l'on doit dispenser son mépris qu'avec économie à cause du grand nombre de nécessiteux"   Chateaubriand