IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

IGN API Géoportail Discussion :

Nom d'un lieu à partir des coordonnées géographiques


Sujet :

IGN API Géoportail

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Consultant CRM
    Inscrit en
    Février 2022
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 70
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant CRM

    Informations forums :
    Inscription : Février 2022
    Messages : 9
    Points : 1
    Points
    1
    Par défaut Nom d'un lieu à partir des coordonnées géographiques
    Bonjour geoportail spécialistes,
    sur cette page :
    https://geoservices.ign.fr/documenta...ge-inverse-ogc
    il devrait y avoir les infos pour coder une appli qui permettrait de trouver un nom de lieu proche d'un point dont on renseignerait les coordonnées.
    Problème je ne comprends pas comment faire...
    Est-ce que l'un d'entre vous a la solution ?
    Merci
    Jacques

  2. #2
    Membre actif
    Homme Profil pro
    Architecte progiciel et développeur informatique
    Inscrit en
    Février 2011
    Messages
    228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte progiciel et développeur informatique

    Informations forums :
    Inscription : Février 2011
    Messages : 228
    Points : 286
    Points
    286
    Par défaut 2 exemples d'aide
    Bonjour Jacques,

    ces 2 exemples devraient pouvoir t'aider.

    Géocodage inverse simple
    https://geoservices.ign.fr/documenta...inverse-simple

    Géocodage inverse sur un rayon et paramètres
    https://geoservices.ign.fr/documenta...e-inverse-avec

    Regardes si ça peut t'aider dans ta recherche

    Xav

  3. #3
    Nouveau Candidat au Club
    Femme Profil pro
    Consultant CRM
    Inscrit en
    Février 2022
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 70
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant CRM

    Informations forums :
    Inscription : Février 2022
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    Salut Xavier,
    c'est exactement ce que je cherche à faire...
    mais quand j'essaye de faire tourner la moulinette j'obtiens ce message :
    ReferenceError: Gp is not defined

    J'ai mis la page test ici :
    https://www.bluehouse.fr/JB6/carnet-...st-geoportail/

    où est mon erreur ?
    Merci

  4. #4
    Nouveau Candidat au Club
    Femme Profil pro
    Consultant CRM
    Inscrit en
    Février 2022
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 70
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant CRM

    Informations forums :
    Inscription : Février 2022
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    J'avais oublié de télécharger la bibliothèque GpServices.js
    maintenant j'obtiens ce résultat :
    {"locations":[]}

  5. #5
    Membre actif
    Homme Profil pro
    Architecte progiciel et développeur informatique
    Inscrit en
    Février 2011
    Messages
    228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte progiciel et développeur informatique

    Informations forums :
    Inscription : Février 2011
    Messages : 228
    Points : 286
    Points
    286
    Par défaut
    Re Jacques,

    tu n'as pas chargé la librairie Géoservices.
    Si tu fais appelles à Gp.???, il faut que la librairie/ressource associée soit chargé dans ton <HEAD>

    Au minimum pour ta requête, il faut ajouter :
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    <script src="https://ignf.github.io/geoportal-access-lib/latest/dist/GpServices.js"></script>

    Sinon, à voir si tu as besoin de fonction plus complexe pour afficher des cartes avec le SDK ou l'Extension pour OpenLayers/Leaflet, pareil, tu auras besoin d'ajouter les librairies/ressources JS adéquates.

    Xav

  6. #6
    Membre actif
    Homme Profil pro
    Architecte progiciel et développeur informatique
    Inscrit en
    Février 2011
    Messages
    228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte progiciel et développeur informatique

    Informations forums :
    Inscription : Février 2011
    Messages : 228
    Points : 286
    Points
    286
    Par défaut
    Citation Envoyé par indyanajack Voir le message
    J'avais oublié de télécharger la bibliothèque GpServices.js
    maintenant j'obtiens ce résultat :
    {"locations":[]}
    Les coordonnées à saisir doivent être des coordonnées géographiques, avec un. (point) comme décimale.

    exemple :
    longitude : 5.717932
    latitude : 45.195689

  7. #7
    Nouveau Candidat au Club
    Femme Profil pro
    Consultant CRM
    Inscrit en
    Février 2022
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 70
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant CRM

    Informations forums :
    Inscription : Février 2022
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    Oups... j'avais inversé longitude et latitude dans mon code...
    Désolé si je t'ai fait perdre du temps avec mon impéritie...
    Merci en tous cas je vais pouvoir avancer...
    Jacques

  8. #8
    Nouveau Candidat au Club
    Femme Profil pro
    Consultant CRM
    Inscrit en
    Février 2022
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 70
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant CRM

    Informations forums :
    Inscription : Février 2022
    Messages : 9
    Points : 1
    Points
    1
    Par défaut geocodage inverse (suite)
    Bonjour,
    Quand je renseigne la fonction : GÉOCODAGE INVERSE AVEC PARAMÈTRES avec les coordonnées d'un point elle
    me retourne cela :

    {"lon":4.845515277,"lat":45.458731803},"matchType":null,"placeAttributes":{"postcode":[],"citycode":["84"],"city":[],"toponym":"Auvergne-Rhône-Alpes","extrafields":{"cleabs":"REGION__0000002150000552","names":["auvergne-rhône-alpes"]},"category":["administratif","région"],"distance":0},"type":"PositionOfInterest","accuracy":1,"CLASSNAME":"GeocodedLocation"},{"position":

    qui semble être le contenu d'un fichier JSON.
    J'ai intégré la fonction dans mon code. Le contenu du fichier JSON s'affiche dans mon code html avec : <div id="result"></div>.
    Comment puis-je récupérer le contenu du fichier JSON pour le traiter sous forme de variable et extraire les données qui m'intéressent (nom de lieu ou toponym) ?
    Merci
    Jacques
    Images attachées Images attachées  

  9. #9
    Membre actif
    Homme Profil pro
    Architecte progiciel et développeur informatique
    Inscrit en
    Février 2011
    Messages
    228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte progiciel et développeur informatique

    Informations forums :
    Inscription : Février 2011
    Messages : 228
    Points : 286
    Points
    286
    Par défaut
    Bonjour Jacques,

    je vois que personne t'a répondu et tu es toujours bloqué.
    En fait, ce traitement de données n'a plus rien à voir avec les requêtes IGN.
    C'est un traitement basique d'un tableau d'objets à faire en javascript.

    Je t'explique en dessous le principe que tu comprendras vite pour après faire ce que tu veux.
    Tu pourras ajouter des console.log si besoin pour tes tests.

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    //result est un tableau d'objets
    //le résultat des lieux trouvés se trouvent dans result.locations
    var locations = result.locations;
    //Il faut donc lire le contenu du tableau result.locations
    //Qui dit tableau, il peut y avoir plusieurs résultats si non vide
     
    //Nombre de lieux trouvés
    var nbResult = locations.length;
     
    //Pour parcourir un tableau tu as en javascript forEach (1 des possibilités)
    //https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach
    //Et après tu as l'objet avec plusieurs propriétés (string, array ou autres propriétés)
    if (nbResult) {
    	var textData = ""
    	textData += "nombre de lieux trouvés: " + nbResult + "<br>";
    	locations.forEach(function(lieu, index) {
    		var toponym = lieu.placeAttributes.toponym;
    		var positionlon = lieu.position.lon;
    		var positionlat = lieu.position.lat;
    		textData += "lieu" + index + " : toponym (" + toponym + "), position (lon: " + positionlon + ", lat: " + positionlat + ")<br>";
    		resultDataDiv.innerHTML = "<p>" + textData + "</p>";
    	})
    }

    Egalement l'exemple IGN modifié pour afficher quelques données.

    J'espère que ça répond à ta question.

    Xav

  10. #10
    Nouveau Candidat au Club
    Femme Profil pro
    Consultant CRM
    Inscrit en
    Février 2022
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 70
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant CRM

    Informations forums :
    Inscription : Février 2022
    Messages : 9
    Points : 1
    Points
    1
    Par défaut geocodage inverse (suite)
    Salut Xav,
    merci pour ta réponse. Je peux récupérer les données qui m'intéressent en javascript en traitant le fichier json.
    Maintenant je me heurte à un autre problème : je développe mon application sous wp. Actuellement les données de localisation (longitude et latitude du point) sont transmises au script js via un formulaire. J'aimerais transmettre ces données sans passer par le formulaire car elles sont générées par mon code php. Après il faudra également que je récupère le résultat de la recherche (result) dans mon code php pour pouvoir l'utiliser.
    Comment dois-je m'y prendre ?
    Jacques

  11. #11
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    regardez là :
    https://geoservices.ign.fr/documenta...verse-ogc#1780

    si vous avez besoin d'aide pour cela, il vaut mieux créer une nouvelle discussion dans le forum wordpress
    https://www.developpez.net/forums/f1...api/wordpress/

  12. #12
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2009
    Messages
    868
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Avril 2009
    Messages : 868
    Points : 371
    Points
    371
    Par défaut Attention !

  13. #13
    Nouveau Candidat au Club
    Femme Profil pro
    Consultant CRM
    Inscrit en
    Février 2022
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 70
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant CRM

    Informations forums :
    Inscription : Février 2022
    Messages : 9
    Points : 1
    Points
    1
    Par défaut suite
    Citation Envoyé par saxrub Voir le message
    Bonjour saxrub,
    j'ai donc essayé avec la solution préférée. Ça marche, je récupère bien un fichier json ans mon code php mais je n'arrive pas à récupérer la valeur associée à la donnée "city"
    Voici le json retourné par l'appli :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    {
      "type": "FeatureCollection",
      "features": [
        {
          "type": "Feature",
          "properties": {
            "id": "38395_0022_00002",
            "type": "housenumber",
            "score": 0.9341957228074567,
            "housenumber": "2",
            "street": "Chemin de la Chapelle",
            "name": "2 Chemin de la Chapelle",
            "postcode": "38660",
            "citycode": "38395",
            "city": "Plateau-des-Petites-Roches",
            "oldcitycode": "38395",
            "oldcity": "Saint-Hilaire",
            "context": "38, Isère, Auvergne-Rhône-Alpes",
            "label": "2 Chemin de la Chapelle 38660 Plateau-des-Petites-Roches",
            "x": 926249.9,
            "y": 6471975.57,
            "importance": 0.40319,
            "_score": 0.9341957228074567,
            "distance": 231.67154397,
            "_type": "ban"
          },
          "geometry": {
            "type": "Point",
            "coordinates": [
              5.887829,
              45.309911
            ]
          }
        }
      ]
    }
    j'aimerais récupérer la valeur "Plateau des petites roches" associée à la donnée "city".
    si je fais :
    ça retourne : FeatureCollection mais je n'arrive pas à aller plus loin.
    Une solution ?
    Merci

  14. #14
    Membre actif
    Homme Profil pro
    Architecte progiciel et développeur informatique
    Inscrit en
    Février 2011
    Messages
    228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte progiciel et développeur informatique

    Informations forums :
    Inscription : Février 2011
    Messages : 228
    Points : 286
    Points
    286
    Par défaut
    Bonjour Jacques,

    Je confirme que je prône les mérites de l'API 2.0 depuis le début, même si c'est une béta, et qu'il y a encore quelques manquements.
    Mais c'est vraiment ce qu'il y a de mieux actuellement.

    Ok, cette fois tu es en PHP, je t'avais répondu pour du javascript, mais c'est pareil.

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    //Tu dois parcourir le tableau $json->features
    //$json->features est un tableau de tes réponses avec différentes propriétés string ou encore tableau
    //Tu as 2 propriétés dans ce feature ou ces features que tu auras en réponse de ta requête :
    //* properties
    //* geometry
     
    foreach ($json->features as $index => $feature){
    	$num_index = $index + 1; //Numéro de la réponse // la 1ère réponse dans un tableau est toujours 0
     
    	//On récupère le nom de la ville dans la propriétés 'properties'
    	$city = $feature->properties->city;
     
    	//On récupère également les coordinates géographiques dans la propriétés 'geometry', qui est aussi un tableau avec 2 valeurs
    	$coordLon = $feature->geometry->coordinates[0]; //Coordonnées géographique (°) longitude
    	$coordLat = $feature->geometry->coordinates[1]; //Coordonnées géographique (°) latitude
     
    	echo "ville trouvée (".$num_index.") : ".$city." - lon : ".$coordLon.", lat : ".$coordLat;
    }

    Voilà, je te laisse tester, et avec ce petit code tu devrais comprendre et pouvoir exploiter ce que tu souhaites comme données dans ton json.
    Je préfère parcourir le tableau avec un foreach même s'il y a qu'une réponse, au moins ça fonctionnera dans tous les cas.

    Xav

  15. #15
    Nouveau Candidat au Club
    Femme Profil pro
    Consultant CRM
    Inscrit en
    Février 2022
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 70
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant CRM

    Informations forums :
    Inscription : Février 2022
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    Merci Xav,
    j'y suis presque !
    sauf que j'ai modifié un paramètre de la requête. J'ai passé l'argument adresse à poi ce qui fait que cela me génère un fichier json un peu différent et le code que tu m'as donné ne fonctionne plus.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    {
      "type": "FeatureCollection",
      "features": [
        {
          "type": "Feature",
          "properties": {
            "postcode": [
              "73800"
            ],
            "citycode": [
              "73276",
              "73"
            ],
            "city": [
              "saint-pierre-de-soucy"
            ],
            "toponym": "Saint-Pierre-de-Soucy",
            "extrafields": {
              "population": 415,
              "status": "",
              "cleabs": "COMMUNE_0000000009752988",
              "names": [
                "saint-pierre-de-soucy"
              ]
            },
            "category": [
              "administratif",
              "commune"
            ],
            "_score": 1,
            "distance": 0,
            "_type": "poi"
          },
          "geometry": {
            "type": "Point",
            "coordinates": [
              6.106838383,
              45.494891374
            ]
          }
        }
      ]
    }
    Ça retourne : Notice: Array to string conversion
    J'ai bien essayé de modifier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $city = $feature->properties->city;
    je vois bien que la structure des fichiers json est différentes mais je ne comprends pas ce qu'il faut modifier dans le code pour que cela fonctionne avec le nouveau fichier.
    J'espère que tu ne perds pas trop de temps avec mes problèmes...

  16. #16
    Membre actif
    Homme Profil pro
    Architecte progiciel et développeur informatique
    Inscrit en
    Février 2011
    Messages
    228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte progiciel et développeur informatique

    Informations forums :
    Inscription : Février 2011
    Messages : 228
    Points : 286
    Points
    286
    Par défaut
    Re,

    c'est jusque cette fois que la propriétés 'city' est retournée dans un tableau (array avec des [ ]) et pas une chaine (string).
    Dans city, il y aura toujours qu'une seule réponse dans le tableau.

    Tu peux donc tout simplement faire :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $city = $feature->properties->city[0];
    [0] étant le 1er tableau de city.

    Voilà, ça devrait fonctionner.

    Je te suggère de regarder sur un tuto ou w3schools comment fonctionne les objets (json) ou les tableaux en PHP pour comprendre le fonctionnement. ;-)

    Xav

  17. #17
    Nouveau Candidat au Club
    Femme Profil pro
    Consultant CRM
    Inscrit en
    Février 2022
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 70
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant CRM

    Informations forums :
    Inscription : Février 2022
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    Cool ça marche au poil !
    Thanks!
    j'ai bien commencé par aller sur w3schools c'est ma bible, mais là, sur les structures de json j'ai un peu de mal...
    Merci pour ton aide.
    Je développe une application pour le parapente et j'ai besoin de récupérer les noms des lieux que je survole en partant des coordonnées de mon GPS.
    Ça fonctionne...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Dessiner un cercle avec des coordonnées géographiques
    Par giloutho dans le forum Mathématiques
    Réponses: 17
    Dernier message: 14/10/2010, 12h05
  2. [Débutant] transformation des coordonnées géographique en plane
    Par pajaros dans le forum Images
    Réponses: 1
    Dernier message: 25/05/2010, 12h19
  3. Trouver une ou des cellules a partir des coordonnées
    Par Anduriel dans le forum VB.NET
    Réponses: 0
    Dernier message: 19/02/2010, 22h21
  4. Réponses: 4
    Dernier message: 06/06/2007, 12h16
  5. Une infobulle à partir des coordonnées sur une image
    Par dark_vidor dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 28/01/2006, 21h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo