Nombreuses sont les sociétés ou organisation, qui, en France, utilisent ou possèdent des données provenant de l’Institut Géographique National – IGN.

Ces données se matérialisent sous forme de bases de données multiples intégrant les données parcellaires, les bases topographiques et bien d’autres contenu qui sont désormais rendu disponibles dans le cadre de la directive Européenne INSPIRE.Bing Maps IGN intégration des données BD-TOPO BD-Parcellaire BD carto de l'IGN sur une carte de type Bing Maps ou Google Maps

A travers cet article, nous allons donc nous intéresser à ce qu’est la directive INSPIRE, comment accéder aux informations fournies par l’IGN et pour finir à l’intégration des données de l’IGN au sein du contrôle AJAX en version 7 de la plateforme Bing Maps for Enterprise.

 

INSPIRE en quelques mots

La directive INSPIRE – Infrastructure for Spatial Information in Europe se résume à cette volonté :

La directive INSPIRE, élaborée par la Direction générale de l'environnement de la Commission européenne, vise à établir en Europe une infrastructure de données géographiques pour assurer l’interopérabilité entre bases de données et faciliter la diffusion, la disponibilité, l'utilisation et la réutilisation de l’information géographique en Europe.

C’est donc bel et bien un effort commun en Europe pour favoriser la mise à disposition sous une forme standard des contenus cartographiques.

INSPIRE directive en France et en Europe - logo

Les grands principes visent principalement à :

  • Rendre la collecte de données géographiques unique et réduire les coûts de collecte (acquisition, traitement, mise à disposition) de manière globale
     
  • Donner la possibilité de manière simple de combiner ces informations géographiques provenant de sources multiples à travers des applications ou autres services
     
  • Partager les données avec tous les autres organismes publics
     
  • Mettre à disposition la donnée de manière claire et accessible
     
  • Présenter quelles informations sont disponibles, les besoins auxquels ces informations peuvent répondre et communiquer efficacement sur les conditions d’utilisation

IGN - Institut géographique National - BD PARCELLAIRE, ORTHO, BATI intégré dans Bing Maps à travers ces article - logo L’IGN a été un acteur majeur dans la défense de la mise en place de cette directive et c’est un projet auquel nous pouvons espérer, beaucoup collaboreront au delà des choses imposées en se rendant également disponible pour facilité l’implémentation de leurs données et en communiquant sur des réseaux adaptés.

A ce propos et quelques peu en lien, il est également à noter la volonté de l’Etat Français, d’ouvrir les données et de créer un espèce de data.gouv.fr que l’on pourra bientôt espérer riche en contenu comme il est possible d’en trouver dès à présent sur Open Data Paris ou bien d’autres villes ou même régions comme expliqué via ce lien : http://www.europecreative.eu/2011/05/06/open-data-les-collectivites-territoriales-ouvrent-leurs-donnees-au-public/.

Ne manquez pas de suivre l’actualité du groupe constitué Etalab à travers ce blog officiel, dédié à la création de cette espace de partage de données publiques : http://etalab.over-blog.com/.

 

Accès aux données de l’IGN

Les licences :

L’IGN, concernée de près par cette directive ont mis à disposition leurs données à travers des services dédiés et restreint à des usages non-commerciaux.

Données cartographiques intégrées dans Bing Maps WMS et WMSC

Pour obtenir d’avantages d’informations concernant les licences et les conditions d’utilisations des données et services de l’IGN : https://api.ign.fr/geoportail/index.do

Après avoir créé son compte et rempli les différentes informations sur le site de l’IGN, on observe la possibilité de créer un contrat selon les modalités expliquées dans les licences associées.

Les données

Dans l’état actuel, le contrat de type INSPIRE donne accès à ces informations via le serveur WMS-C (Web Mapping Service Cached) :

  • Limites administratives (WMSC:ADMINISTRATIVEUNITS.BOUNDARIES)
  • Parcelles cadastrales (WMSC:CADASTRALPARCELS.PARCELS)
  • Réseau ferroviaire (WMSC:TRANSPORTNETWORKS.RAILWAYS)
  • Routes (WMSC:TRANSPORTNETWORKS.ROADS)
  • Aérodromes (WMSC:TRANSPORTNETWORKS.RUNWAYS)
  • Hydrographie (WMSC:HYDROGRAPHY.HYDROGRAPHY)
  • Altitude (WMSC:ELEVATION.SLOPES)
  • Trait de côte (WMSC:ELEVATION.LEVEL0)
  • Photographies aériennes (WMSC:ORTHOIMAGERY.ORTHOPHOTOS)
  • Ortho photographies du littoral (2000) (WMSC:ORTHOIMAGERY.ORTHOPHOTOS.COAST2000)
  • Bâtiments (WMSC:BUILDINGS.BUILDINGS)
  • Services publics (WMSC:UTILITYANDGOVERNMENTALSERVICES.ALL)

Et les services WMS, standard OGC, correspondants par zones de couverture :

  • FXX : France Métropolitaine
  • GLP : Guadeloupe
  • GUF : Guyane Française
  • MTQ : Martinique
  • REU : La Réunion
  • MYT : Mayotte

Détails complet dans ce fichier Excel : http://www.boonaert.net/documents/BingMaps/IGN%20-%20Inspire.xlsx

 

Présentation de la méthode d’accès et obtention d’un jeton client

Les services de l’IGN sont soumis à l’obtention d’un jeton basé sur une clé unique et généré pour une période paramétrable, de base configurée pour ne durer que 10 minutes.

Voici un vue globale du fonctionnement de ce système de jeton :

Architecture des services d'authentification WMS de l'IGN Geoportail ou INSPIRE - système de jeton du géoportail avec utilisation de jQuery

Dès lors, ces services peuvent être appelés depuis du code client et nous pouvons tout à fait composer ces requêtes en JavaScript.

Voici un exemple de code utilisant jQuery, permettant de récupérer ce jeton qui servira à identifier chaque nouvelle requête effectuée, cette méthode n’est appelée qu’une fois au chargement de la carte :

// IGN Specific
function getTokenIgn(key, callback) {

    // manage default callback
    if (callback == null) callback = onGetTokenIgn;

    //getToken?key=CLEF&output=json

    var requestParams = new Object();
    requestParams.key = ignConstants.ignKey;
    requestParams.output = 'json'

    // Call the service
    $.ajax({
        type: 'GET',
        url: ignConstants.ignTokenSrvUrl + 'getToken',
        cache: false,
        data: requestParams,
        dataType: 'jsonp',
        success: callback,
        error: onGlobalError
    });
}

Dans le callback, il suffit ensuite de conserver le jeton renvoyé :

function onGetTokenIgn(result) {
    ignGlobals.token = result.gppkey;
}

Il suffit alors de conserver ce jeton et de le communiquer en paramètre des requêtes suivantes.

 

Accès aux données sous formes de tuiles

Les données sont exposées sous formes de différents services comme présentés précédemment : 

  • OGC Open Geospatial Consortium - LogoWMS : Web Mapping Service – standard OGC
  • WMS-C : Web Mapping Server Cached – non standard
  • WFS : Web Feature Service – standard OGC

Afin de réaliser l’intégration au sein du contrôle Bing Maps AJAX v7, nous choisissons d’utiliser les données sous formes de tuiles et comme pour la majorité des plateformes de Web Mapping grand public, les données doivent respecter le système de projection Mercator EPSG:4326 (ou mieux Web Mercator).

Mercator projection carrée compatible avec Bing Maps et Google Maps entre autres

Ce système de projection est uniquement disponible à travers le service WMS pour l’obtention de tuile utilisable au sein du contrôle AJAX de la plateforme Bing Maps. Ces tuiles sont des fichiers d’images

Voici un exemple d’url permettant d’accéder à du contenu :

http://wxs.ign.fr/inspire/wms?&TRANSPARENT=true&LAYERS=FXX.BUILDINGS.BUILDINGS
&EXCEPTIONS=text/xml&FORMAT=image/png&SERVICE=WMS
&VERSION=1.1.1&REQUEST=GetMap&STYLES=&SRS=EPSG:4326
&BBOX=2.3455810546875,48.850258199721495,
2.35107421875,48.853872731656544
&WIDTH=256&HEIGHT=256&TILED=true
&gppkey=JETON

 

L’image associée :

IGN sample buildings tile - tuile WMS d'affichage des données du bati de l'IGN pour integration sur WEB API 

L’ensemble des paramètres d’appels est décrit dans le document PDF fourni en documentation sur le site de l’IGN disponible à travers ce lien.

Il est alors aisé de changer le type de données à afficher en tant que tuile en modifiant le paramètre LAYERS de la requête.

L’adresse de la même tuile présentant cette fois-ci les informations de réseaux routiers :

http://wxs.ign.fr/inspire/wms?&TRANSPARENT=true&LAYERS=FXX.TRANSPORTNETWORKS.ROADS
&EXCEPTIONS=text/xml&FORMAT=image/png&SERVICE=WMS
&VERSION=1.1.1&REQUEST=GetMap&STYLES=&SRS=EPSG:4326
&BBOX=2.3455810546875,48.850258199721495
,2.35107421875,48.853872731656544
&WIDTH=256&HEIGHT=256&TILED=true&gppkey=JETON

Et ici les images associées avec le type de données ROADS (LAYERS : FXX.TRANSPORTNETWORKS.ROADS) :

IGN sample buildings tile - tuile WMS d'affichage des données routieres pour affichage sur Web API  

Utilisation et intégration au sein de la plateforme Bing Maps for Enterprise

Les données de l’IGN peuvent alors être techniquement intégrées sur les plateformes Grand public de Web Mapping que sont Google Maps API ou Bing Maps for Enterprise.

bingmaps_header

Dans le cas de Bing, l’intégration peut être réalisée assez simplement puisqu’il s’agit de couche WMS exposées sous formes de carte générées dans la taille souhaitée et donc pour l’implémentation Bing, cela se résume à intégrer une couche de tuile supplémentaire, générée pour l’occasion par le service WMS de l’IGN.

Dans le cas présent, je choisis de créer une méthode simple pour éviter d’avoir à modifier mon code à chaque changement de calque de données à afficher, la méthode est la suivante :

function addLayer(layerName) {
    if (ignGlobals.token != null) {
        ignGlobals.ignLayerName = layerName;

        // Create the tile source
        var dataTileSource = new Microsoft.Maps.TileSource({ uriConstructor: getIgnTilePath });

        // Construct the layer using the tile source
        var dataTileLayer = new Microsoft.Maps.TileLayer({ mercator: dataTileSource, opacity: 1, zIndex: 10 });
        bmGlobals.map.entities.push(dataTileLayer);
    }
}

On remarque principalement l’utilisation d’un constructeur d’URL personnalisé qui pointe sur une méthode qui construit dynamiquement l’url à partir de la tuile courante, voici le code de cette méthode de construction dynamique d’url :

function getIgnTilePath(tile) {
    var tileUrl = null;
    if (ignGlobals.token != null) {

        var locBottomLeft = tileToTopLeftCornerLocation(tile.x, tile.y + 1, tile.levelOfDetail);
        var locTopRight = tileToTopLeftCornerLocation(tile.x + 1, tile.y, tile.levelOfDetail);

        // Compose the url
        tileUrl = ignConstants.ignWmsSrvUrl;
        tileUrl += 'wms';
        tileUrl += '?&TRANSPARENT=true';
        tileUrl += '&LAYERS=' + ignGlobals.ignLayerName;
        tileUrl += '&EXCEPTIONS=text/xml';
        tileUrl += '&FORMAT=image/png';
        tileUrl += '&SERVICE=WMS';
        tileUrl += '&VERSION=1.1.1';
        tileUrl += '&REQUEST=GetMap';
        tileUrl += '&STYLES=';
        tileUrl += '&SRS=EPSG:4326';
        tileUrl += '&BBOX=' + [locBottomLeft.longitude,
                               locBottomLeft.latitude,
                               locTopRight.longitude, 
                               locTopRight.latitude].join(',');
        tileUrl += '&WIDTH=256';
        tileUrl += '&HEIGHT=256';
        tileUrl += '&TILED=true';
        tileUrl += '&gppkey=' + ignGlobals.token;
    }

    return tileUrl;
}

On utilise une méthode pour convertir ces valeurs X et Y identifiant la tuile dans son système de quadtree (c’est en réalité une autre représentation des quadkeys) :

function tileToTopLeftCornerLocation(x, y, zoomLevel) {
    // Convert tileXY into pixel coordinates for top left corners 
    var pixelX = x * 256;
    var pixelY = y * 256;

    // Convert to latitude and longitude coordinates 
    var longitude = pixelX * 360 / (256 * Math.pow(2, zoomLevel)) - 180;
    var latitude = Math.asin((Math.exp((0.5 - pixelY / 256 / Math.pow(2, zoomLevel)) * 4 * Math.PI) - 1)
                / (Math.exp((0.5 - pixelY / 256 / Math.pow(2, zoomLevel)) * 4 * Math.PI) + 1)) * 180 / Math.PI;

    return new Microsoft.Maps.Location(latitude, longitude);
}

Voici le résultat en exécution :

Details du bati de l'IGN au sein d'une carte de type Bing Maps / Google Maps

 

Quelles perspectives ?

Nous pouvons que nous réjouir de l’ouverture des données de ces organisations qui possèdent réellement des quantités d’informations qui, combinées à celles des organismes voisins, peuvent réellement laisser place à des usages encore insoupçonnés jusqu’alors.

Cette obligation va également nous permettre de mieux se représenter ce qui est disponible de manière payante pour un usage commercial ce qui est un réel avantage surtout dans des scénarii d’intégration multi-plateforme.

Geo business intelligence market in Europe - Geo BI marche en France Le marché Européen représenté par l’utilisation et la mise à disposition de ces données mises à disposition au grand public est estimé à 27 milliards d’euros (voir : Article - La révolution “open data”) mais comme dans la plupart des cas, cela ne se fait pas sans quelque souci de mise en place ou de compréhension.

Le récent cas du service CheckMy!Metro qui s’est heurté à une équipe juridique de la RATP un peu trop rigide mais qui s’est depuis raisonné et qui laisse place au dialogue. Ce n’est pour moi, qu’un cas parmi bien d’autres mais il a eu le mérite d’attirer l’attention de la presse spécialisée et amènera le gouvernement Français à prendre position et défendre l’Open Data en France ce type de mouvement qui se lie de près à cette directive.

A ce titre, je tiens à souligner que ce type d’initiative de création d’application originale doit être soutenue et que ce n’est pas dans l’immobilisme de certaines grosses organisations que l’on va trouver solution à nos problèmes économiques actuels.

INSPIRE ouverture des données spatiales en France et en EuropeCette directive INSPIRE s’inscrit dans cet objectif et nous encourage à créer de la richesse et de la vie à partir de données bien trop souvent cantonnées à un usage classique avec en réalité un potentiel bien plus important lorsqu’elles sont croisées les unes aux autres.

 

Conclusions

Microsoft à travers Bing Maps for Enterprise, propose une plateforme sur laquelle il est possible de venir greffer des données comme celles proposées par ces organismes qui vont continuer d’ouvrir des bases toujours plus riches lorsqu’elles seront utilisées conjointement.

Cet article nous a donc montrer comment exploiter des sources de données provenant de l’IGN et plus généralement depuis un service WMS.

Il est important de se renseigner avant d’utiliser ces données dans vos différents projets, leurs utilisations est soumises à conditions mais l’implémentation technique est possible et vous avez ici la preuve et les bases pour réaliser une telle intégration.

Comme toujours, toute question sur l’implémentation technique est la bienvenue, n’hésitez pas à me contacter si vous souhaitez intégrer les données de l’IGN au sein de Bing Maps for Enterprise ou même sur d’autres plateformes.

Nous verrons dans les prochaines semaines l’utilisation d’autres données et comment maximiser l’intégration de tels services tiers pour toujours venir enrichir l’expérience utilisateur implémentant la plateforme Bing Maps for Enterprise.