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.
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.
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
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.

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 :
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 :
WMS : 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).
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 :
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) :
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.
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 :
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.
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.
Cette 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.
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :