Aller au contenu

Exemple des différentes sources de données utilisables par MapServer#

📆 Date de publication initiale : 15 février 2009

Introduction#

logo MapServer

Ce tutoriel est une traduction d'un billet parut sur l'excellent site BostonGis. Au cours de celui-ci, nous apprendrons à utiliser l'une des fonctionnalités les plus intéressantes de MapServer qu'est la possibilité d'accéder à de multiples sources de données. Même si les exemples présentés ont été réalisés avec la version 4.6 de MapServer ils restent applicables pour les versions antérieures.

Définir le chemin d'accès aux données#

La localisation des sources de données telles que Esri Shp ou mapInfo tab sont définies dans le MapFile par le paramètre SHAPEPATH comme présenté ci-dessous :

#
# Debut du MapFile
#

NAME MYMAP

EXTENT  732193.725550 2904132.702662 799614.090681 2971466.288170

SIZE 500 500
SHAPEPATH "c:\mydata\"
:
:

ESRI Shapefile#

Les données de type ShapeFile (*.shp) sont, dans MapServer, les plus simples à utiliser. En effet il suffit, dans le bloc LAYER, de spécifier le nom du fichier Shape (il n'est pas obligatoire d'écrire l'extension). Ci-dessous un exemple de déclaration d'un Layer utilisant une couche ShapeFile :

LAYER
    NAME buildings
    TYPE POLYGON
    STATUS DEFAULT
    DATA buildings
    PROJECTION
          "init=epsg:2249"
    END
    CLASS
    OUTLINECOLOR 10 10 10
    END
END

MapInfo Tab Files#

Grâce au driver GDAL OGR de nombreuses sources de données sont utilisables par MapServer. Les données de type MapInfo (*.tab) font partie de celles-là. L'exemple ci-dessous présente la déclaration d'un LAYER utilisant une donnée Mapinfo. Bien entendu, la donnée doit prendre en compte le chemin spécifié auparavant dans le paramètre SHAPEPATH.

LAYER  
  NAME buildings  
  STATUS DEFAULT  
  MINSCALE 7000  
  CONNECTIONTYPE OGR  
  CONNECTION "buildings.tab"  
  TYPE POLYGON  
  PROJECTION  
  "init=epsg:2249"  
  END  
  # -- MapInfo has projection information built in the tab file  
  # -- so you can often auto read this information with the below  
  #PROJECTION  
  # AUTO  
  #END  
  CLASS  
    OUTLINECOLOR 10 10 10  
  END  
END

PostGIS Layer#

MapServer dispose de son propre driver permettant l'accès aux données stockées dans le SGBD PostGis. Néanmoins, afin de pouvoir utiliser cette fonctionnalité il est nécessaire que le CGI MapServer ou MapScript soit compilé avec le driver PostGis. Ci-dessous un exemple utilisant une couche PostGis :

LAYER  
  CONNECTIONTYPE postgis  
  NAME "buildings"  
  CONNECTION "user=dbuser dbname=mydb host=myserver"  
  # the_geom column is the name of a spatial geometry field in the table buildings  
  DATA "the_geom from buildings"  
  STATUS DEFAULT  
  TYPE POLYGON  
  # Note if you use a filter statement - this is basically like a where clause of the sql statement  
  FILTER "storyhg > 2"  
  CLASS  
    OUTLINECOLOR 10 10 10  
  END  
END

Une couche PostGis plus complexe

LAYER  
    NAME "projects"  
    CONNECTIONTYPE postgis  
    CONNECTION "user=myloginuser dbname=mydbname host=mydbhost password=mypass"  
    DATA "the_geom FROM (SELECT a.projid, a.projname, a.projtype, a.projyear, a.pid, parc.the_geom  
          FROM projects a INNER JOIN parcels parc ON a.parcel_id = parc.pid  
          WHERE a.projyear = 2007) as foo USING UNIQUE projid USING SRID=2249"  
    STATUS OFF  
    TYPE POLYGON  
    CLASS  
      NAME "Business Projects"  
      EXPRESSION ('[projtype]' = 'Business')  
      STYLE  
        OUTLINECOLOR 204 153 51  
        WIDTH 3  
    END  
    END  
    CLASS  
      NAME "Community Projects"  
      EXPRESSION ('[projtype]' = 'Community')  
      STYLE  
        OUTLINECOLOR 204 0 0  
        WIDTH 3  
    END  
    END

    PROJECTION  
    "init=epsg:2249"  
    END  
    METADATA  
        "wms_title" "Projects"  
        "wfs_title" "Projects"  
        gml_include_items "all"  
        wms_include_items "all"  
    END  
    DUMP TRUE  
    TOLERANCE 10  
END  

WMS Layer#

MapServer peut utiliser le protocole WMS aussi bien en tant que serveur que client. Ci dessous un exemple de couche WMS utilisant le server WMS Microsoft Terraservices.

LAYER  
    NAME "msterraservicedoq"  
    TYPE RASTER  
    STATUS DEFAULT  
    CONNECTION "http://terraservice.net/ogcmap.ashx?"  
    CONNECTIONTYPE WMS  
    MINSCALE 3000  
    MAXSCALE 20000  
    #DEBUG ON  
    METADATA  
      "wms_srs" "EPSG:26919"  
      "wms_name" "doq"  
      "wms_server_version" "1.1.1"  
      "wms_format" "image/jpeg"  
      "wms_style" "UTMGrid_Cyan"  
      "wms_latlonboundingbox" "-71.19 42.23 -71 42.40"  
    END  
END

Auteur#

Arnaud Vandecasteele#

portrait

Bien qu'issu à l'origine d'un parcours universitaire (doctorat et post-doc), j'ai finalement tenté l'aventure entrepreunariale au travers de Geolab.
Mes principaux centres d'intêrets dans le domaine de la géomatique portent sur les logiciels Open Source et plus particulièrement QGIS.
J'aime également le développement informatique avec une forte préférence à tout ce qui se passe côté serveur (base de données, traitements, etc.). Côté techno, mes choix se portent habituellement sur du (Geo)Django et PostgreSQL/PostGIS.

Pendant mon temps libre, vous me trouverez un GPS à la main afin de contribuer à OpenStreetMap ou sur un tatami en train de pratiquer le Jiu-Jitsu Brésilien.

Si vous êtes intéressé par l'un ou tous ces sujets, n'hésitez pas à me contacter !

Commentaires

Afin de favoriser les échanges constructifs, merci de préférer le pseudonymat à l'anonymat. Pour rappel, l'adresse mail n'est pas exposée publiquement. Consulter la page sur la confidentialité et les données personnelles.
Une version minimale de la syntaxe markdown est acceptée pour la mise en forme des commentaires.
Propulsé par Isso.

Ce contenu est sous licence Creative Commons BY-NC-SA 4.0 International Pictogramme Creative Commons Pictogramme Creative Commons BY Pictogramme Creative Commons NC Pictogramme Creative Commons SA