{"id":20515529,"url":"https://github.com/ignf/geoportal-access-lib","last_synced_at":"2025-04-06T11:09:29.087Z","repository":{"id":3859245,"uuid":"51141813","full_name":"IGNF/geoportal-access-lib","owner":"IGNF","description":"French Geoportal resources access library","archived":false,"fork":false,"pushed_at":"2024-12-19T15:32:05.000Z","size":53648,"stargazers_count":25,"open_issues_count":4,"forks_count":12,"subscribers_count":17,"default_branch":"develop","last_synced_at":"2025-03-30T10:09:44.322Z","etag":null,"topics":["geoportail","services"],"latest_commit_sha":null,"homepage":"https://ignf.github.io/geoportal-access-lib/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/IGNF.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-02-05T11:02:58.000Z","updated_at":"2024-12-19T15:29:44.000Z","dependencies_parsed_at":"2023-07-06T17:01:00.185Z","dependency_job_id":"462ff225-e3db-4505-b630-f2f5ebceea3e","html_url":"https://github.com/IGNF/geoportal-access-lib","commit_stats":{"total_commits":357,"total_committers":17,"mean_commits":21.0,"dds":0.7170868347338936,"last_synced_commit":"e72e037cf05693028c779a29389d1d8228dc84db"},"previous_names":[],"tags_count":42,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IGNF%2Fgeoportal-access-lib","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IGNF%2Fgeoportal-access-lib/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IGNF%2Fgeoportal-access-lib/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IGNF%2Fgeoportal-access-lib/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/IGNF","download_url":"https://codeload.github.com/IGNF/geoportal-access-lib/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247471521,"owners_count":20944158,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["geoportail","services"],"created_at":"2024-11-15T21:22:34.756Z","updated_at":"2025-04-06T11:09:29.065Z","avatar_url":"https://github.com/IGNF.png","language":"JavaScript","readme":"# Bibliothèque d'accès aux services Géoplateforme\n\n[![Build](https://github.com/IGNF/geoportal-access-lib/actions/workflows/build.yml/badge.svg)](https://github.com/IGNF/geoportal-access-lib/actions/workflows/build.yml)\n[![GitHub release](https://img.shields.io/github/release/IGNF/geoportal-access-lib.svg)](https://github.com/IGNF/geoportal-access-lib)\n[![DeepScan grade](https://deepscan.io/api/teams/12425/projects/15468/branches/309615/badge/grade.svg)](https://deepscan.io/dashboard#view=project\u0026tid=12425\u0026pid=15468\u0026bid=309615)\n\n\u003ca name=\"readme-top\"\u003e\u003c/a\u003e\n\nLa bibliothèque d’accès aux services Géoplateforme est une bibliothèque de fonctions javascript permettant d'accéder aux ressources délivrées par les services web de la Géoplateforme.\n\nElle permet plus particulièrement d'effectuer les opérations suivantes :\n\n* [Géocoder des adresses, toponymes et parcelles cadastrales](#geocode)\n\n* [Obtenir des suggestions d'adresses ou de toponymes à partir de textes incomplets](#autocomplete)\n\n* [Obtenir des localisants (toponymes, adresses, parcelles cadastrales) proche d'une position donnée (géocodage inverse)](#reverseGeocode)\n\n* [Obtenir des altitudes en un ou plusieurs points ou calculer des profils altimétriques](#alti)\n\n* [Calculer un itinéraire piéton ou routier](#route)\n\n* [Calculer des isochrones / isodistances autour d'un point](#isoCurve)\n\n* [Obtenir des informations relatives à un contrat d'accès au Géoportail](#getConfig)\n\n## Mise en oeuvre\n\nVous pouvez récupérer la bibliothèque d'accès soit en la [téléchargeant directement](#t%C3%A9l%C3%A9chargement-direct), soit en utilisant le [gestionnaire de dépendances javascript NPM](#r%C3%A9cup%C3%A9ration-avec-npm).\n\nUne documentation technique (jsdoc) et un testeur sont disponibles [ici](https://ignf.github.io/geoportal-access-lib/).\n\n### Téléchargement direct\n\nVous pouvez récupérer ici la version compilée et autonome de la bibliothèque d'accès : [GpServices.js](https://github.com/IGNF/geoportal-access-lib/releases/latest), dans la partie \"Downloads\".\n\n### Récupération avec NPM\n\nLa bibliothèque d'accès est aussi disponible dans les dépôts [NPM](https://www.npmjs.com/package/geoportal-access-lib).\n\nPrérequis : [NodeJS](https://nodejs.org/en/) et [npm](https://www.npmjs.com/) installés.\n\n``` bash\nnpm install geoportal-access-lib\n```\n\n#### Accès direct\n\nVous pouvez aussi choisir d'utiliser des fichiers hébergés en ligne, pour y accéder directement, lors de vos tests par exemple. Cependant, pour une utilisation en production, nous vous conseillons de télécharger ces fichiers et de les héberger vous-même, sur le même serveur qui héberge votre application.\n\nPar exemple sur Github Pages :\n\n```\nhttps://ignf.github.io/geoportal-access-lib/latest/dist/GpServices.js\nhttps://ignf.github.io/geoportal-access-lib/latest/dist/GpServices-src.js\n```\n\n### Intégration dans une page web\n\nIntégrez la bibliothèque d'accès dans votre page WEB classiquement à l'aide d'une balise **script**.\n\n``` html\n\u003cscript src=\"chemin/vers/GpServices.js\"\u003e\u003c/script\u003e\n```\n\n### Intégration dans [NodeJS](https://nodejs.org/en/)\n\nIntégrez la bibliothèque d'accès dans votre script à l'aide de la fonction **require**.\n\n``` js\nvar Gp = require(\"chemin/vers/GpServices.js\");\n```\n\n\u003e **Note :**\nPar défaut, les services sont intérrogés en HTTP. On a la possibilité de forcer le HTTPS avec l'option **ssl**. Ce comportement est ignoré dans les environnements clients (navigateur). Les services sont alors interrogés suivant le même protocole que la page en cours.\n\n``` js\nvar Gp = require(\"chemin/vers/GpServices.js\");\n\nGp.Services.geocode({\n    ssl : true,\n    location : \"...\",\n    onSuccess : function (result) {\n        ...\n    }\n});\n// --\u003e https://wxs.ign.fr/KEY/geoportail/ols?\n```\n\n\u003e **Note :**\nDans un environnement **NodeJS**, il faut installer les 2 dépendances suivantes dans votre projet :\n- xmldom\n- request\n\n### Intégration dans un module ES6\n\nIntégrez la bibliothèque d'accès dans votre page WEB à l'aide d'une balise **script** de type *module*.\n\n``` html\n\u003cscript type=\"module\"\u003e\n    import * as Gp from \"chemin/vers/GpServices.js\";\n    // puis, utilisation de la variable globale 'Gp' dans le module ES6...\n\u003c/script\u003e\n```\n\n### Intégration dans un front-end type Angular ou React\n\nIntégrez la bibliothèque d'accès dans votre module à l'aide de la fonction **import**.\n\n``` js\nimport * as Gp from \"chemin/vers/GpServices.js\";\n```\n\n\u003e **Note :**\nDans un environnement **Front-End**, il faut installer les 2 dépendances suivantes dans votre projet :\n- xmldom\n- request\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n## Utilisation\n\nLe chargement de la bibliothèque d'accès vous donne accès au namespace [Gp.Services](http://ignf.github.io/geoportal-access-lib/latest/jsdoc/module-Services.html) à partir duquel vous pouvez utiliser les différentes fonctions proposées.\n\n\u003ca id=\"geocode\"/\u003e\n\n### Géocoder des adresses, toponymes et parcelles cadastrales\n\nLa fonction [Gp.Services.geocode](http://ignf.github.io/geoportal-access-lib/latest/jsdoc/module-Services.html#~geocode) permet d'utiliser le service de géocodage de la plateforme Géoportail pour obtenir la position d'un toponyme, d'une adresse ou d'une parcelle cadastrale. Elle prend en paramètres :\n\n* le **localisant** dont on veut obtenir les coordonnées ;\n\n* le **type de localisant** : adresse (\"StreetAddress\"), toponyme (\"PositionOfInterest\") ou parcelle cadastrale (\"CadastralParcel\"). Choix multiple possible. Par défaut les adresses seront utilisées.\n\n* d'autres paramètres éventuels à passer au service...\n\n* la **fonction de traitement des résultats** qui sera appelée lorsqu'ils seront reçus. Cette fonction prend en paramètres un objet de type : [Gp.Services.GeocodeResponse](http://ignf.github.io/geoportal-access-lib/latest/jsdoc/Gp.Services.GeocodeResponse.html).\n\n\n``` javascript\nGp.Services.geocode({\n    location : \"tour eiffel\",            // localisant à géocoder\n    filterOptions : {\n        type : [\"PositionOfInterest\"]    // type de localisant\n    },\n    onSuccess : function (result) {\n        // exploitation des resultats : \"result\" est de type Gp.Services.GeocodeResponse\n        ...\n    }\n\n});\n```\n\n**Exemple d'utilisation** [![jsFiddle](http://jsfiddle.net/img/embeddable/logo-dark.png)](http://jsfiddle.net/ignfgeoportail/saye4oaz/embedded/result,js,html,css/)\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003ca id=\"autocomplete\"/\u003e\n\n### Obtenir des suggestions d'adresses ou de toponymes à partir de textes incomplets\n\nLa fonction [Gp.Services.autoComplete](http://ignf.github.io/geoportal-access-lib/latest/jsdoc/module-Services.html#~autoComplete) permet d'utiliser le service d'autocomplétion de la Géoplateforme pour obtenir des suggestions de loclalisants (toponyme ou adresse) à partir d'un texte incomplet. Elle prend en paramètres :\n\n* le **texte** pour lequel on souhaite obtenir des suggestions\n\n* le **type de localisant** : adresse (\"StreetAddress\") ou toponyme (\"PositionOfInterest\"). Choix multiple possible. Par défaut les adresses seront utilisées.\n\n* d'autres paramètres éventuels à passer au service...\n\n* la **fonction de traitement des résultats** qui sera appelée lorsqu'ils seront reçus. Cette fonction prend en paramètres un objet de type : [Gp.Services.AutoCompleteResponse](http://ignf.github.io/geoportal-access-lib/latest/jsdoc/Gp.Services.AutoCompleteResponse.html).\n\n\n``` javascript\nGp.Services.autoComplete({\n    text : \"23 rue des et\",              // texte à compléter\n    filterOptions : {\n        type : [\"StreetAddress\"]         // type de texte\n    },\n    onSuccess : function (result) {\n        // exploitation des resultats : \"result\" est de type Gp.Services.AutoCompleteResponse\n        ...\n    }\n\n});\n```\n\n**Exemple d'utilisation** [![jsFiddle](http://jsfiddle.net/img/embeddable/logo-dark.png)](http://jsfiddle.net/ignfgeoportail/jsjqk4wq/embedded/result,js,html,css/)\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003ca id=\"reverseGeocode\"/\u003e\n\n### Obtenir des localisants (toponymes, adresses, parcelles cadastrales) proches d'une position donnée (géocodage inverse)\n\nLa fonction [Gp.Services.reverseGeocode](http://ignf.github.io/geoportal-access-lib/latest/jsdoc/module-Services.html#~reverseGeocode) permet d'utiliser le service de géocodage inverse de la plateforme Géoportail pour trouver des toponymes, adresses ou parcelles cadastrales proches d'une position donnée. Elle prend en paramètres :\n\n* une **position** donnée\n\n* le **type de localisant** : adresse (\"StreetAddress\"), toponyme (\"PositionOfInterest\") ou parcelle cadastrale (\"CadastralParcel\"). Choix multiple possible. Par défaut les adresses seront utilisées.\n\n* d'autres paramètres éventuels à passer au service...\n\n* la **fonction de traitement des résultats** qui sera appelée lorsqu'ils seront reçus. Cette fonction prend en paramètres un objet de type : [Gp.Services.GeocodeResponse](http://ignf.github.io/geoportal-access-lib/latest/jsdoc/Gp.Services.GeocodeResponse.html).\n\n\n``` javascript\nGp.Services.reverseGeocode({\n    position : {                         // position de recherche\n      x: 2.29,\n      y: 48.85\n    },\n    filterOptions : {\n        type : [\"PositionOfInterest\"]    // type de localisant\n    },\n    onSuccess : function (result) {\n        // exploitation des resultats : \"result\" est de type Gp.Services.ReverseGeocodeResponse\n        ...\n    }\n\n});\n```\n\n**Exemple d'utilisation** [![jsFiddle](http://jsfiddle.net/img/embeddable/logo-dark.png)](http://jsfiddle.net/ignfgeoportail/4t0wfey5/embedded/result,js,html,css/)\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003ca id=\"alti\"/\u003e\n\n### Obtenir des altitudes en un ou plusieurs points ou calculer des profils altimétriques\n\nLa fonction [Gp.Services.getAltitude()](http://ignf.github.io/geoportal-access-lib/latest/jsdoc/module-Services.html#~getAltitude) permet d'utiliser le service d'altimétrie de la plateforme Géoportail pour obtenir les altitudes de une ou plusieurs positions données ou calculer un profil altimétrique le long d'une liste de positions. Elle prend en paramètres :\n\n* une **liste de positions** données\n\n* un éventuel paramètre (sampling) indiquant le **nombre de points intermédiaires** à utiliser dans le cas du calcul d'un profil altimétrique.\n\n* d'autres paramètres éventuels à passer au service...\n\n* la **fonction de traitement des résultats** qui sera appelée lorsqu'ils seront reçus. Cette fonction prend en paramètres un objet de type : [Gp.Services.AltiResponse](http://ignf.github.io/geoportal-access-lib/latest/jsdoc/Gp.Services.AltiResponse.html).\n\n\n``` javascript\nGp.Services.getAltitude({\n    positions : [                        // positions pour le calcul alti\n        { lon: 2.29, lat: 48.85 },      \n        { lon: 2.3, lat: 48.9 },\n        { lon: 2.4, lat: 49 }\n    ],\n    sampling : 50,                      // nombre de points pour le profil\n    onSuccess : function (result) {\n        // exploitation des resultats : \"result\" est de type Gp.Services.AltiResponse\n        ...\n    }\n});\n```\n\n**Exemple d'utilisation** [![jsFiddle](http://jsfiddle.net/img/embeddable/logo-dark.png)](http://jsfiddle.net/ignfgeoportail/owxffaf3/embedded/result,js,html,css/)\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003ca id=\"route\"/\u003e\n\n### Calculer un itinéraire piéton ou routier\n\nLa fonction [Gp.Services.route()](http://ignf.github.io/geoportal-access-lib/latest/jsdoc/module-Services.html#~route) permet d'utiliser le service de calcul d'itinéraires de la plateforme Géoportail. Elle prend en paramètres :\n\n* des **points de départ, d'arrivée** et éventuellement **intermédiaires**.\n\n* le **graphe** utilisé pour le calcul correspondant au profil de véhicule (piéton ou routier)\n\n* la **ressource** utilisée pour le calcul d'itinéraire (bdtopo-osrm ou bdtopo-pgr)\n\n* d'autres paramètres éventuels à passer au service...\n\n* la **fonction de traitement des résultats** qui sera appelée lorsqu'ils seront reçus. Cette fonction prend en paramètres un objet de type : [Gp.Services.RouteResponse](http://ignf.github.io/geoportal-access-lib/latest/jsdoc/Gp.Services.RouteResponse.html).\n\n\n``` javascript\nGp.Services.route({\n    startPoint : { x: 2, y: 45},       // point de départ\n    viaPoints : [                        // points intermédiaires\n        { x: 3, y: 46 },      \n        { x: 3.5, y: 46 }\n    ],\n    endPoint : { x: 4, y: 47},          // point d'arrivée\n    graph : \"Voiture\",                 // grapĥe utilisé\n    resource : \"bdtopo-osrm\",              //ressource utilisée\n    onSuccess : function (result) {\n        // exploitation des resultats : \"result\" est de type Gp.Services.RouteResponse\n        ...\n    }\n});\n```\n\n**Exemple d'utilisation** [![jsFiddle](http://jsfiddle.net/img/embeddable/logo-dark.png)](http://jsfiddle.net/ignfgeoportail/prvrjd93/embedded/result,js,html,css/)\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003ca id=\"isoCurve\"/\u003e\n\n### Calculer des isochrones / isodistances autour d'un point\n\nLa fonction [Gp.Services.isoCurve()](http://ignf.github.io/geoportal-access-lib/latest/jsdoc/module-Services.html#~isoCurve) permet d'utiliser le service de calcul d'isochrones / isodistances de la plateforme Géoportail. Elle prend en paramètres :\n\n* une **position de référence** (départ ou arrivée) pour le calcul.\n\n* la **limite de temps ou distance** pour le calcul.\n\n* le **type de calcul** (isochrone ou isodistance).\n\n* le **graphe** utilisé pour le calcul correspondant au profil de véhicule (piéton ou routier)\n\n* la **ressource** utilisée pour le calcul d'isochrone (valhalla ou bdtopo-iso)\n\n* d'autres paramètres éventuels à passer au service...\n\n* la **fonction de traitement des résultats** qui sera appelée lorsqu'ils seront reçus. Cette fonction prend en paramètres un objet de type : [Gp.Services.IsoCurveResponse](http://ignf.github.io/geoportal-access-lib/latest/jsdoc/Gp.Services.IsoCurveResponse.html).\n\n\n``` javascript\nGp.Services.isoCurve({\n    position : { x: 2, y: 45},       // point de référence\n    method : \"time\",                   // méthode de calcul (isochrone)\n    time : 1000,                       // limite de temps (isochrone)\n    graph : \"Pieton\",                 // grapĥe utilisé\n    resource : \"valhalla\",              //ressource utilisée\n    onSuccess : function (result) {\n        // exploitation des resultats : \"result\" est de type Gp.Services.IsoCurveResponse\n        ...\n    }\n});\n```\n\n**Exemple d'utilisation** [![jsFiddle](http://jsfiddle.net/img/embeddable/logo-dark.png)](http://jsfiddle.net/ignfgeoportail/x1hcak86/embedded/result,js,html,css/)\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003ca id=\"getConfig\"/\u003e\n\n## Obtenir des informations relatives à un contrat d'accès au Géoportail\n\nLa fonction [Gp.Services.getConfig()](http://ignf.github.io/geoportal-access-lib/latest/jsdoc/module-Services.html#~getConfig) permet de consulter les ressources disponibles pour une thématique Géoplateforme et d'avoir les paramètres permettant leur utilisation. Elle prend en paramètres :\n\n* une (ou plusieurs) **thématiques Geoplateforme** obtenue sur le site [geoservices.ign.fr](https://geoservices.ign.fr/services-web) dont on veut consulter les droits.\n\n* d'autres paramètres éventuels à passer au service...\n\n* la **fonction de traitement des résultats** qui sera appelée lorsqu'ils seront reçus. Cette fonction prend en paramètres un objet de type : [Gp.Services.GetConfigResponse](http://ignf.github.io/geoportal-access-lib/latest/jsdoc/Gp.Services.GetConfigResponse.html). Les informations portées par cet objet sont aussi enregistrées en variable globale de l'application sous le nom : Gp.Config.\n\n\n``` javascript\nGp.Services.getConfig({\n    apiKey : \"carte\", // clef d'accès à la plateforme\n    onSuccess : function (result) {\n        // exploitation des resultats : \"result\" est de type Gp.Services.GetConfigResponse\n        ...\n    }\n});\n```\n\n**Exemple d'utilisation** [![jsFiddle](http://jsfiddle.net/img/embeddable/logo-dark.png)](http://jsfiddle.net/ignfgeoportail/0hsanbv2/embedded/result,js,html,css/)\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fignf%2Fgeoportal-access-lib","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fignf%2Fgeoportal-access-lib","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fignf%2Fgeoportal-access-lib/lists"}