Transcript
  • 5/10/2018 PDFC-Serveurs Cartographiques en Ligne1

    1/49

    Serveur Cartographique et SIG interactifs en ligneI. Bilbio/WebographieBibliographie:

    Scott Davis, GIS for Web Developpers, adding where to your applications,The Pragmatic bookshelf, 2007, ISBN: 0-9745140-9-8,254 pages. Bill Kropla, Beginning MapSeNer: Open Source GIS Development , APRESS,aout 2005, ISBN: 1-59059-490-8,448 pp Tyler Mitchell, Web Mapping Illustrated, Using Open Source GIS Toolkits ,O'Reilly, juin 2005, ISBN: 0-596-00865-1,367 pages

    Webographie:Forums d'utilite generale : http://www.forumsig.org, http://www.portailsig.org ,http://www.georezo.netSite collaboratif proposant des presentations et tutoriels de WebMapping :http://www.geotribu.net

    Normes Open Geospatial Consortium Site officiel : http://www.opengeospatial.org Documentation illustree de Demis sur IeWMS :http://www.demis.nl/home/pages/wms/docs/OpenGISWMS.htm

    MapServerSite officiel : http://mapserver.gis.umn.edu/index.html(telechargements,documentations ).

    Tutorial officiel : http://biometry.gis.umn.edu/tutorial/ Actes de la conference OpenSource GIS 2004: http://www.omsug.calosgis2004/proceedings.html 2005: http://ms.gis.umn.edu/community/conferences/MUM3 2006: http://www.foss4g2006.org 2007: http://www.foss4g2007 .orgl 2008: http://conference.osgeo.org/index.php/foss4g/2008 Ressources du TYDAC (presentation du mapfile et outils) :http://umn.mapserver.ch Presentation extensive de MapServer:http://ms.gis.umn.edu/new users/index html

    http://www.forumsig.org%2C/http://www.portailsig.org/http://www.georezo.net/http://www.geotribu.net/http://www.opengeospatial.org/http://www.demis.nl/home/pages/wms/docs/OpenGISWMS.htmhttp://biometry.gis.umn.edu/tutorial/http://www.omsug.calosgis2004/proceedings.htmlhttp://ms.gis.umn.edu/community/conferences/MUM3http://www.foss4g2006.org/http://www.foss4g2007/http://conference.osgeo.org/index.php/foss4g/2008http://umn.mapserver.ch/http://ms.gis.umn.edu/newhttp://ms.gis.umn.edu/newhttp://umn.mapserver.ch/http://conference.osgeo.org/index.php/foss4g/2008http://www.foss4g2007/http://www.foss4g2006.org/http://ms.gis.umn.edu/community/conferences/MUM3http://www.omsug.calosgis2004/proceedings.htmlhttp://biometry.gis.umn.edu/tutorial/http://www.demis.nl/home/pages/wms/docs/OpenGISWMS.htmhttp://www.opengeospatial.org/http://www.geotribu.net/http://www.georezo.net/http://www.portailsig.org/http://www.forumsig.org%2C/
  • 5/10/2018 PDFC-Serveurs Cartographiques en Ligne1

    2/49

    W iki offic ie l : http://mapserver.gis.umn.edu/cgi-bin/wiki.pl FAQ Portail S IG : http://www.portailsig.org/faq/mapserver Recettes (trues et astuces) : ht tp: / /www.mobilegeographics.com/mapserver/

    PostGIS

    S ite offic iel : http://www.postgis.org S ite de reference francophone : http://www.postgis.fr S ite de tutoriaux de J.D . Techer : http://techer.pascal.free.fr/postgis

    II, Leserveur web SIG , principes et solutionsC ette p rem iere p artie vise a presenter les ro les d 'un serveur S IG sur Internet, au traversd'un apercu des solutions logicie lles com merciales et d 'un exam en plus approfondi deM apServer, la principale solution open source. O n y com m ence la presentationte ch niq ue , p rag m atiq ue , d u s uje t.

    1- Qu'est-ce qu'un serveur SIG ?a) Principe

    .. Cod age un en requete.. E nvo i re qu ote HTTP. . R e ce pt io rl fichier HTMl.. D eco da ge e t a ffich ag e

    . .~e'~ . '~,;gi;~(.ooL J

    t NavIgation Classique IO rd ln at eu r c lie ntNav.igaleur web Serveur

    e C ' i m ~ ~ ~ ~ ' - _ ~ ~ ( e ! s _- - - :)L~~.~~~..~'~'.~?~'~~.~.~)Requete HTTP . . D ec .o da ge re qu et e. . R ec .h er Ch e fic hie r h trn l a u

    e xe cu tio n sc rip t (p hp , a sp ... ).. A sse mblag e htm l+un aqes+ css etc ... E nv oi fic hie r

    http://mapserver.gis.umn.edu/cgi-bin/wiki.plhttp://www.portailsig.org/faq/mapserverhttp://www.mobilegeographics.com/mapserver/http://www.postgis.org/http://www.postgis.fr/http://techer.pascal.free.fr/postgishttp://techer.pascal.free.fr/postgishttp://www.postgis.fr/http://www.postgis.org/http://www.mobilegeographics.com/mapserver/http://www.portailsig.org/faq/mapserverhttp://mapserver.gis.umn.edu/cgi-bin/wiki.pl
  • 5/10/2018 PDFC-Serveurs Cartographiques en Ligne1

    3/49

    C _ . : : - . . . . .J~~ .~ .~~ :'.: ' B ~ - ~ e s - e 'dO~~~~-~':

    Navigation SIG I

    Ordinateur clientNavigateur web Serveur

    o)- Conversion formulaire HTML

    v ers re Qu at e S IG. . Envoi r eQ u tMe HTML +S IG.. R.eception f ic h ie r HTML+image.. O eoo da ge e l a ffich ag e

    .. D ecodage requete... Recherche flchier hlml ouexecution scri pi (p bp, asP- J)- R.echerche donnees SIG.. Formatage.. Envoi fichier hlml at/ou image

    Un serveur SIG est un serveur Internet dote de fonctionnalites SIG, c'est a dire qu'il estcapable de:

    gerer des donnees georeferencees; executer des requetes nurneriques, textuelles et spatia/es; generer des documents cartographiques retourner ces documents a I'ordinateur client qui les a dernandes,

    Ce serveur SIG prend generalement la forme d'une couche logicielle installee sur lamachine serveur, qui va intercepter les requetes de type SIG et completer les reponsesdu logiciel serveur par des elements cartographiques.Par serveur on entend la machine qui sert des donnees internet en reponse a desrequetes, mais aussi les logiciels qui effectuent concreternent cette operation sur lamachine.b) Les fonctionsLe serveur SIG va donc ajouter aux fonctions habituelles d'un serveur Internet desfonctions en relation avec la gestion et Ie traitement de donnees graphiquesgeoreferencees.

    ~ stockage et gestion des donnees SIG

  • 5/10/2018 PDFC-Serveurs Cartographiques en Ligne1

    4/49

    Cette fonction centrale du serveur se base Ie plus souvent sur un stockage des donneesSIG sous la forme de fichiers, qui sont Ius et traites au moment des requetes.Plus interessant, Ie stockage peut se faire par une solution SGBO classique etendue depossibilites de stockages d'elernents graphiques georeferences. Par exemple :

    ~ PostgreSQL possede une extension nornrnee PostGIS~ Oracle possede une capacite OracleSpatial~ ArcGIS peut se baser sur une BOO Access, sur une GeoOatabase ...~ MySQL est etendu par MyGIS

    Beaucoup de solutions logicielles SGBO sont aujourd'hui compatibles entre elles par Iebiais de passerelles de conversion comme OOBC. L'ajout de donnees SIG a un SGBOclassique s'effectue Ie plus souvent par conversion des informations graphiques enformat texte ou binaire, lie a un dictionnaire de donnees specifique (topologique). Cetteconversion s'effectue soit automatiquement en interne au logiciel (solutionscommerciales), soit par traduction des fichiers (PostGIS, MyGIS, FME...).

    ~ traitement des requetes spatiales

    Le serveur SIG doit etre capable de rendre les services de base d'un veritable moteurSIG, au dela du stockage des donnees, c'est a dire la possibilite d'effectuer desrequetes a composante spatiale :

    inclusion I juxtaposition I croisement calculs de longueurs et superficies mesure de distances, zones tampons mise a jour des donnees graphiques et attributaires assemblage et habillage graphique des couches d'information pour obtenir une

    carte formatage et diffusion

    Enfin Ie serveur SIG doit etre capable de retourner I'information sous une forme adapteea I'interface Internet, c'est a dire au site atfiche dans Ie navigateur de la machine cliente.

  • 5/10/2018 PDFC-Serveurs Cartographiques en Ligne1

    5/49

    Cela suppose en particulier la capacite de transformer les donnees graphiques etalphanurnenques issues d'une requete dans Ie SGDB dans un format compatible avecles navigateurs :

    gif, jpeg ou png pour les bitmaps svg, swf (flash), pour les vecteurs (plugin necessaire),

    2- Les principaux serveurs SIG commerciaux.a) ESRI ArcWeb ServiceshUp:/Iwww.esri.com/software/arcwebservices/index.htmlC'est un serveur de donnees SIG et un pourvoyeur de services web orientes SIG. Lesdonnees sont interrogeables en utilisant les protocoles XML (dont Ie standard soap) etWMS. Les donnees peuvent etre directement utilisees comme sources dans ArcGIS(arcweb toolbar). Les donnees sont en fait stockees sur des serveurs dedies geres parESRI, Ie poste de travail n'a besoin que de I'installation d'un logiciel client, pas deserveur, de solution de stockage, et de maintenance a prevoir, En consequence, lacommercialisation est assez originale : il faut prendre un abonnement d'un an et acheterdes packs de 100.000 requetes (1250$, hors discounts en volume).b) ESRI ArclMS et ArcGIS ServerhUp:/Iwww.esrifrance.fr/produit/arcims.aspArcIMS

    C'est la solution inteqree d'ESRI pour serveur SIG, accompaqnee d'outils de conceptionet d'aide a la mise en place. II permet, classiquement, l'inteqration de donnees varieeset leur interrogation (protocoles varies, GML, XML, WFS et WMS ...), mais propose enplus de nombreuses fonctlonnalltes connexes : webservices de localisation, degeocodage, gestion de clients varies voir legers comme les pda... La contrepartie deceUe grande integration est une relative lourdeur, a I'installation, la gestion ... et a I'achat.

    ArcGIS Server

    http://hup/Iwww.esri.com/software/arcwebservices/index.htmlhttp://hup/Iwww.esrifrance.fr/produit/arcims.asphttp://hup/Iwww.esrifrance.fr/produit/arcims.asphttp://hup/Iwww.esri.com/software/arcwebservices/index.html
  • 5/10/2018 PDFC-Serveurs Cartographiques en Ligne1

    6/49

    Nouveau produit d'ESRl, depuis la version 9.2, qui propose une solution de stockage etde developpement d'applications, selon les deux technologies les plus courantes, .Netet J2EE (Java), de facon beaucoup plus accessible qu'ArclMS.c) Mapinfo MapXtremehUp:/Iwww.mapinfo.com/products/developer-tools/desktop%2c-mobile-%26-internet-offeringMapExtreme est une plateforme de developpernent qui offre des fonctions dewebmapping : stockage et I'interrogation de donnees SIG par des clients Internet.L'interrogation s'effectue selon les protocoles courants (GML, WFS et WMS), sur desbases Access, Oracle, SQLServer ou tout SGBD compatible ODBe. L'edition Javaapporte de nouvelles fonctionnalites en plus de la capacite multi-plateforme, notammentde representation (Iissages, aureoles). MapXtreme est aussi disponible sous forme decomposant .Net, Ie standard de developpernent de Microsoft. Mais cela reste uneplateforme de developpernent d'applications, pas une application directement utilisable.

  • 5/10/2018 PDFC-Serveurs Cartographiques en Ligne1

    7/49

    d) Autodesk Mapguide, Mapguide OpenSourcehUp:/Iwww.autodesk.fr/adsklselVleUindex?siteID=458335&id=7499959hUps://mapguide.osgeo.org/Autodesk MapGuide est un moteur SIG client-serveur et une plate-forme dedeveloppernent, compatible PHP, .Netet Java. la version OpenSource est plus recente,et placee sous I'aile de la fondation OSGeo. les fonctionnalites des deux versions sontquasi les memes, la difference jouant sur Ie service, Ie support, la langue, et ladisponibilite de passerellesd'importation plus nombreuses (Sal server notamment pourla version commerciale, mais en beta pour la version OS).Autodesk propose en outreune application commerciale, MapGuide Studio, pour composer plus facilement desapplicationsde webmapping basees sur MapGuide. Son equivalent OS est Fusion, unprojet assez recent, qui a comme particulariteinteressante de foncitonner aussi avecMapServer.

    e) Geoconcept Internet Serverhttp://www.geoconcept.com/-Le-developpement-web-une-.htmlGeoconcept propose lui aussi des solutions variees de mise en reseau de SIG, auteurde son moteur cartographique prevu pour travailler en client-serveur, Ces solutions sedeclinent en packages plus ou moins fournis, inteqres, auteur du compos antGeoConcept Internet Server (GCIS) qui fait la liaison GC / reseau, GCIS peut etre utiliseseul ou accornpaqne de services prets a I'emploi. Ce composant permet de mettre enligne des cartes et des analyses, mais aussi des interfaces ( clients ) toutes pretes, etIe moyen d'en developper de plus adaptees aux besoins (technologies ouvertes du web,html, js, xml, java, et kit de developpernent), Plus recernrnent, GeoConcept a ajoute ason offre une solution radicalement orientee client-serveur : lBS Platform, qui reprendGCIS et lui ajoute des modules cornplementaires, un geocodeur automatique, desclients ajax et applet java, ainsi qu'un kit de developpement java cote serveur.

    3- Presentation des solutions open sourcea) Panorama des solutions disponibles et de leurs fonctions, cote client et coteserveur.

    http://hup/Iwww.autodesk.fr/adsklselVleUindex?siteID=458335&id=7499959http://www.geoconcept.com/-Le-developpement-web-une-.htmlhttp://www.geoconcept.com/-Le-developpement-web-une-.htmlhttp://hup/Iwww.autodesk.fr/adsklselVleUindex?siteID=458335&id=7499959
  • 5/10/2018 PDFC-Serveurs Cartographiques en Ligne1

    8/49

    0irM'~'~. ;; Il ~1 :MopIl '" I

  • 5/10/2018 PDFC-Serveurs Cartographiques en Ligne1

    9/49

    -> schemes 3 et 4

    I Navigation SIG

    Ordinateur clientNa.vigateur web Serveur

    oLoE l. -~...~.....~~....~.~.~~.~ SIG ~.~.~~ ~.~ .o

    .. C on ve rs io n lo rrn ula ire H TM Lvers re qu at e S IG.. E nvo i re qu ete H TM L+ SIG.. R ece ptio n fie hie r H TM L + im ag 9.. D ee od ag 9 9 t a trlch ag 9

    .. Decodage requM e.. R eche rche fichier hlm l oue xe cu tio n s crip t (p hp , a sp .. ).. R ec he rc he d on ne es SIG. . F o rr na ta ge

    . . lE :n vo l fio hie r h lm l e t/ au im a ge

    HlITMlINm igG it eu .r 1 ~ lI 1I :t eme, t

    -'I,~Moteuf~1li;~J!lOIil'..'

    S : > 1 e m ed'~jj1l1l!QjltiIIQi'I

    ~~+~., I( tl!)O fifjg~ '~M :y l~~) ]L______:~~~ _ _j

    Do:nnees,CtIIE[Nl]'

    ~ Un site Internet classique (statique) I'utilisateur demande a afficher une page dans son navigateur, en donnant son

    ad resse URL. Le navigateur convertit cette demande en une requete HTTP.

  • 5/10/2018 PDFC-Serveurs Cartographiques en Ligne1

    10/49

    Cette requete HTTP est convertie par Ie reseau Internet (DNS et noeuds) en unchemin vers un fichier HTML sur une machine serveur.

    Le serveur traite cette demande en rassemblant les elements de la page HTML(fichier html et images, feuilles de styles, scripts, etc., potentiellement utiles).

    Le serveur envoie au navigateur client les fichiers. Le navigateur traite les fichiers pour afficher la page.

    ~ Un site Internet dynamique, avec php et MySQL

    L'Utilisateur demande a afficher une page dans son navigateur, en donnant sonadresse URL. Le navigateur convertit cette demande en une requete HTTP. Cette requete HTTP est convertie par Ie reseau Internet (DNS et noeuds) en un

    chemin de fichier PHP sur une machine serveur. Le serveur transfers la requete a PHP. Php traite Ie fichier demande, c'est a dire interprete Ie script en langage php, ce

    script peut : ecrire du texte, donc generer des balises HTML. lire et modifier des images. executer des requetes sur un SGBD et en traiter les donnees des resultats. Php convertit Ie resultat de l'execution du fichier en un fichier HTML, qui est

    retourne au serveur.

    Le serveur traite ce fichier en rassemblant les elements de la page HTML (fichierhtml et images, feuilles de styles, scripts, etc., potentiellement utiles).

    Le serveur envoie au navigateur client les fichiers. Le navigateur traite les fichiers pour afficher la page.

    ~ Un site Internet dynamique sur serveur SIG.

  • 5/10/2018 PDFC-Serveurs Cartographiques en Ligne1

    11/49

    L'Utilisateur demande a afficher une page dans son navigateur, en donnant sonadresse URL.

    Le navigateur convertit cette demande en une requete HTTP. Cette requete HTTP est convertie par Ie reseau Internet (DNS et noeuds) en un

    chemin de fichier PHP sur une machine serveur. Le serveur transfere la requete a PHP. Php traite Ie fichier dernande, c'est a dire interprets Ie script en langage php, ce

    script peut :

    o ecrire du texte, donc qenerer des balises HTML.o lire et modifier des images.o executer des requetes sur un SGBD et en traiter les donnees des

    resultats. MapScript traite les aspects SIG de la requete en preparant un ou plusieurs

    documents (images), a partir de :o donnees rastero donnees vecteuro donnees alphanurneriques attributaires

    donnees stockees sur serveur SGBD avec extension spatiale.

    Ces donnees peuvent etre accessibles en local ou sur d'autres serveurs, distants.

    Les images generees par MapServer sont ajoutees aux sources de la pagerassernblees par PHP.

    Php convertit Ie resultat de l'execution du fichier en un fichier HTML, qui estretourne au serveur.

    Le serveur traite ce fichier en rassemblant les elements de la page HTML (fichierhtml et images, feuilles de styles, scripts, etc., potentiellement utiles).

    Le serveur envoie au navigateur client les fichiers. Le navigateur traite les fichiers pour afficher la page.

  • 5/10/2018 PDFC-Serveurs Cartographiques en Ligne1

    12/49

    Cette organisation se complique Ie plus souvent dans les faits par une interfaceutilisateur, gemeralement basee sur un formulaire qui va aider a ecrire la requete endirection de MapServer, avec notamment la gestion des clics de la souris sur un imagepour demander un zoom, un deplacernent, et I'affichage de case a cocher, de listes dechamps et de parametres (cf. exemples en bibliographie).c) Integration des fonds

    ~ Shapefile ou conversion SGBD ?Pour etre prises en compte directement par MapServer, les donnees doivent etrestockees dans un SGBD (SDE, PostGIS, Oracle), ou etre au format shapefile. La lecturedirecte des shapefiles et Ie plus souvent plus rapide que celie des donnees dans unetable PostGIS, pour les cartes simples, mais I'utilisation d'un SGBDR trouve son utilitedans la gestion multi-table, I'interrogation des donnees attributaires et la possibilited'utiliser des fonctions de requete SIG plus puissantes. En outre, la rapidite globale defonctionnement est arnelioree avec un SGBDR lorsque les donnees sont en grandesquantites, La bibliotheque de fonctions (library en anglais) GDALlOGR permet deconvertir a la volee des formats de donnees spatiales pour leur lecture par MapServer,mais les temps de traitement sont un peu plus longs.

    ~ Integration dans PostGISLa solution de stockage des donnees la plus souvent retenue dans les solutionsMapServer est celie de PostGreSOL etendu par PostGIS. Ce SGBDR est en effet tresperformant pour la gestion et I'interrogation des donnees, c'est par exemple beaucoupplus simple de mettre a jour des informations quand elles sont deja structurees en table.De plus, Ie systerne est sous licence GPL. On peut donc I'utiliser de facon libre.L'alternative reste bien sur Oracle et son extension Oracle Spatial.PostGIS (http://www.postgis.org et http://www.postgis.fr) est une extension du SGBDRPostgreSOL qui permet la gestion d'objets SIG. Ces objets correspondent a la definitiondes Simple features de l'OpenGIS Consortium(http://www.opengeospatial.org/specs/?page=specs).Des utilitaires de conversion sont disponibles pour faciliter la migration des donneesdans des tables PostGIS.

  • 5/10/2018 PDFC-Serveurs Cartographiques en Ligne1

    13/49

    Integration par fichier Sal1.3/ch04.html#id2568970les fichiers Sal sont des fichiers de format texte contenant des commandes Sal. On

    http://postgis.refractions.neUdocumentation/manual-

    peut donc les utiliser pour creer des tables postGIS et les remplir de donnees SIG.Integration avec Ie loader shape to pgsql :http://postgis.refractions.neUdocumentation/manual-1.3/ch04.html#id2569045le loader , ou chargeur, est un utilitaire compile qui permet de convertir un shapefileen un fichier Sal du type ci-dessus.

    ~ Utilisation de la bibliotheque OGR pour une conversion dynamique des fichiersUne autre possibitite pour utiliser des donnees SIG dans des formats natifs est de lesfaire convertir a la volee par la blbliotheque OGR (http://gdal.maptools.org/ogr/). Cettebibliotheque (library) permet entre autres d'etablir une passerelle entre les formats defichiers SIG les plus courants et MapServer (http://www.gdal.org/ogr/ogrformats.html).Elle fait aujourd'hui partie de la suite de bilbiotheques GDALIOGR, et est directementutilisable par MapServer.Ces modifications faites, on peut fournir des fonds a une couche dans un fichier map parlAYER

    CONNECTIONTYPE OGRCONNECTION "data/mymapinfofile.TAB"

    END # end of layerla biblictheque GDAl (http://www.remotesensing.org/gdal/) permet, sur Ie rnerneprincipe, l'acces a des sources de donnees SIG, raster essentiellement.e) Installation et test de MapServerA I'origine MapServer est un projet OpenSource de l'Universite du Minnesota(http://mapserver.gis.umn.edu/), presente comme un code source generant unexecutable a installer sur un serveur Unix ou compatible (Iinux). Une installation normale de MapServer suppose donc les etapes suivantes :

    http://postgis.refractions.neudocumentation/manual-http://postgis.refractions.neudocumentation/manual-
  • 5/10/2018 PDFC-Serveurs Cartographiques en Ligne1

    14/49

    telecharpernent de la derniere version des fichiers source (en langage C) telecharqernent des bibtiotheques complernentaires (proj, ogr, freetype, gd, pg,

    gdal ...) configuration, compilation, installation des bibliotheques cornplementaires, configuration des sources de MapServer (./config) compilation par makefile (make) installation (make install)

    Ces operations ne sont pas simples a effectuer sur une machine unix (Iinux), et peuventprendre plusieurs jours de travail a un debutant.Pour simplifier (fortement) cette mise en place, Ie site MapTools.org propose MS4WMapServer for Windows un dossier cornpresse permettant d'installer :

    o Apache version 2.2.3o PHP version 5.2.0 (MS4W 2.x) or 4.4.4 (MS4W 1.x)o MapServer 4.10.0 CGI and MapScript (CSharp, Java, PHP, Python)o support GD 2.0.33, FreeType 2.1.10, GDALlOGR 1.3.2, PROJ, WMSIWFS,

    Flash, PDF, ECW3.1, PostGIS, GEOS, libcurI7.15.1o mapserver utilitieso gdal/ogr utilitieso proj.4 utilitieso shp2tile utilityo shapelib utilitieso shpdiff utilityo PHP_OGR Extension 1.1.1o WTChart 1.2.0

    Cette ressource est disponible a I'adresse :http://maptools.org/ms4w/L'installation est joyeusement simple: il suffit de decornpresser Ie fichier a la racine d'undisque dur, et de lancer un fichier batch pour installer Ie serveur apache comme service(c'est a dire application lancee automatiquement par I'OS). Le dernarraqe du serveurpeut se faire par I'utilitaire apache Monitor ou en lancant manuellement Ie service.

    http://maptools.org/ms4w/http://maptools.org/ms4w/
  • 5/10/2018 PDFC-Serveurs Cartographiques en Ligne1

    15/49

    Apres I'installation, Ie pointage d'un navigateur sur I'adresse http://iocalhost aboutit surla page d'accueil du serveur SIG nouvellement installe. On dispose ainsi des principauxoutils necessaires au test et a la mise en place d'un sig en ligne base sur MapServer.II. Approfondissement de I'utilisation de MapServerApres avoir installe un serveur SIG MapServer sous Windows avec Ie paquet MS4WdeMapTools, nous allons explorer et en illustrer par des exemples les possibilites offertespar les mapfiles et Ie fonctionnement avec les templates (fichiers rnodeles) HTML.

    Preambule : Les diverses manieres d'utiliser MapServer.MapServer est a I'origine une application a la ligne de commande, qui a donnenaissance a plusieurs versions, offrant les memes possibilites de cartographie maisdans des contextes differents.

    MapServer CGI : G'est Ie mapserver.exe de la version Windows, c'est a dire uneapplication brute. Gette version est une application GGI, c'est a dire accessible adistance dans une installation serveur web. CGI signifie Gommon Gateway Interface,c'est un protocole utilise par tous les serveurs et navigateurs pour permettre l'accesdistant a des applications (sous certaines conditions de securite). Dans ce cas, onfournit les parametres dans I'url, au minimum un mapfile et un mode par exemple :http://localhostlcgi-bin/mapserv.exe?map= ..lhtdocs/raster/rastr1.map&mode=map

    MapServer MapScript : G'est la version bibliotheque de fonctions du logiciel.Elle est disponible pour les langages PHP, Python, Perl, Java. MapServer est alorsdisponible sous la forme de fonctions accessibles directement dans Ie langage deprogrammation. Par exemple, en PHP, on charge la bibliotheque de fonctions (library),puis on peut ouvrir ou generer un mapfile, modifier des parametres, faire des selections,et generer des cartes, etc. dans Ie script PHP.

    1- Description illustree de la structure des mapfiles.Documentation officielle : http://mapserver.gis.umn.edu/docs/reference/mapfile

    http://mapserver.gis.umn.edu/docs/reference/mapfilehttp://mapserver.gis.umn.edu/docs/reference/mapfile
  • 5/10/2018 PDFC-Serveurs Cartographiques en Ligne1

    16/49

    Les parametres obligatoires ou importants 8 fournir dans un mapfile sont reperes par unsoulignement.Les mapfiles sont des fichiers texte qui vont contenir tous les parametres necessaires 8MapServer pour la generation d'un document cartographique, statique ou dynamique. lissont organises en blocs (ou objets) hierarchiques, irnbriques, notes NOM_DU_BLOC ...END. Le bloc racine est Ie loc MAP.

    GeneralitesLes mapfiles ne sont pas sensibles 8 la casse (minuscules I majuscules), sauf pour lesnoms des champs attributaires, notes entre [crochets], et naturellement les valeurs detype chaine, notees entre guillemets ou apostrophes.Un mapfile contient au maximum 50 couches (layers) (mais on peut modifier cette valeurdans Ie code source et recompiler MapServer).Les chemins peuvent etre indiques de rnaniere absolue (8 partir de la racine dusystems), ou relativement 8 I'emplacement du mapfile. Les chemins vers les donneessont relatifs au pararnetre SHAPEPATH (en I'absence de ce dernier les donnees serontrecherchees dans Ie meme repertoire que Ie mapfile).

    Le bloc MAP: Ce bloc est la racine du mapfile, il va contenir les parametres concernantla qlobalite de la carte 8 generer.

    Parametres generauxNAME: nom de la carte, prefixe ajoute 8 tous les fichiers image generes par Ie mapfile,donc 8 garder de courte taille, et entre guillemets

    UNITS: Unite de la carte, utilise pour la les calculs et Ie dessin de la barre d'echelle,L'information sur l'unite du fond de carte n'est pas toujours apportee par Ie bloc projection , il faut donc essayer de la fournir explicitement 8 chaque fois.Valeurs : [feetlincheslkilometerslmeterslmilesldd]EXTENT: Extension de la carte, donc coordonnees des extremites de la carte cessineedans I'image generee par Ie mapfile.

  • 5/10/2018 PDFC-Serveurs Cartographiques en Ligne1

    17/49

    Valeurs : [xmin] [ymin] [xmax] [ymax]

    STATUS: On ou Off, active ou desactive la totalite du mapfile.

    FONTSET et SYMBOLSET : chemin et nom des fichiers contenant les definitions depolices de caractere (utile sous linux) et de symboles (on peut aussi definir un symboledirectement dans Ie mapfile, mais c'est utile de pouvoir les rassembler dans un seulfichier qui pourra etre appele par differents mapfiles).

    SHAPEPATH : Chemin vers Ie repertoire contenant les fichiers de donnees (descouches), ou Ie chemin de base a partir duquelles parametres DATA iront les chercher.

    ANGLE: Angle de rotation de I'image, en deqres, Utilise en mode MapScript, demandeun bloc PROJECTION.

    DEBUG: Active Ie deboqaqe sur fichier de log et en precise Ie niveau. Une variablesysterne "MS_ERRORFILE" doit etre presente et indiquer Ie chemin du fichier de log.Valeurs : [offlonIOI112131415]

    Parametres de generation de I'image

    IMAGETYPE : type de fichier image a generer. Correspond a I'ensemble inclut pardefaut de blocs OUTPUTFORMAT. Ce pararnetre depend des options avec lesquelles aete compile MapServer.Valeurs : [giflpngijpeglwbmpigtifflswfluser_defined]

    SIZE: Dimensions (Iargeur et hauteur) de I'image a generer, en pixels, separees par unespace.

    RESOLUTION: Resolution de I'image en dpi, par defaut 72. N'affecte que les calculsd'echelle, cf. Ie bloc SCALEBAR.

  • 5/10/2018 PDFC-Serveurs Cartographiques en Ligne1

    18/49

    IMAGECOLOR :Couleur de fond de I'image de la carte (RGB).Le bloc MAP va contenir, en plus des parametres gemeraux, les blocs de second niveau,qui vont permettre de specifier Ie contenu de la carte.

    Ie bloc WEBCe bloc va pararnetrer Ie fonctionnement du serveur Web auteur de la carte generee parMapServer.

    IMAGEPATH : Chemin absolu vers Ie repertoire temporaire ou sera stocke Ie fichierimage qenere par Ie mapfile. Doit se terminer par un slash I , de preference utiliserdes slashs, pas des anti-slashs \ (rnerne sous windows).

    IMAGEURL : Base de I'url (partie de I'adresse web s'ajoutant au nom du serveur dansI'url) pointant sur Ie repertoire temporaire contenant les fichiers image generes.Correspond a I'alias defini dans la configuration du serveur Web.EMPTY : Uri vers laquelle I'utilisateur est rediriqe lorsqu'une requete MapServer neretourne pas de resultats,

    ERROR: Uri vers laquelle I'utilisateur est rediriqe lorsque se produit une erreur.

    LOG: Chemin et nom du fichier texte dans lequel sera inscrite l'activite de MapServersur ce mapfile. Contient une trace des operations effectuees et des eventuefes erreurssurvenus. Fonctionne en parallele avec Ie pararnetre DEBUG et les parametres LOGdes blocs LAYER du mapfile.

    MINSCALE : Echelle minimale a laquelle Ie mapfile sera dessine, Si une echelle pluspetite est dernandee, MapServer dessinera la carte a l'echelle precisee par cepararnetre,

  • 5/10/2018 PDFC-Serveurs Cartographiques en Ligne1

    19/49

    MAXSCALE : Idem pour l'echelle maximale.

    TEMPLATE: Chemin et nom du fichier modele HTML eventual (cf. seconde partie dupresent support de cours, dediee a ce sujet).HEADER: Modele HTML a utiliser avant I'insertion de I'image de la carte.

    FOOTER: Idem pour Ie bas de page.

    METADATA: Bloc secondaire utiliser pour stocker des paires nom - valeur . Utilisepar les rnodeles HTML (pour stocker des variables generalisees) et en mode serveurWMSIWFS.

    Le bloc REFERENCECe bloc definit les parametres de la petite carte utilises comme reference pour la carteprincipale. C'est une image sur laquelle va etre dessine un rectangle representantI'extension de la carte principale, ou la localisation des resultats d'une requete, en modeQUERY.

    Paradoxalement, MapServer a besoin d'une image fixe representant la petite carte dereference, il ne va pas la generer. Cela permet par contre I'utilisation d'une imageexterne. II faut donc alors, pour produire cette image, utiliser un mapfile sirnplitie(uniquement les contours de la couche principale par exemple), regie pour generer uneimage de petites dimensions. MapServer va faire la relation entre la carte principale et lapetite carte de reference grace aux parametres EXTENT des deux cartes.

    Par defaut Ie bloc REFERENCE a un pararnetre STATUS a la valeur Off, pour activerceUe carte il faut donc penser a rajouter STATUS ON dans Ie bloc.

    Le bloc LEGENDMapServer peut generer trois types de legendes :

  • 5/10/2018 PDFC-Serveurs Cartographiques en Ligne1

    20/49

    legendes simples sous forme d'images ; leqendes basees sur un modele de legende HTML ("template", voir ci-apres) ; leqendes HTML pur.

    Les leqences simples sont des images, inclues ou pas dans I'image de la carteprincipale, reprenant chaque classe nornrnee des layers du mapfile et son figure. II fautdonc penser a nommer toutes les classes que I'on veut voir apparaitre en legende(pararnetre NAME). Lorsque la legende simple est incluse dans I'image de la carte(parametre : STATUS EMBED), on peut preciser I'endroit ou la legende sera dessineeavec Ie parametre POSITION. Ce pararnetre prend une valeur correspondant a un codecompose de deux lettres, la premiere pour Ie haut / bas, u pour upper , I pour lower, la seconde pour gauche /droite, I pour left , r pour right .Les caissons (rectangles) de legende pour les couches de polygones sont reqlables entaille avec Ie pararnetre KEYSIZE (valeurs : largeur, espace, hauteur) et leurespacement avec Ie pararnetre KEYSPACING (valeurs : ecart horizontal espace ecartvertical). II n'est pas possible de titrer une legende directement (tout comme pour lacarte, on peut par contre Ie faire en inserant la leqende dans une page html ou utiliserun template html).

    Le bloc PROJECTIONL'indication d'un georeferencement pour la carte produite par Ie mapfile necessite unbloc PROJECTION. Ce bloc contient les informations de referencement, qui peuventetre de deux formes, une serie de parametres PROJA (Cf.http://proj.maptools.org/gen parms.html) ou un code EPSG (Cf : http://www.epsg.org/).Par exemple :PROJECTION"proj=utm""ellps=GRS80""zone=15""north""no_defs"END

    http://proj.maptools.org/genhttp://proj.maptools.org/gen
  • 5/10/2018 PDFC-Serveurs Cartographiques en Ligne1

    21/49

    Ou:PROJECTION"in it=epsg: 28992"END

    Le bloc SCALE BARMapServer gere les echelles selon une technique assez particuliere, En effet, il part duprincipe que la carte sera au final une image possedant des dimensions en pixels, quisera visualisee au moyen d'un ecran qui possede une certaine resolution. Par ailleurs, lacarte doit etre dessinee dans un rectangle d'extension maximale donne par Ie pararnetreEXTENT.L'echelle finale de I'image doit donc etre definie selon ces parametres. Le pararnetreEXTENTprime sur Ie pararnetre SCALE, car c'est lui qui definit plus precisernent ce que doitcontenir la carte a dessiner.Pour dessiner une echelle indiquant une certaine longueur terrain, il faut doncdeterminer com bien de pixels cette longueur va representer (ou proceder a des essais),et I'indiquer dans Ie pararnetre SIZE du bloc.Le bloc SCALEBAR permet de dessiner des barres d'echelle, dans I'image de la carteou com me une image distincte. II possede les parametres suivants :

    POSITION: Code a deux lettres deflnissant I'endroit ou sera dessinee l'echelle, ce codeest Ie meme que celui utilise par Ie pararnetre POSITION du bloc LEGEND, cf.ci-dessus.SIZE : Dimensions en pixels (Iargeur espace hauteur) du rectangle contenant la barred'echelle, Important car determine la longueur totale de la barre.INTERVALS: Nombre de subdivisions a afficher.

    STATUS: Inclusion (EMBED), dans une image a part (ON) ou annulation (OFF).

  • 5/10/2018 PDFC-Serveurs Cartographiques en Ligne1

    22/49

    STYLE: Apparence de la barre, a donnant une barre de rectangles pleins de couleursalternees, 1 une barre fine munie de reperes (barbules vers Ie haut).

    UNITS: Unites pour Ie calcul de la longueur des intervalles et I'affichage de l'unite de labarre d'echelle. Toutes unites possibles sauf deqres decirnaux.

    IMAGECOLOR : Couleur RGB du rectangle qui contient l'echelle,

    BACKGROUNDCOLOR : Couleur RGB de la barre d'echelle et de ses libelles,

    COLOR: Couleur alternative a BACKGROUNDCOLOR si barre de type a et plusieursintervalles specifies.

    OUTLINECOLOR : Couleur RGB de la reserve autour de la barre d'echelle (mais pasautour des libelles),

    TRANPARENT : Valeur booleenne (ON I OFF) qui precise si Ie rectangle contenantl'echejle est transparent.

    Le bloc OUTPUTFORMATCe bloc permet de definir precisernent Ie format d'image du fichier qui sera genere parMapServer. Le pararnetre generallMAGETYPE correspond en fait a des blocsOUTPUTFORMAT predeflnis dans MapServer, par defaut, On peut ainsi mieux precisercertains parametres de la sortie image, par exemple Ie taux de compression pour IeformatJPEG.Exemple pour produire un JPEG en compression peu destructive:OUTPUTFORMATNAME jpegfullDRIVER "GD/JPEG"MIMETYPE "image/jpeg"

  • 5/10/2018 PDFC-Serveurs Cartographiques en Ligne1

    23/49

    IMAGEMODE RGBEXTENSION "jpg"QUALlTY= 100ENDExemple pour utiliser la sortie avec anticrenelaqe AGG sur du PNG transparent:OUTPUTFORMATNAME 'AGGA'DRIVER AGG/PNGIMAGEMODE RGBAENDLe bloc LAYERCe bloc va definir les proprietes de creation et d'affichage d'une couche de donneesSIG par MapServer. Les blocs LAYER sont dessines dans I'ordre du mapfile, c'est a direque Ie premier bloc du mapfile est dessine en premier, les suivants viendront par-dessussur la carte.L'ordre du mapfile est donc I'ordre inverse de la superposition verticale des sources.

    Parametres generaux :NAME: Nom de la couche, utilise comme identifiant par I'interface web. Doit etre uniquedans Ie mapfile et d'une longueur maximale de 20 caracteres, Entre guillemets depreference (ou apostrophes).

    GROUP: Groupe auquelle LAYER appartient. Utilise dans les rnodeles HTML pouractiver/desactiver les couches par groupes.

    METADATA: Bloc secondaire utiliser pour stocker des paires nom - valeur . Utilisepar les rnodeles HTML et en mode serveur WMS.

    STATUS: Statut (visibilte) du layer. Valeurs : default, on, off. Doit prendre la valeur default pour que Ie layer soit visible lorsque I'on utilise MapServer en mode Map (Ie

  • 5/10/2018 PDFC-Serveurs Cartographiques en Ligne1

    24/49

    STATUS ON ne suffit pas a Ie rendre visible, il faut que Ie layer soit expressernentrequis).

    TYPE : Type d'objet qeometrlque ou rnodalite selon laquelle la couche doit etredessinee. Valeurs : pointllinelpolygonlcirclelannotationlrasterlquery. Ce parametre peutprendre une valeur differente du type geometrique des objets contenus dans la couched'origine, par exemple une couche de polygones peut etre representee comme unLAYER de type POINT, ce qui affichera les centroides des polygones (MINSCALE : Echelle minimale a laquelle la couche sera dessinee, Si une echelle pluspetite est dernandee, MapServer dessinera la couche a l'echelle precisee par cepararnetre,MAXSCALE: Idem pour I'echelle maximale.SYMBOLESCALE : Echelle a laquelle les symboles eUou les textes apparaissent a leurtaille normale. Ce pararnetre permet un dimensionnement dynamique de ce typed'objets selon l'echelle de la carte, dans les limites des deux parametres precedents.Obligatoire pour I'utilisation du pararnetre SIZEITEM dans un bloc CLASS.OPACITY : Deqre de transparence de la couche, exprime en pourcentage (sans Iesigne %), de 100 - opaque a 0- totalement transparent.OFFSITE : Le nurnero d'index de la couleur d'une couche raster a traiter commetransparent. Cela permet de ne garder que la region utile d'une couche raster.POSTLABELCACHE : Valeur booleenne (true I false) qui indique a MapServer dedessiner cette couche apres avoir dessine les libelles (labels) qui sont dans Ie tampondes libelles, Prend la valeur false par defaut,CLASSITEM : Nom de la colonne attributaire qui est utilisee dans les expressions deselection des blocs CLASS.LABELITEM : Nom de la colonne attributaire qui fournira Ie texte des etiquettes.TEMPLATE: Nom du fichier modele HTML qui prend en compte cette couche.Obligatoire pour rendre cette couche interrogeable par requete, rnerne si on n'utilise pasde modele HTML.DEBUG : Valeur On ou Off. Si Ie pararnetre general LOG est defini, les messages dedeboqaqe detailles seront ajoutes au fichier de log, en plus des messages d'erreur.

  • 5/10/2018 PDFC-Serveurs Cartographiques en Ligne1

    25/49

    Parametres de donnees: ShapefilesLes shapefiles sont la source de donnees la plus courante pour MapServer, qui audepart etait construit uniquement autour de ce format (issu de la bibliotheque shapelib).On indique que la source de donnees du layer est un shapefile avec Ie parametreDATA, qui prend comme valeur Ie chemin vers Ie shapefile, relatif au cheminSHAPEPATH (preciser I'extension .shp est inutile). Le pararnetre FILTER permetd'utiliser les expressions regulieres pour filtrer les objets de la source de donnees auniveau du bloc LAYER, c'est a dire avant Ie traitement des blocs CLASS qui peuventeux aussi comporter une selection.L'utilisation d'une source de donnees shapefile offre de plus la possibilite de lier(jointure) une table dbf de donnees attributaires, en utilisant un bloc secondaire JOIN.Ces donnees deviennent ainsi interrogeables par MapServer en mode Query.

    Couches vectorielles aecedees avec OGRLa bibiotheque de fonctions OGR permet a MapServer de lire un grand nombre deformats SIG vectoriels : http://www.gdal.org/ogr/ogrformats.htmlPour indiquer une source de donnees OGR, il faut utiliser la syntaxe suivante :CONNECTIONTYPE OGRCONNECTION [nom de la source]Ce dernier pararnetre depend du type de source, generalement il s'agit du chemin relatifau SHAPEPATH et du nom du fichier, ou du nom du repertoire (source Arclnfo coveragepar exemple). Certains types de sources vectorielles sont orqanlsees en couchesmultiples par fichier, il faut donc choisir la couche a utiliser avec Ie pararnetre DATA[nurnero/norn de la couche]. MapServer peut aussi recuperer en partie les eventuelsstyles d'affichage presents dans les couches, avec Ie pararnetre STYLEITEM AUTO. Lepararnetre FILTER est utilisable aussi avec ce type de donnees, comme pour lesshapefiles. Source serveurs de donneesMapServer peut se connecter a des serveurs SIG directement, et ainsi assembler descouches de diverses origines de facon transparente. Cela permet de construire une

    http://www.gdal.org/ogr/ogrformats.htmlhttp://www.gdal.org/ogr/ogrformats.html
  • 5/10/2018 PDFC-Serveurs Cartographiques en Ligne1

    26/49

    organisation des donnees dispersee sur des serveurs specialises. Les parametres deconnexion sont fournis dans une chaine de caracteres passee en valeur au pararnetreCONNECTION. Le pararnetre FILTER peut contenir une expression de requete SQL(c'est a dire Ie texte venant apres un element SQL WHERE).ArcSDE:CONNECTIONTYPE sdeCONNECTION "myhost,esri_sde,gisdb,userid,password"DATA table, colonne_geomPostGIS (objet de la prochaine seance) :CONNECTIONTYPE postgisCONNECTION "user=nom_utilisateur dbname=nom_bdd host=serveur"DATA "colonne jjeornetrtque FROM table_ou_requete_SQL"Oracle Spatial:CONNECTIONTYPE oraclespatialCONNECTION "snom_utilisateur/mot_de_passe@bdd"DATA "colonneqeometrlque FROM table_ou_requete_SQL"Web Map Services (WMS)L'utilisation d'une source WMS necessite la presence d'un bloc PROJECTION dans Iebloc MAP, ainsi que I'utilisation d'un bloc METADATA (dans Ie bloc WEB et dans lesblocs LAYER) qui va preciser la requete faite au serveur. Cette fonctionnalite seraexplores en details lors d'une prochaine seance. Couches rasterLes donnees raster georeferencees sont gerees avec Ie parametre TYPE raster, Iepararnetre DATA devant pointer vers Ie fichier (et son eventuel chemin relatif aSHAPEPATH).GDAL supporte un grand nombre de formats de fichier, cf. : http://www.gdal.org/formats_list. htmlMapServer possede quelques fonctions de traitement des rasters, accessibles avec Iepararnetre PROCESSING. GDAL est capable de realiser des traitements dereechantillonaqe Imise a I'echelle (SCALE), de tramage (DITHERING), et de selection

    http://www.gdal.org/http://www.gdal.org/
  • 5/10/2018 PDFC-Serveurs Cartographiques en Ligne1

    27/49

    de bande (BAND). Cf. : la documentation specifique aux donnees rasterhttp://mapserver.gis.umn.edu/docs/howto/raster dataLes sources de donnees raster cornposees de nombreux fichiers juxtaposes sontgerables en une seule fois par MapServer, sous la forme d'un tuilage (tiles). Ce tuilageconsiste en un fichier shape qui contient des objets polygone representant I'extensionde chaque tuile raster, et ayant comme attribut Ie nom du fichier. Ce type de tuilage peutetre produt en utilisant I'utilitaire gdaltindex distribue avec GDAL. Cela permet unegestion beaucoup plus rapide des grandes couvertures raster, notamment si les bitmapssont eux aussi optimises pour etre Ius a differentes resolutions (index pyramidal dansles tif par exemple).Le bloc CLASSCe bloc permet de definir des classes thernatiques dans la couche, qui vont pouvoir etreaffichees dilferernment sur la carte globale. Les blocs CLASS sont traites dans I'ordredu fichier map, selon I'ordre de classement vertical. Ce bloc peut contenir lesparametres suivants :NAME: Nom de la classe, a preciser si I'on veut trouver cette classe dans la leqende.EXPRESSION: Critere de selection des objets de la couche qui vont etre inclus dans laclasse en cours. Comme vu lors de la deuxierne seance, ces selections peuvent utiliserquatre methodes : comparaison de chaines de caracteres (en utilisant CLASSITEM),comparasons logiques simples (avec operateurs), expressions regulieres, fonction dechaine lengthO.COLOR: Couleur de fond des objets possedant une surface, exprirnee en RGB,trois valeurs entieres separees par des espaces.OUTLINECOLOR: Couleur de contour des objets, en RGB aussi.SYMBOL: Nurnero ou nom du symbole, qui doit etre defini dans Ie mapfile par un blocSYMBOL ou dans un fichier SYMBOLSET lie au mapfile.SIZE : Taille du symbole ou de la trame, uniquement utilisable avec les symbolesredimensionnables.MINSIZE et MAXSIZE : tailles mini et maxi (en pixels) de dessin des symboles.En dehors de cette fourchette les symboles sont dessines a la valeur la plus proche.

    http://mapserver.gis.umn.edu/docs/howto/rasterhttp://mapserver.gis.umn.edu/docs/howto/raster
  • 5/10/2018 PDFC-Serveurs Cartographiques en Ligne1

    28/49

    SYMBOLESCALE : Echelle a laquelle les symboles eUou les textes apparaissent a leurtaille normale. Obligatoire dans Ie cas de symboles proportionnels avec Ie pararnetreSIZEITEM.TEXT: Nom de la colonne aUributaire contenant Ie texte a utiliser pour l'etiquetaqe desobjets de la classe (On peut aussi creer des expressions combinant plusieurs attributsentre crochets).TEMPLATE: Chemin et nom du fichier modele HTML eventuellement utilise.DEBUG : Valeur On ou Off. Si Ie parametre LOGFILE est defini, les messages dedeboqaqe detailles seront ajoutes au fichier de log, en plus des messages d'erreur. Lesbloc CLASS peut contenir des blocs secondaires LABEL et STYLE.Le bloc LABELCe bloc permet de configurer l'etiquetaqe des elements de la classe, selon un champaUributaire indique par Ie pararnetre LABELITEM du bloc LAYER qui contient Ie blocLABEL.Parametres de base:TYPE: Type de police de caractere a utiliser. Avec la valeur bitmap ,MapServer utilise ses propres polices internes, bitmap donc, mais elles en peuvent subirde rotation ni etre dirnensionnees precisement (cf. ci-apres pour la taille de police). Avecla valeur truetype , MapServer utilise une police vectorielie, au format true type. Lepararnetre FONT indique I'alias utilise pour indiquer Ie fichier ttf dans Ie fichierFONTSET.Par exemple, pour utiliser la police truetype Arial, il faut un fichier declare par Iepararnetre FONTSET (du bloc MAP), et ce fichier (texte) comprendra une ligne aria I C:\windows\fonts\ariaLttf indiquant I'alias de la police (Ie nom utilise dans Ie blocLABEL) et I'endroit ou trouver Ie fichier correspondant sur la machine.COLOR: Couleur du texte de I'etiquette, en RGB.SIZE : Taille du texte, valeur entiere pour la taille en pixels des polices TrueType, ouvaleur texte pour les polices bitmap deMapServer, parmi [tinylsmalljrnediumllarqejqiant].MINSIZE et MAXSIZE : Tailles mini est maxi de dessin des etiquettes, en pixels.MINFEATURESIZE : Taille minimale (valeur entiere en pixels) d'un objet de la couchepour qu'il soit etiquete, Correspond a la longueur pour les objets ligne, a la surface du

  • 5/10/2018 PDFC-Serveurs Cartographiques en Ligne1

    29/49

    rectangle d'encombrement pour les objets polygone. La valeur auto indique 8MapServer de n'etiqueter que les objets au moins aussi gros que leur etiquette.Parametres d'effets d'affichage du texte(Ia presence du pararnetre active la fonction) :ANTIALIAS : Reduction de I'effet d'escalier . Alourdit I'image produite car utilise desdegrades de couleur.OUTLINECOLOR: Couleur de la reserve autour du texte, en RGB.OUTLINEWIDTH : Epaisseur de la reserve, en pixels.SHADOWCOLOR et SHADOWSIZE :Couleur (RGB) et decalaqe (en pixels) pourIe dessin des ombres sous les etiquettes.BACKGROUNDCOLOR :Couleur du rectangle qui va contenir l'etiquette.Parametres de positionnement :POSITION: Valeur texte correspondant 8 la position de l'etiquette par rapport au centrede I'objet qu'elle renseigne, selon Ie schema suivant :ul uc urcl cc crII IclrAvec la valeur auto MapServer va tester les 8 positions externes pour choisir celiequi interfere Ie moins avec les autres etiquettes de la classe.ANGLE: Angle en deqres par rapport 8 la verticale, ou auto pour les objets ligne,dans ce cas MapServer alignera l'etiquette sur I'objet. Auto ne fonctionne que si leslibellee utilisent une police truetype (vectorielle).OFFSET: Valeur X Y de decalaqe entre Ie coin bas-droite de l'etiquette et Ie centre deI'objet renseiqne,MINDISTANCE : Distance minimale (valeur entiere en pixels) entre deux etiquettes dumeme objet.BUFFER : Zone tampon (en pixels) autour des etiquettes, pour eviter qu'elles setouchent.FORCE: Force Ie dessin des etiquettes de la classe, sans tenir compte des contraintesde proxirnite. Valeur: true/false (8 false par defaut),

  • 5/10/2018 PDFC-Serveurs Cartographiques en Ligne1

    30/49

    PARTIALS: Valeur true/false qui determine si MapServer peut dessiner des etiquettesincompletes (coupees par les bords de I'image). Vaut false par defaut,WRAP: Precise Ie caractere (entre guillemets) du texte des etiquettes pourindiquer un passage a la ligne et donc produire des libelles sur plusieurs lignes.2- Utilisation des templates HTML.Documentation officielle :http://mapserver.gis.umn.edu/docs/reference/templatereferenceDans Ie cadre d'une utilisation sur un serveur web, les auteurs de MapServer ont aiouteune fonctionnalite au logiciel pour lui permettre de generer non seulement une image decarte, mais un document HTML complet pouvant comprendre les divers elements (carte,echelle, leqende, titres et mentions). Ce fonctionnement utilise un fichier modele HTML,dans lequel MapServer va modifier des valeurs pour les remplacer par les elements qu'ilva produire. Ce fichier modele HTML est ce qu'on appelle un "template" dans Ievocabulaire de MapServer.Le fonctionnement des templates est tres simple: dans Ie mapfile on specitie Ie cheminvers un fichier template HTML. Ce dernier contient Ie code HTML de la page danslaquelle vont se trouver les elements produits par MapServer, ainsi que certainesbalises speciales, qui seront rernplacees par Ie code HTML adequat par MapServer. Labalise la plus importante est la balise [img], qui sera rernplacee par MapServer par Iechemin vers Ie fichier image de la carte qu'il genere. Le passage des parametres entreIe template HTML et MapServer passe par Ie biais de variables CGI, donc en utilisantles formulaires HTML si I'on veut faire simple.Exemple:MapServer: Exemple de modele HTML

  • 5/10/2018 PDFC-Serveurs Cartographiques en Ligne1

    31/49

    templates/document. map">Titre de la carte

  • 5/10/2018 PDFC-Serveurs Cartographiques en Ligne1

    32/49

    Un fichier template peut etre la solution la plus indiquee pour utiliser MapServer commeCGI (c'est a dire sans programmer), car il peut permettre de specifier les parametres debase sans devoir les ecrire dans une uri tres longue, comme on Ie ferait a la ligne decommande. Un fichier template minimal est ainsi a rnerne d'initialiser MapServer, de luifournir les chemins vers Ie mapfile et Ie fichier image a generer, ainsi qu'un cadre dedimensions precises pour y inserer la carte.Tous les parametres de MapServer CGI peuvent etre utilises (et donc rernplaces) dansun template HTML, et I'on peut aussi faire passer a MapServer des variablespersonnafisees, il les remplacera dans Ie HTML final selon les balises du template.

    III. MapServer comme serveur de donnees WMS/WFSOpen Layers comme client WMS/WFS1- Les WebServices OGe avec MapServerMapServer sait utiliser et produire des donnees spatiales services selon les principalesnormes Open Geospatial Consortium (OGC) : Web Map Service (WMS) et Web FeatureService(WFS). II sait par ailleurs etre serveur pour la norme web Coverage Service(WCS).Un ensemble de demonstrations de ces possibilites a ete rassernble pour la conferenceFOSS200B et est disponible comme application MS4W chez MapTools :http://dl.maptools.org/dl/ms-ogc-workshop/ (il suffit de decornpresser Ie fichier .zip a laracine du disque dur contenant MS4W).

    a- MapServer client WMSMapServer sait utiliser une source de donnees WMS comme source d'un LAYER. Lemode WFS permet de requerir une couche ou un assemblage de couches. Le clientrecoit une image correspondant aux couches dernandees, stylees par defaut ou selonun fichier de pararnetraqe des styles au format SLD : Styled Layers Descriptors.Voici un exemple de MapFile utilisant Ie serveur de demonstration WMS de la societeGeoSignal pour recuperer une partie d'une couche raster:NAME "Test serveur distant WMS"SIZE 400 400

    http://dl.maptools.org/dl/ms-ogc-workshop/http://dl.maptools.org/dl/ms-ogc-workshop/
  • 5/10/2018 PDFC-Serveurs Cartographiques en Ligne1

    33/49

    EXTENT -1 42 1 44STATUS ONUNITS DDWEBIMAGEPATH "C: /ms4w/tmp/"IMAGEURL "/tmp/"ENDLAYERNAME "GeoSignal Raster 1000 k"TYPE RASTERSTATUS DEFAULTCONNECTIONTYPE WMSCONNECTION "hUp:/Iwww.geosignal.org/cgi-bin/wmsmap?"METADATA"wms_srs" "EPSG:4326""wms_name" "RASTER1 O O O k ""wms_server _version" "1.1.1""wms_format" "image/gif"ENDENDENDUne seule couche est utilisee, et presente Ie raster a l 'echelle du millionieme. Le serveursource est indique par Ie pararnetre CONNECTION, la couche, sa projection et sonformat dans Ie bloc METADATA, Ie tout dans Ie bloc LAYER du mapfile. On peut ensuiteajouter pardessus d'autres informations, locales ou elles aussi distantes.Voici un autre exemple, utilisant ceUe fois des couches vectorielles stylees par defaut :MAPNAME "Test"SIZE 400 600EXTENT 7.525556 30.241667 11.58333336.943611STATUS ON

  • 5/10/2018 PDFC-Serveurs Cartographiques en Ligne1

    34/49

    UNITS DDIMAGECOLOR 255255255IMAGETYPE PNG24WEBIMAGEPATH "C: /ms4w/tmp/"IMAGEURL "/tmp/"ENDPROJECTION"init=epsg :4326"ENDSCALE BARSTATUS embedPOSITION LRINTERVALS 1UNITS kilometersSTYLE 1SIZE 804ENDLAYERNAME "Admin"STATUS DEFAULTTYPE rasterCONNECTIONTYPE WMSCONNECTION ''http://www.geotests.neUcgi-bin/mapserv?map= ..lhtdocs/test/wmservice/wms-tunisie. map&"METADATA"wms_srs" "EPSG:4326""wms_name" "Admin""wms_server_ version" "1.1.1""wms_format" "image/png"END

    http://%27%27http//www.geotests.neUcgi-bin/mapserv?map=http://%27%27http//www.geotests.neUcgi-bin/mapserv?map=
  • 5/10/2018 PDFC-Serveurs Cartographiques en Ligne1

    35/49

    ENDENDSi I'on veut modifier I'apparence des couches recuperees, on peut utiliser un fichier destyle au format SLD et fournir son URL au mapfile en ajoutant deux lignes dans Ie blocMETADATA du LAYER concerne :"wms_style" "default""wms_style_default_sld" ..http://www.geotests.net/test/wmservicelmonstyle.xml"Les fichiers SLD sont en XML, leurs possibttites pour mapserver sont definies sur cettepage de la documentation: http://mapserver.gis.umn.edu/docs/howto/sldhowtolb- MapServer client WFSLe principe est sensiblement Ie rnerne que pour precedernrnent, MapServer recuperantcette-fois des objets (features) du serveur, au lieu d'images rasters. Les features sonttransmises dans un format de type GML (Geographic Markup Language, une variantede XML).Comme ce sont des objets qui sont recuperes par MapServer, ce dernier peut leuraffecter un style suivant les indications de son mapfile local. Exemple:NAME "Test serveur distant WMS"SIZE 400 600EXTENT 7.525556 30.241667 11.58333336.943611STATUS ONUNITS METERSDEBUG ONWEBIMAGEPATH "C: /ms4w/tmp/"IMAGEURL " I tmp/"ENDPROJECTION"init=epsg :4326"END

    http://www.geotests.net/test/wmservicelhttp://www.geotests.net/test/wmservicelhttp://mapserver.gis.umn.edu/docs/howto/sldhowtolhttp://mapserver.gis.umn.edu/docs/howto/sldhowtolhttp://www.geotests.net/test/wmservicel
  • 5/10/2018 PDFC-Serveurs Cartographiques en Ligne1

    36/49

    LAYERNAME CotesTYPE LINESTATUS DEFAULTCONNECTIONTYPE WFSCONNECTION "hUp:/Iwww.geotests.neUcgi-bin/mapserv?map= ..lhtdocs/test/wfservice/wfs. map&"METADATA"wfs_typename" "Admin""wfs_version" "1.0.0"ENDPROJECTION"init=epsg :4326"ENDCLASSNAME "Admin"STYLEWIDTH 2OUTLINECOLOR 120120 120ENDENDENDENDc- La diffusion de WebServices OGC par MapServer et leur consommation par un clientutilisant la bibliotheque OpenLayersPour devenir serveur de WebServices, MapServer a toujours besoin d'un mapfile, munide rnetadonnees specfiques qui vont preciser les parametres supplernentairesdernandes par ces operations.Mais MapServer ne peut pas etre serveur et client WMS en rnerne temps, donc etreclient de son propre webservice. Pour tester ceUe fonctionnalite serveur, il va donc falloirtrouver un logiciel client WMS qui soit capable d'interroger notre serveur local.

  • 5/10/2018 PDFC-Serveurs Cartographiques en Ligne1

    37/49

    Maplnfo, ArcMap, et les principaux logiciels SIG desktop sont aujourd'hui des clientsWMSIWMS, cd type de WebService s'etant bien developpe, Nous allons pour notre partessayer un autre type de client, de type leqer : une bibliotheque de fonctions enJavaScript, Open Layers.Le principe de ceUe solution client est de proposer la consommation des WebServicesdirectement dans Ie navigateur internet, par I'utilisation de fonctions JavaScript, et lamise a disposition d'une interface utilisateur de visualisation et d'interrogation de cartes.Prernierernent : ecrire un mapfile qui sert les donnees OSM de la Tunisie commeWebService WMS.NAME "Test"SIZE 4000 3000EXTENT 7.525556 30.241667 11.58333336.943611STATUS ONUNITS DDIMAGECOLOR 255255255SHAPEPATH "..lvecteur!"IMAGETYPE PNG24WEBIMAGEPATH "C: /ms4w/tmp/"IMAGEURL "/tmp!"METADATA"wms_title" "GeoTests""wms_onlineresource" ''http://localhosUcgi-bin/mapserv.exe?map= ..lhtdocs/wmservice/wms-tunisie.map&""wms_srs" "EPSG:4326"ENDENDOUTPUTFORMATNAME PNG24DRIVER "GD/PNG"MIMETYPE "image/png"

  • 5/10/2018 PDFC-Serveurs Cartographiques en Ligne1

    38/49

    EXTENSION PNGIMAGEMODE RGBATRANSPARENT ONENDPROJECTION"init=epsg :4326"ENDLAYERNAME AdminMETADATA"wms_title" "Admin"ENDTYPE LINESTATUS OFFDATA tunisia_administrativePROJECTION"init=epsg :4326"ENDCLASSNAME "Admin"STYLEOUTLINECOLOR 20 20 20ENDENDEND # LayerLAYERNAME CoastlineMETADATA"wms_title" "Coastline"ENDTYPE LINE

  • 5/10/2018 PDFC-Serveurs Cartographiques en Ligne1

    39/49

    STATUS OFFDATA tunisia_coastlinePROJECTION"init=epsg :4326"ENDCLASSNAME "Coastline"STYLEOUTLINECOLOR 20 20 120ENDENDEND # LayerLAYERNAME ParksMETADATA"wms_title" "Parks"ENDTYPE POLYGONSTATUS OFFDATA tunisia_naturalPROJECTION"init=epsg :4326"ENDCLASSNAME "Natural"STYLECOLOR 20 120 20OUTLINECOLOR 20 40 20ENDENDEND # Layer

  • 5/10/2018 PDFC-Serveurs Cartographiques en Ligne1

    40/49

    LAYERNAME HighwayMETADATA"wms_title" "Highway"ENDTYPE LINESTATUS OFFDATA tunisia_highwayPROJECTION"init=epsg :4326"ENDCLASSNAME "Roads"STYLEOUTLINECOLOR 200 20 20ENDENDEND # LayerEND # Map FileNotez les differences ente ce mapfile de serveur WMS et un mapfile "classique" :- il faut un bloc projection principal (dans Ie bloc MAP) et dans chaque bloc LAYER;- Ie bloc WEB doit contenir un bloc METADATA comprenant obligatoirement :- Ie nom du serveur dans Ie pararnetre "wms-title" ;- I'adresse d'interrogation du webservice dans Ie pararnetre "wmsonlineressource";- Ie systeme de projection de la carte dans Ie pararnetre "wms-srs".- les blocs LAYER doivent eux aussi cornporte un bloc METADATA donnant Ie nom dela couche dans Ie pararnetre "wms-title". C'est ce nom qui servira a retrouver la couchelors des requetes,Deuxiernernent : Consommer ce WebService avec un fichier HTML muni des fonctionsd'OpenLayers.

  • 5/10/2018 PDFC-Serveurs Cartographiques en Ligne1

    41/49

    OpenLayers s'installe simplement : il s'agit d'un seul fichier javascript a deposer sur Ieserveur, et qui est ensuite appele dans Ie document html/php. Pour pouvoir beneficierde la documentation et des exemples, il est interessant de telecharqer la versiond'OpenLayers ernpaquetee pour MS4W.Dans Ie repertoire "exemples" d'OpenLayers se trouve un fichier mapserver.html quirealise la consommation par OpenLayers d'un WebService en WMS distant. PourI'adapter a notre WebService WMS local, il faut modifier Ie pararnetre "layer" comme suit

    layer = new OpenLayers.Layer.MapServer( "Local", ''http://localhostlcgi-bin/mapserv .exe?map= ..lhtdocs/wmservice/wms-tunisie. map&", {layers: 'Admin'}, {gutter:15});On indique par cette modification que la source de donnees est I'ordinateur local, surlequel MapServer diffuse un WMS a partie du mapfile de la Tunisie, et qu'on veutrecuperer la couche nornrne "Admin". Le pararnetre "gutter" (qouttiere) indique la priseen compte d'une marge de 15 pixels entre les tuiles dernandees a MapServer, poureviter les problemas de pixels vides entre deux tuiles.Le tuilage est automatique, pour s'en rendre compte vous pouvez cliquer droit sur lacarte et choisir "afficher I'image" : on retrouve la requete MapServer CGI dans I'url.Pour une presentation plus complete d'OpenLayers, deux ressources francophones sontinteressantes :- Geo'Tribu : http://www.geotribu.net/node/3- SoftLibre : http://softlibre.gloobe.org/doku.php/openlayers/startOpenLayers sait utiliser un fichier SLD pour styler dlfferernment les donnees WMS,comme vu precedernrnent avec MapServer en client WMS. II faut lui fournir unpararnetre supplernentaire pointant vers I'URL du fichier SLD a utiliser :sid: 'http://localhostltestlwmservice/monstyle.Xml'Installation et decouverte de PostgreSQL I PostGISIntroduction: Presentation de PostGIS.PostGIS est Ie module d'extension spatiale du SGDBR serveur PostgreSQL.PostgreSQL (http://www.postgresgl.org/) se revendique comme Ie SGBD OpenSource Ieplus sophistique du monde. C'est en effet un systerne tres puissant et tres ouvert, en

    http://www.geotribu.net/node/3http://softlibre.gloobe.org/doku.php/openlayers/starthttp://softlibre.gloobe.org/doku.php/openlayers/starthttp://www.geotribu.net/node/3
  • 5/10/2018 PDFC-Serveurs Cartographiques en Ligne1

    42/49

    constante evolution. Au depart reserve au monde Unix, PostgreSQl comporteaujourd'hui une version Windows, ce qui permet une collaboration plus simple avecMS4W installe precedernrnent. PostGIS (hUp:/Iwww.postgis.fr) est une extension dePostgreSQl qui ajoute des fonctions de stockage et de requetes spatiales au SGBD. Onpeut ainsi stocker sous forme de tables des couches SIG completes, munies de leursdonnees attributaires, de leur georeferencement, et cornposees d'elernentsgeometriques varies. Concreternent une telle couche SIG devient une table PGSQlmunie d'un champ supplernentaire, comprenant les donnees geometriques, decritesselon les normes OGG. IIexiste des convertisseurs simples pour inteqrer des couchesSIG, en les convertissant en commandes SQl.PostGIS comprend tous les types de donnees et de geometrie specifies par la norme dereference Simple Features for SQl de I'OGG :hUp:/Iwww.opengeospatial.org/standards/sfa1- Installation et insertion de donnees spatiales.Etapes:a. Telecharqer la derniere version Windows de PostgreSQl : option pglntallerhUp:/Iwww.postgresql.org/download/windowsb. Decompresser Ie zip et lancer I'installation par Ie fichier postgresql-B.3.msi.Dans les parametres d'installation : Activer Ie support de la langue A l'etape d'installation de PGSQl en tant que service, choisir un mot de passe pour Iecompte utilisateur postgres : postgres.(PGSQl sera execute par securite par cet utilisateur, et non pas par I'utilisateur ayantouvert la session). A l'etape d'initialisation du groupe de bases de donnees, modifier Ie nom du super-utilisateur en sigma et lui aUribuer Ie mot de passe sigma . A l'etape d'activation des modules de contribution, choisissez "B-Tree GiST', qui estun type d'index interessant pour les donnees spatiales.c. Apres I'installation de PGSQl se lance Ie logiciel "Stack Builder", qui permet detelecharqer et d'installer des options, notamment Postgis1- Dans la liste deroulante, choisissez "PostgreSQl sur Ie serveur local"

    http://hup/Iwww.opengeospatial.org/standards/sfahttp://hup/Iwww.postgresql.org/download/windowshttp://hup/Iwww.postgresql.org/download/windowshttp://hup/Iwww.opengeospatial.org/standards/sfa
  • 5/10/2018 PDFC-Serveurs Cartographiques en Ligne1

    43/49

    2- A l'etape suivante, dans la thernatique "Spatial extensions", choisissez PostGIS.3- A l'etape suivante choisissez un serveur de type HTTP (en Allemagne par exemple,pour la rapidlte).4- Installez PostGIS, en indiquant Ie superutilisateur "mastersig" dont Ie mot de passeest "mastersig".2- Verification de I'installation et presentation de pgAdminl1iApres I'installation de PGSQl et PostGIS, Ie serveur est lance sur la machine, en tantque service Windows. (Pour verifier, vous pouvez aller voir dans les outilsd'administration du panneau de configuration de windows).PGSQl etant une application serveur, il ne possede pas d'interface graphique propre.Un projet d'interface graphique qui etait a I'origine distinct a ete inteqre a I'installation dePGSQl: pgAdminll1.Dans pgAdminlll, dans la partie gauche de la fenetre principale, cliquez sur Ie serveurpuis sur I'item bases de donnees . Vous devez voir la base par defaut qui s'appelle postgres , ainsi que les bases postgis et template_postgis qui ont ete creees lors deI'installation de ce dernier.la base postgis comporte par defaut deux tables dans Ie schema public : geometry_columns et spatial_ref_sys , Ie langage pl/psql est active et lesfonctionsPostGIS disponibles.3- Conversion d'une couche shape en table PostGIS.l.'inteqration de donnees existantes dans une BOD PostGIS peut se faire de plusieursmanieres, la plus simple etant de convertir ces donnees en un script SQl qui seraexecute par pgAdminll1 ou tout autre interface de PostgreSQl (psql en ligne decommande, phpPgAdmin avec un navigateur ...). PostGIS est fourni avec un utilitaire deconversion des shapefiles vers ce format script SQl (shp2pgsql.exe), et il existe desconvertisseurs (ogr2ogr de GDALlOGR par exemple) qui permettent de transformerdivers formats en tables PGSQl (par la creation de fichiers .sql ou I'insertion dans labase).

  • 5/10/2018 PDFC-Serveurs Cartographiques en Ligne1

    44/49

    Nous allons travailler avec les shapefiles OSM de la Tunisie telecharqes precedernrnent,la transformation de ce shapefiles en fichier script SQl s'effectue a la ligne decommande avec I'aide de I'outil shp2pgsql.exe.IIvous faut donc :- Ouvrir une fenetre de commandes Windows munie des variables systernes PGSQl, enchoisissant Ie raccourci "Invite de Commandes" du menu Dernarrer IPostgreSQl.- Se deplacer (cd) dans Ie repertoire contenant les donnees vectorielles :c:\ms4w\Apache\htdocs\vecteurs- Utiliser I'outil de conversion de la rnaniere suivante :shp2pgsql -s code_epsg -I shapefile nom_table > fichier_a_creer.sqlle code EPSG correspond au SRID, c'est a dire au georeferencement. Shp2pgsql nesait pas lire Ie fichier .prj du shapefile pour y trouver ces informations, il faut donc les luifournir manuellement. Attention ce n'est pas une reprojection mais bien une informationdonnee sur la projection existante dans Ie shapefile. le pararnetre "-I" sert a creer unindex de type GiST sur Ie champ qui contient les donnees spatiales, pour optimiser leurutilisation.Verifiez la projection du shape avec ogrinfo et reperez son code epsg. le nom dushapefile est donne sans I'extension .shp. II faut utiliser une redirection de sortie > pour demander a Windows de rediriger Ie texte produit par shp2pgsql dans un fichiertexte, sinon il defile inutilement a l'ecran. On pourrait aussi piper (transmettre) cettesortie directement sur Ie programme psql qui est I'interface en ligne de commanded'origine de PostgreSQl (en utilisant la syntaxe I psql nom_de_la_base , au lieu de >fichier.sql).Dans notre cas, la couche est projetee en lat/long WGS84, la commande va doncressembler a :shp2pgsql -s 4326 -I tunisia_administrative.shp tunisia_administrative >tunisia_administrative.sqlSi I'on ouvre Ie fichier tunisia_administrative.sql produit, on peut se rendre compte qu'ils'agit bien d'une serie de commandes SQl qui vont creer et remplir la nouvelle table,selon les rnodalites d'une table geographique PostGIS. Pour executer ce script SQl sur

  • 5/10/2018 PDFC-Serveurs Cartographiques en Ligne1

    45/49

    notre serveur PostgreSOl il faut charger Ie fichier dans I'interface de pgAdminlll, encliquant sur la base de donnees postgis , puis sur Ie bouton SOL de la barred'ic6nes. L'editeur SOL se charge, il faut y ouvrir Ie fichier tunisia_administrative.sql,puis lancer la requete (fleche verte ou menu). la requete s'execute en quelquessecondes, mais ne renvoie pas de resultat, c'est normal pour une requete sql decreation.Un petit tour dans pgAdmin III nous indique les speciticites de la nouvelle table:- creation d'une table tunisia_administrative dans Ie Schema public de laBOD postgis .- apparition d'une colonne supplernentaire, gid , qui est un compteur entier attribue achaque element de la table, pouvant donc servir de cle primaire- apparition d'une colonne supplernentaire, the_geom , qui contient la conversion desgeometries des polygones des communes au format de stockage par defaut dePostGIS, Ie WKB (Ia version binaire, cornpressee, du Well KnownText).- la table comporte des contraintes (des verifications automatiques) liees a la cleprimaire, aux dimensions, au type de qeornetrie et au referencernent spatial desdonnees inserees ou rnodiflees.- Dans la table geometry_columns , un nouvel enregistrement est apparu, pourindiquer la colonne geometrique de la table tunisia_administrative.Vous pouvez repeter l'operation pour les autres shapefiles : coastline, natural, highwayet poi.Voila, nous avons donc un serveur PostGreSOLlPostGIS operationnel, muni de nosdonnees geographiques de test.4. Requetes MapServer sur les donnees PostGIS.a. Requete d'affichage simplela requete la plus simple: affichage de la couche tunisia_highway. Avant toute chose, ilnous faut savoir I'extent de la carte, exprirne dans l'unite de son georeferencement, pourpouvoir specifier I'EXTENT du mapfile. C'est possible de deux rnanieres : en utilisantI'outil ogrinfo a la ligne de commande ou en faisant une requste PostGIS.

  • 5/10/2018 PDFC-Serveurs Cartographiques en Ligne1

    46/49

    CeUe deuxierne facon de faire consiste a utiliser la fonctionGetExtent(champ_geometrique) de PostGIS, par Ie biais d'une requete SQL.Le mapfile pour un layer issu de donnees PostGIS (simple.map des exemples)Notre mapfile va ressembler a :MAPEXTENT 7.5 30 11.637.5IMAGECOLOR 255255255SIZE 400 600STATUS ONNAME "Tunisie"WEBIMAGEPATH 'C:\ms4w\tmp\ms_tmp\'IMAGEURL ' /ms_tmpl 'ENDLAYERNAME "Routes"CONNECTION "user=sigma password=sigma dbname=postgis host=localhost"CONNECTIONTYPE POSTGISDATA "the_geom from tunisia_highway as foo using unique gid using SRID=4326"STATUS DEFAULTTYPE LINECLASSOUTLINECOLOR 100 0 0ENDENDENDDans Ie bloc LAYER, on trouve les parametres de connexion vont permettre de preciserIe login au serveur PostgreSQL, et Ie type PostGIS. Le plus important ici est Iepararnetre DATA.Dans un LAYER PostGIS, Le pararnetre DATA correspond en fait a une requete SQL,qui doit renvoyer des geometries, sous la forme de tout ou partie d'une colonne

  • 5/10/2018 PDFC-Serveurs Cartographiques en Ligne1

    47/49

    geometrique d'une table PostGIS. De plus, pour optimiser la recherche des infos, il fautpreciser la colonne de cle primaire et Ie code de projection, Ie SRID (Spatial ReferenceIDentifier).la syntaxe du pararnetre DATA comporte donc :- the_geom from tunisia_highway => indique la colonne geometrique et la table arecuperer.- as foo => PostGIS requiert que la requete soit nornmee, foo etant Ie pseudo-nom utilise par tradition ancestrale en Sal :-)- using unique gid => indique que la colonne gid , une cle rajoutee lors de laconversion du shapefile, contient des valeurs uniques. Elle peut donc etre inciqueecomme telle a PostGIS qui va en tenir compte pour optimiser son travail de recherche,ce qui est utile dans Ie cas de tables lourdes.- using SRID=4326 => indique Ie systeme de projection de la couche (codeEPSG).b. Requetes de selectionDans un bloc lAYER prenant ses donnees dans une table PostGIS, on peut realiser demultiples operations de selection et rnerne executer des fonctions (de calcul etpatiales). Pour commencer simplement, on peut demander a n'afficher qu'une partie dela couche PostGIS, selon un critere base sur ses donnees aUributaires.Ce type de selection s'effectue de rnaniere simple en utilisant pararnetre FilTER, dubloclAYER, par exemple :FilTER "type = 'primary'"FilTER "name ""Ce filtre correspond au texte que I'on ajouterait derriere Ie pararnetre WHERE d'unerequeteSOL. Notez les apostrophes qui entourent la valeur texte "primary", les guillemets etantreserves a isoler globalement la valeur du pararnetre FilTER.C. Requetes et fonctions spatialesl'apport majeur de PostGIS est l'acces aux requetes basses sur des parametresgeographiques et les fonctions spatiales. On peut utiliser pgAdminll1 pour executer des

  • 5/10/2018 PDFC-Serveurs Cartographiques en Ligne1

    48/49

    fonctions de recherche ou des calculs spatiaux, par centre pour les fonctions quiretournent des geometries il faut mettre MapServer au travail, pour representergraphiquement leurs resultats,Utilisation de fonctions PostGIS retournant des valeursl'utilisation des fonctions PostGIS de calcul de valeurs comme la distance ou la surfacepeut se faire simplement par requete SOL sous pgAdminll1. Par exemple, pour retrouverla distance entre une attraction et un hotel, cela donnerait selectdistance_spheroid((select the_geom from tunisia_poi where name ='Attraction: Bordj el Kebir'), (select the_geom from tunisia_poi where name= 'Hotel:Djar EI Berber'), 'SPHEROID['WGS 84",6378137,298.257223563],)la fonction Dlstanca spheroldtqeornetrle, qeometrie, spheroide) retourne la distance enmetres entre deux points. Gomme les donnees sont non projetees, il faut utiliser cettefonction plutot que distancetqeornetrie, geometrie), car PostGIS a besoin de savoir quelspheroide on veut utiliser pour mesurer la distance. Notez que les sous-requetes sontentre parentheses.Autre solution : reprojeter a la volee les donnees spatiales pour pouvoir utiliser unsysterne permettant des mesures de distances et d'aires plus faciles. Par exempleselect length(transform((select the_geom from tunisia_highway where name = 'RouteGabes'), 32732))/1000Naturellement, cela demande plus de travail pour Ie serveur, et ralentit donc lesoperations.Si de nombreuses requetes spatiales sont prevues, autant reprojeter les shapefilesavant de les inteqrer dans la base PGSOl, en utilisant I'outil en ligne de commandeogr2ogr par exemple (disponible avec la bibtiotheque de fonctions GDALIOGR)Ici on a reprojete la route de Gabes dans Ie systerne UTM 32S (code EPSG :32732),pour avoir des mesures en metres, que I'on divise par 1000 pour obtenir des kilometres.la liste des nombreuses fonctions disponibles et leur parametres se trouve dans ladocumentation de PostGIS :http://www.postgis.fr/node/217On peut aussi utiliser une fonction retournant une valeur comme pararnetre d'unefonction retournant une qeornetrte, par exemple la fonction Distance peut servir de

    http://www.postgis.fr/node/217http://www.postgis.fr/node/217
  • 5/10/2018 PDFC-Serveurs Cartographiques en Ligne1

    49/49

    critere de selection d'une requete d'affichage de points d'interet, select name fromtunisia_poi where distance_spheroid((select the_geom fromtunisia_poi where name = 'Attraction:Star Wars set' limit 1), the_geom,'SPHEROID["WGS 84",6378137,298.257223563],) < 150000Utilisation de fonctions retournant des geometriesBufferPostGIS est capable de generer des geometries en reponse a des requetes et de lesretourner a MapServer pour que ce dernier les affiche. La fonction classique des SIG estIe dessin d'un buffer, zone tampon auteur d'un objet geometrique.Voici un exemple de pararnetre DATA pour Ie dessin d'un buffer de 20 kilometres auteurduBordj el Kebir (Fort de Djerba) :DATA "the_geom from (select gid, buffer(transform((select the_geom from tunisia_poiwhere name = 'Attraction:Bordj el Kebir'), 32732), 20000) as the_geom from tunisia_poi)as route using unique gid using srid=32732"Notez que Ie mapfile doit etre transforme pour projeter la carte selon Ie fuseau 32 suddusysterne UTM (EPSG :32732). Le pararnetre EXTENT doit donc etre rnodifie, il devient :EXTENT 466955.53125 13345694735549.375 14088682Operations geometriquesPostGIS propose aussi des fonctions de calcul de resultats d'operations du lesgeometries: intersections, fusions, differences.Tests de superposition et d'inclusionPostGIS possede des fonctions de tests spatiaux Equalst), Touchest), Overlapst),Crossest), lntersectst), ContainsO et WithinO.


Top Related