Utilisation de couches en WMS-C

Le support du WMS-C est assuré dans les APIs minimum, standard et étendue.

Avant-propos

Il est important de noter que les couches du Géoportail sont dans une projection spécifique (IGNF:GEOPORTAL*, IGNF:MILLER, Cf. RIG). En tant que tel, toute couche image en superposition (comme les WMS, WMS-C et consorts) devra être :

  • soit dans la même projection (obligatoire pour IGNF:MILLER);
  • soit dans la projection plate-carré (EPSG:4326 ou équivalent).

    L'API du Géoportail permet aussi d'afficher les couches du Géoportail (IGNF:GEOPORTAL*) en plate-carré (IGNF:RGF93G qui est compatible avec EPSG:4326) et toute autre couche doit être dans la même projection plate-carré.

API Web 2D en Javascript

Configuration

L'ajout d'une couche WMS-C s'effectue de la façon suivante :

maCarte.getMap().addLayer(
    "WMS-C",
    nom_de_la_couche,
    "url_du_wmsc",
    parametres_du_wmsc,
    options_couche
);
  • le paramètre nom_de_la_couche contient le texte qui sera affiché dans le gestionnaire de couches. Ce nom peut être une chaîne de caractères ou un objet permettant le support du (Cf. multi-langues) ;
  • le paramètre url_du_wms contient l'URL du WMS-C ;
  • le paramètre parametres_du_wmsc contient tous les paramètres nécessaires au paramétrage du service WMS-C comme layers, format, transparent, etc ...
  • le paramètre options_couche contient les paramètres pour gérer le comportement de la couche WMS-C comme gridOrigin, resolutions, projection, units, maxExtent, minZoomLevel, maxZoomLevel, opacity, isBaseLayer, visibility, originators, etc ... Il est important de noter que l'emprise maxExtent doit être exprimée dans le système de coordonnées projection.
    • Le paramètre gridOrigin indique l'origine des tuiles. Par défaut, c'est le (0, 0) dans le système de référence de coordonnées projection.
    • Le paramètre resolutions indique les résolutions du cache. Par défaut, ce sont celles du Géoportail :
      Zoom Résolution (m) Projection Échelle
      0 39135.7500000 MILLER 1 / 156 543 000
      1 19567.8750000 MILLER 1 / 78 271 500
      2 9783.9375000 MILLER 1 / 39 135 750
      3 4891.9687500 MILLER 1 / 19 567 875
      4 2445.9843750 MILLER 1 / 9 783 938
      5 2048.0000000 GEOPORTAL### 1 / 8 192 000
      6 1024.0000000 GEOPORTAL### 1 / 4 096 000
      7 512.0000000 GEOPORTAL### 1 / 2 048 000
      8 256.0000000 GEOPORTAL### 1 / 1 024 000
      9 128.0000000 GEOPORTAL### 1 / 512 000
      10 64.0000000 GEOPORTAL### 1 / 256 000
      11 32.0000000 GEOPORTAL### 1 / 128 000
      12 16.0000000 GEOPORTAL### 1 / 64 000
      13 8.0000000 GEOPORTAL### 1 / 32 000
      14 4.0000000 GEOPORTAL### 1 / 16 000
      15 2.0000000 GEOPORTAL### 1 / 8 000
      16 1.0000000 GEOPORTAL### 1 / 4 000
      17 0.5000000 GEOPORTAL### 1 / 2 000
      18 0.2500000 GEOPORTAL### 1 / 1 000
      19 0.1250000 GEOPORTAL### 1 / 500
      20 0.0625000 GEOPORTAL### 1 / 250

    Les résolutions de la couche peuvent être différentes en nombre et en valeur, la classe Geoportal.Layer.Grid se charge d'appeler la résolution la plus proche de celle du Géoportail pour permettre la superposition.

    Quoiqu'il en soit il n'y a pas de différence notable entre l'utilisation OpenLayers.Layer.WMS et celle de Geoportal.Layer.WMSC excepté pour la gestion de la gestion des droits des données géographiques qui sera :

  • soit ajouté automagiquement par les APIs standard et étendue ;
  • soit ajouté (par le développeur) comme suit (Cf. modes opératoires pour de plus amples informations) :
    • ajouter un paramètre GeoRM dans options_couche ;
    • affecter le code qui suit au paramètre GeoRM :
      GeoRM: Geoportal.GeoRMHandler.addKey(
          gGEOPORTALRIGHTSMANAGEMENT.apiKey,
          gGEOPORTALRIGHTSMANAGEMENT[gGEOPORTALRIGHTSMANAGEMENT.apiKey].tokenServer.url,
          gGEOPORTALRIGHTSMANAGEMENT[gGEOPORTALRIGHTSMANAGEMENT.apiKey].tokenServer.ttl,
          maCarte)
Exemple de superposition de cartes de la France et de l'Espagne :

L'extrait de code suivant montre l'affichage des données du Géoportail (WMS-C) en plate-carré avec une superposition d'un service WMS-C espagnol, lui-aussi en plate-carré :

...
geoportalLoadviewer1("plancheCartographique","normal","FXX","IGNF:RGF93G");
...
var ideeResolutions= [
        0.703125,
        0.3515625,
        0.17578125,
        0.087890625,
        0.0439453125,
        0.02197265625,
        0.010986328125,
        0.0054931640625,
        0.00274658203125,
        0.001373291015625,
        0.0006866455078125,
        0.00034332275390625,
        0.000171661376953125,
        0.0000858306884765625,
        0.00004291534423828125,
        0.000021457672119140625,
        0.0000107288360595703125,
        0.00000536441802978515625,
        0.000002682209014892578125,
        0.0000013411045074462890625,
        0.00000067055225372314453125,
        0.000000335276126861572215625,
        0.0000001676380634307861078125,
        0.00000008381903171539305390625,
        0.000000041909515857696526953125
];
var idee= maCarte.getMap().addLayer(
    "WMS-C",
    {
        'IDEE-Base':
        {
            'fr':"Cartes de base IDEE",
            'en':"IDEE base maps",
            'es':"Cartografia base IGN"
        }
    },
    "http://www.idee.es/wms-c/IDEE-Base/IDEE-Base",
    {
        layers:'Todas',
        format:'image/png',
        transparent:true
    },
    {
        singleTile: false,
        projection:'EPSG:4326',
        // emprise en EPSG:4326 :
        maxExtent: new OpenLayers.Bounds(-18.865234375,25.892578125,4.865234375,46.107421875),
        gridOrigin: new OpenLayers.LonLat(0,0),
        nativeResolutions:ideeResolutions.slice(0),
        opacity:0.30,
        units:'degrees',
        isBaseLayer: false,
        visibility:false,
        originators:[
            {
                pictureUrl:'http://www.idee.es/images/Logo_IDEE.gif',
                url:'http://www.idee.es/index.jsp?lang=FR'
            }
        ]
    });
...