Extension:GeoportailApi

De Ao35.

Version du 29 février 2012 à 08:39 par Marc (discuter | contributions)
(diff) ← Version précédente | Voir la version courante (diff) | Version suivante → (diff)

Sommaire

Que fait cette extension ?

Cette extension permet d'afficher des cartes issues du Géoportail dans le Médiawiki.

Utilisation

Un mode d'utilisation est possible :

  1. via les balises geoportal:map, geoportal:wms, geoportal:kml et geoportal:georss
    1. geoportal:map
      définit une carte. Les attributs possibles sont :
      • version
      version de l'API, valeur par défaut : '1.3'
      • type
      type de l'API, valeurs possibles : 'Min', '', 'Extended', valeur par défaut : 'Extended'
      • key
      clef API, issue de {{{$wgGeoportailApiKey}}} ou {{{$wgGeoportailApiSites}}}
      • instance
      var javascript qui contient la carte, valeur par défaut: "viewer".{{{compteur}}}
      • engine
      inclusion de l'API par le Géoportail, valeur par défault : false
      • viewerclass
      type d'affichage, valeurs possibles : 'Default', 'Standard', valeur par défaut : 'Default'
      • jsurl
      URL d'accès aux Javascript de l'API livrés avec l'extension, valeur par défaut : '$IP/extensions/GeoportailApi/api/js/1.3/'
      • cssurl
      URL d'accès aux CSS de l'API livrés avec l'extension, valeur par défaut : '$IP/extensions/GeoportailApi/api/js/1.3/theme/'
      • width
      largeur de la carte, valeur par défaut : '800px'
      • height
      hauteur de la carte, valeur par défaut : '600px'
      • mode
      mode de la carte, valeurs possibles : 'mini', 'normal', valeur par défaut : 'normal'
      • territory
      territoire couvert par la carte, valeur par défaut : 'FXX'
      • projection
      projection de la carte, valeur par défaut : null (celle du territoire)
      • displayprojection
      projection d'affichage des coordonnées, valeur par défaut : null (celles du territoire)
      • proxy
      proxy pour charger les KML/GeoRSS, valeur par défaut: '$IP/extensions/GeoportailApi/api/proxy/php/proxy.php'
      • defaultlayers
      couches du Géoportail à charger dans la carte, valeur par défaut : null (toutes les couches du contrat API)
      • defaultlayersoptions
      options d'affichage des couches du Géoportail, valeur par défaut : '{}' (affichage par défaut)
      • layerswitchermode
      affichage du gestionnaire des couches, valeurs possibles : 'on', 'mini', 'off', valeur par défaut : 'on'
      • toolboxmode
      affichage du gestionnaire des outils, valeurs possibles : 'on', 'mini', 'off', valeur par défaut : 'on'
      • infopanelmode
      affichage du panneau des informations, booléan, valeur possible : false
      • lon
      longitude du centre de la carte, valeur par défaut : 2.345274398 (Paris)
      • lat
      latitude du centre de la carte, valeur par défaut : 48.860832558 (Paris)
      • zoom
      zoom de la carte, valeurs possibles entre 0 et 20, valeur par défaut : 10
    2. geoportal:wms
      accède à un flux Web Map Service (WMS) de l'OGC.
      • name
      nom de la couche, valeur par défaut : 'WMS'.{{{compteur}}}
      • url
      URL du service WMS, valeur par défaut : 'http://localhost/?'
      • layers
      noms de cartes à afficher (séparés par des ,), valeur par défaut :
      • format
      type des images retournées par le service, valeur par défaut : 'image/jpeg'
      • transparent
      transparence des images, valeur par défaut : false
      • singletile
      mode d'interrogation du service (une seule requête, ou plusieurs requêtes de tuiles), booléen, valeur par défaut : true
      • projection
      projection des cartes à afficher, valeur par défaut : 'EPSG:4326'
      • maxextent
      emprise des cartes à afficher (longitude minimum, latitude minimum, longitude maximum, latitude maximum), valeur par défaut : '-180,-90,180,90'
      • minzoomlevel
      zoom minimal (plus petite échelle), valeur par défaut : 5
      • maxzoomlevel
      zoom maximal (plus grande échelle), valeur par défaut : 15
      • opacity
      niveau de transparence des images, valeur par défaut : 0.5
      • visibility
      affichage de la couche (booléen), valeur par défaut : false
      • originators
      propriétaires des données (identifiant du logo logo, URL du logo pictureUrl, URL du partenaire url, attribution du propriétaire attribution), valeur par défaut : []
    3. geoportal:kml
      accède à un flux KML.
      • name
      nom de la couche, valeur par défaut : 'GML'.{{{compteur}}}
      • url
      URL du flux KML, valeur par défaut : 'http://localhost/?'
      • projection
      projection du flux KML, valeur par défaut : 'EPSG:4326'
      • minzoomlevel
      zoom minimal (plus petite échelle), valeur par défaut : 5
      • maxzoomlevel
      zoom maximal (plus grande échelle), valeur par défaut : 15
      • opacity
      niveau de transparence des images, valeur par défaut : 1.0
      • visibility
      affichage de la couche (booléen), valeur par défaut : false
      • originators
      propriétaires des données (identifiant du logo logo, URL du logo pictureUrl, URL du partenaire url, attribution du propriétaire attribution), valeur par défaut : '[]'
      • panmapifoutofview
      centrage de la popup de données sur clic (booléen), valeur par défaut : true
      • stylemap
      style cartographique des données affichées, valeur par défaut : null
      • prefeatureinsert
      fonction Javascript à appeler lors de la lecture des données avant leur affichage, valeur par défaut : null
      • onfeatureinsert
      fonction Javascript à appeler après la lecture des données, valeur par défaut : null
      • eventlisteners
      ensemble de fonctions Javascript à appeler sur des évènements levés par OpenLayers : null
      • formatoptions
      paramètres de lecture du format KML, valeur par défaut : null
      • hover
      indicateur d'activation de l'évènement survol (booléen), valeur par défaut : false
      • highlightonly
      indicateur d'affichage en mode "mise en avant" des données (booléen), valeur par défaut : false
      • renderintent
      type d'affichage des données par défaut, valeurs possibles : "default", "select", "temporary", "delete", valeur par défaut : null
      • onbeforeselect
      fonction Javascript à appeler avant de sélectionner un objet, valeur par défaut : null
      • onselect
      fonction Javascript à appeler lors de la sélection d'un objet (survol ou clic), valeur par défaut : null
      • onunselect
      fonction Javascript à appeler lors de la dé-sélection d'un objet, valeur par défaut : null
    4. geoportal:georss
      accède à un fil GeoRSS.
      • name
      nom de la couche, valeur par défaut : 'Marker'.{{{compteur}}}
      • url
      URL du fil GeoRSS, valeur par défaut : 'http://localhost/?'
      • projection
      projection du fil GeoRSS, valeur par défaut : 'EPSG:4326'
      • minzoomlevel
      zoom minimal (plus petite échelle), valeur par défaut : 5
      • maxzoomlevel
      zoom maximal (plus grande échelle), valeur par défaut : 15
      • opacity
      niveau de transparence des images, valeur par défaut : '1.0'
      • visibility
      affichage de la couche (booléen), valeur par défaut : false
      • originators
      propriétaires des données (identifiant du logo logo, URL du logo pictureUrl, URL du partenaire url, attribution du propriétaire attribution), valeur par défaut : '[]'
      • panmapifoutofview
      centrage de la popup de données sur clic (booléen), valeur par défaut : true
      • stylemap
      style cartographique des données affichées, valeur par défaut : null
      • prefeatureinsert
      fonction Javascript à appeler lors de la lecture des données avant leur affichage, valeur par défaut : null
      • onfeatureinsert
      fonction Javascript à appeler après la lecture des données, valeur par défaut : null
      • eventlisteners
      ensemble de fonctions Javascript à appeler sur des évènements levés par OpenLayers : null
      • formatoptions
      paramètres de lecture du format GeoRSS, valeur par défaut : null
      • hover
      indicateur d'activation de l'évènement survol (booléen), valeur par défaut : false
      • highlightonly
      indicateur d'affichage en mode "mise en avant" des données (booléen), valeur par défaut : false
      • renderintent
      type d'affichage des données par défaut, valeurs possibles : "default", "select", "temporary", "delete", valeur par défaut : null
      • onbeforeselect
      fonction Javascript à appeler avant de sélectionner un objet, valeur par défaut : null
      • onselect
      fonction Javascript à appeler lors de la sélection d'un objet (survol ou clic), valeur par défaut : null
      • onunselect
      fonction Javascript à appeler lors de la dé-sélection d'un objet, valeur par défaut : null

Téléchargement

L'extension est téléchargeable . Cette page fait partie de la distribution sous le nom WikiAPI-Extension_GeoportailApi.xml. Il suffit de l'importer dans le MédiaWiki pour avoir la documentation de l'extension.

Installation

Il faut la décompresser dans $IP/extensions.

Puis, il faut suivre les instructions ci-après.

Note: $IP correspond au répertoire d'installation de votre MediaWiki, le répertoire qui contient le fichier LocalSettings.php.

Pour activer cette extension, ajouter ce qui suit à LocalSettings.php :

$wgGeoportailApiKey= 'VOTRE_CLEF';
require_once("$IP/extensions/GeoportailApi/GeoportailApi.php");

Paramètres de configuration

  • wgGeoportailApiKey
    La clef API : elle s'applique à toutes vos pages susceptibles d'utiliser l'extension.
    Avant d'accéder à l'API, il faut passer par les étapes suivantes :
    • créer un compte
      Suite à l'inscription, un courriel de confirmation est envoyé. Une fois confirmé, il suffit de se connecter.
    • créer un contrat
      Les paramètres de création d'un contrat sont l'URL du site où elle va être déployée et le territoire concerné par les données à afficher. Une fois créé, un courriel de confirmation avec la licence est envoyé. Cette dernière donne accès aux cartes et aux ortho-photographies. Plusieurs licences peuvent être créées suivant les URLs, les territoires pour un même contrat.
  • wgGeoportailApiSites
    Ce tableau contient les associations site web et clef API.
    Il permet donc d'associer suivant l'URL du Médiawiki, une clef particulière.
$wgGeoportailApiSites = array(
    'localhost/'          => "VOTRE_CLEF",      # développement
    'http://monwiki.org/' => "VOTRE_AUTRE_CLEF" #production
);
  • wgGeoportailApiUrlPath
    Chemin d'accès à l'API du Géoportail. Par défaut, $IP/extensions/GeoportailApi est utilisé (une version de l'API est livrée avec l'extension).
    Ce chemin permet alors d'accèder au Javascript de l'API ($wgGeoportailApiUrlPath/js/$wgGeoportailDefaults["version"]/) et aux CSS de l'API ($wgGeoportailApiUrlPath/js/$wgGeoportailDefaults["version"]/theme/)
  1. Pour ne pas utiliser l'API livrée avec l'extension, il suffit d'instancier ce paramètre. Par exemple, pour utiliser l'API en production :
$wgGeoportailApiUrlPath = "http://api.ign.fr/geoportail/";
  • wgGeoportailDefaults
    Ce tableau contient les options que l'extension va utiliser pour l'affichage des données (les valeurs par défaut sont indiquées ci-dessous) :
$wgGeoportailDefaults= array(
            'version'               => '1.3',
            'type'                  => '',                                                       // 'Min','','Extended'
            'key'                   => {{{$wgGeoportailApiKey}}},                                // prise directement ou calculée à partir de $wgGeoportailApiSites
            'instance'              => 'viewer'.{{{counter}}},                                   // chaque carte est identifiée par un comptage global au wiki
            'engine'                => FALSE,                                                    // charge l'API fournie avec l'extension
            'viewerclass'           => 'Default',                                                // 'Simple' ou 'Default' ou 'Standard'
            'jsurl'                 => {{{$IP/extensions/GeoportailApi}}}.'/api/js/1.3/',
            'cssurl'                => {{{$IP/extensions/GeoportailApi}}}.'/api/js/1.3/theme/',
            // div options :
            'width'                 => '800px',
            'height'                => '600px',
            // viewer options :
            'mode'                  => 'normal',                                                 // 'mini' ou 'normal' (si 'Default'), sinon inutilisé
            'territory'             => 'FXX',                                                    // voir la documentation en ligne sur https://api.ign.fr/geoportail/api/doc/fr/webmaster/integration.html
            'projection'            => 'null',
            'displayprojection'     => 'null',
            'proxy'                 => {{{$IP/extensions/GeoportailApi}}}.'/proxy/php/proxy.php',
            'defaultlayers'         => 'null',                                                   // all layers in contract
            'defaultlayersoptions'  => '{}',                                                     // default
            'layerswitchermode'     => 'on',                                                     // 'on','mini','off'
            'toolboxmode'           => 'on',                                                     // 'on','mini','off'
            'infopanelmode'         => true,
            'lon'                   =>  2.345274398,
            'lat'                   => 48.860832558,
            'zoom'                  => 10
);
  • wgGeoportailApiCustomMessages
    Ce tableau permet de surcharger les messages mis dans $IP/extensions/GeoportailApi/GeoportailApi.i18n.php.

Conditions Générales d'Utilisation

Voir les CGUs Géoportail.

Codes

Carte simple

Crée une carte qui occupe tous l'espace possible avec les ortho-photographies et les cartes.
Ces dernières sont affichées avec une transparence de 50%. Le gestionnaire des couches est replié.
La boîte à outils est dépliée. Le panneau d'information (avec l'échelle, les coordonnées, etc ...) est visible.

<geoportal:map
  instance="map1"
  width="100%"
  defaultLayers="['ORTHOIMAGERY.ORTHOPHOTOS:WMSC','GEOGRAPHICALGRIDSYSTEMS.MAPS:WMSC']"
  defaultLayersOptions="{'GEOGRAPHICALGRIDSYSTEMS.MAPS:WMSC':{opacity:0.5}}"
  layerSwitcherMode="mini"
  toolboxMode="on"
  infoPanelMode="true"
/>



Carte avec un service WMS

Le code précédent est modifié pour ajouter le support WMS (en rouge).
Les panneaux sont repliés.
La couche WMS "Cours d'eau" est affichée directement (visibility:true).
On peut ajouter du code Javascript entre les balises geoportal:wms !

<geoportal:map
  instance="map2"
  width="100%"
  defaultLayers="['GEOGRAPHICALGRIDSYSTEMS.MAPS:WMSC']"
  defaultLayersOptions="{'GEOGRAPHICALGRIDSYSTEMS.MAPS:WMSC':{opacity:0.25}}"
  layerSwitcherMode="mini"
  toolboxMode="mini"
  infoPanelMode="false"
>
<geoportal:wms
  name="Cours d'eau"
  url="http://services.sandre.eaufrance.fr/geo/zonage-shp?"
  layers="RWBODY"
  format="image/png"
  transparent="true"
  singleTile="true"
  projection="EPSG:4326"
  maxExtent="-180,-90,180,90"
  minZoomLevel="5"
  maxZoomLevel="15"
  opacity="1"
  visibility="true"
  originators="sandre"
>
var sandre= [{
  logo:'sandre',
  pictureUrl:'http://api.ign.fr/geoportail/api/doc/examples//img/logo_sandre.gif',
  url:'http://sandre.eaufrance.fr'
}];
</geoportal:wms>
</geoportal:map>



Carte avec un flux KML

Le code initial est modifié pour ajouter le support KML (en rouge).
La visualisation est en mode "mini" (pas de panneaux).
Le zoom est mis au niveau 5 pour voir la France en entier.
Le centre de la carte est positionné explicitement.
Le KML est chargé directement (visibility à true).
Ses échelles sont bloquées entre le zoom 5 et 10.
Au survol des éléments, un label est affiché (hover, hightlightOnly, renderIntent, onSelect et onUnselect).
On peut ajouter du code Javascript entre les balises geoportal:kml :
1.- Un style lui est attribué (s100Style) et l'interprétation des styles du KML désactivée;
2.- Au clic sur un élément, une fiche est proposée.

<geoportal:map
  instance="map3"
  width="100%"
  defaultLayers="['ORTHOIMAGERY.ORTHOPHOTOS:WMSC','GEOGRAPHICALGRIDSYSTEMS.MAPS:WMSC']"
  defaultLayersOptions="{'GEOGRAPHICALGRIDSYSTEMS.MAPS:WMSC':{opacity:0.5}}"
  mode="mini"
  zoom="5"
  lon="2.50"
  lat="46.63"
  proxy="/mediawiki/extensions/GeoportailApi/api/proxy/php/proxy.php"
>
<geoportal:kml
  name="Cartes 1:100 000ième"
  url="http://api.ign.fr/geoportail/api/doc/data/S_TOP100.kml"
  originators="[{logo:'ign',url: 'http://www.ign.fr'}]"
  minZoomLevel="5"
  maxZoomLevel="10"
  styleMap="s100Style"
  formatOptions="{extractStyles:false}"
  hover="true"
  highlightOnly="true"
  renderIntent="temporary"
  onSelect="function(f){}"
  onUnselect="function(f){}"
  visibility="true"
>
/*1*/
var s100Style= new OpenLayers.StyleMap({
    "default": new OpenLayers.Style({
        strokeColor:'#ffffff',
        strokeWidth:2,
        fillColor:'#000000',
        fillOpacity:0.5
    }),
    "temporary": new OpenLayers.Style({
        strokeColor:'#00ff00',
        strokeWidth:2,
        fillColor:'#00ff00',
        fillOpacity:0.5,
        label: "${getTITRE_COMP}",
        labelAlign: "rb",
        labelBackgroundColor: "yellow",
        labelBorderColor: "black",
        labelBorderSize: "1px",
        fontColor: "black",
        fontWeight: "bold",
        fontSize: "12px",
        fontFamily: "Courier New, monospace"
    },{
        context:{
            getTITRE_COMP: function(f) {
                return f.attributes['TITRE_COMP'].value;
            }
        }
    }),
    "select": new OpenLayers.Style({
        strokeColor:'#ff0000',
        strokeWidth:2,
        fillColor:'#ff0000',
        fillOpacity:0.5
    })
});
</geoportal:kml>
/*2*/
var s100= map3.getMap().getLayersByName("Cartes 1:100 000ième")[0];
if (s100) {
  var selectS100Opts= OpenLayers.Util.extend( map3.getMap().getPopupDefaults('KML'), {});
  var selectS100= new OpenLayers.Control.SelectFeature(s100, selectS100Opts);
  map3.getMap().addControl(selectS100);
  map3.getMap().events.on({"changelayer":Geoportal.Map.onVisibilityChange, scope:selectS100});
}
</geoportal:map>



Carte avec un flux GeoRSS

Le code initial est modifié pour ajouter le support GeoRSS (en rouge).
Le panneau des couches est retiré.
On peut ajouter du code Javascript entre les balises geoportal:georss :
A la fin du chargement du fil GeoRSS, on zoome sur l'étendue des données (eventListerners).

<geoportal:map
  instance="map4"
  width="100%"
  defaultLayers="['ORTHOIMAGERY.ORTHOPHOTOS:WMSC','GEOGRAPHICALGRIDSYSTEMS.MAPS:WMSC']"
  defaultLayersOptions="{'GEOGRAPHICALGRIDSYSTEMS.MAPS:WMSC':{opacity:0.5}}"
  layerSwitcherMode="off"
  toolboxMode="mini"
  infoPanelMode="false"
>
<geoportal:georss
  name="GéoBretagne"
  url="ggUrl"
  originators="geobretagne"
  formatOptions="{size:new OpenLayers.Size(360,130)}"
  eventListeners="{'loadend':pfo}"
  visibility="true"
>
var ggUrl= 'http://geobretagne.fr/geonetwork/srv/fr/rss.latest?georss=simplepoint';
var geobretagne= [{
  logo:'geobretagne',
  pictureUrl:'http://www.geobretagne.fr/geobretagne-theme/images/logo_geobretagne.png',
  url: 'http://www.geobretagne.fr/'
}];
function pfo() {
  if (this.maxExtent) {
    this.map.zoomToExtent(this.maxExtent);
  }
}
</geoportal:georss>
</geoportal:map>



Carte complexe

Les codes précédents peuvent être utilisés tous ensemble !

Voir aussi

Le site des APIs du Géoportail apporte de nombreuses autres informations sur les interfaces et services offerts par l'Institut Géographique National.

Outils personnels