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 :

Gestion altitude couche edition


Sujet :

IGN API Géoportail

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 53
    Points : 43
    Points
    43
    Par défaut Gestion altitude couche edition
    Bonjour,
    J'utilise une couche d'édition pour modifier une trace GPX (Merci mga_geo !) cela fonctionne mais j'ai un problème concernant les altitudes.
    Lorsque je fais glisser un point de ma trace, il conserve son altitude d'origine, comment le forcer a mettre a jour son altitude ?
    Par habitude J'utilise http://api.geonames.org/ pour récupérer les altitudes mais s'il y a une autre solution plus "clean" je suis preneur.
    Merci d'avance

  2. #2
    Membre habitué
    Homme Profil pro
    Inscrit en
    Février 2010
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 141
    Points : 156
    Points
    156
    Par défaut
    Citation Envoyé par superpoi Voir le message
    Par habitude J'utilise http://api.geonames.org/ pour récupérer les altitudes mais s'il y a une autre solution plus "clean" je suis preneur.
    Merci d'avance
    Bonjour,

    peut-être pourras-tu adapter le code suivant :

    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
    function GetAlti()
    {
       if (!isNaN(parseFloat(document.getElementById("lat").value)) && !isNaN(parseFloat(document.getElementById("lng").value)))
       {
          var req = new OpenLayers.Request.GET({
             url: "http://wxs.ign.fr/<clé IGN>/alti/rest/elevation.json?lon=" + document.getElementById("lng").value + "&lat=" + document.getElementById("lat").value + "&zonly=true",
             async: false
          });
          if ((req.status >= 200) && (req.status < 300))
          {
             var objAlti = eval('(' + req.responseText + ')');
             if (objAlti != null)
             {
                if (typeof(objAlti.elevations) != "undefined")
                {
                   document.getElementById("alti").value = Math.round(objAlti.elevations[0]);
                   return;
                }
             }
          }
          alert('Altitude inconnue.');
       }
    }

  3. #3
    Membre chevronné Avatar de gcebelieu
    Homme Profil pro
    Ingénieur Géographe et Cartographe
    Inscrit en
    Novembre 2010
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Géographe et Cartographe
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2010
    Messages : 1 106
    Points : 1 843
    Points
    1 843
    Par défaut
    Bonjour,

    pour compléter la réponse de betechsud :

    1. l'url qu'il fournit est celle du service d'altimétrie du Géoportail. Il faut que votre clef d'accès au Géoportail ait les droits sur la ressource correspondante ("alticodage").


    2. L'API Géoportail propose une classe permettant de gérer l'accès au service d'alti Geoportal.Control.Measure.ElevationRequest. Dont l'utilisation est en gros la suivante (si on reprend le code fourni) :

    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
    function GetAlti(lat,lng)
    {
        var elevRequest= new Geoportal.Control.Measure.ElevationRequest({
             url : "http://wxs.ign.fr/<clé IGN>/alti/rest/elevation.xml",
             mode: "json-p",
             scope: {} ,
             success: function (elevations) {
                // fonction qui traite les résultats (elevations est le tableau des altitudes récupérées : une altitude par lon,lat envoyé)
                console.log(elevations) ;
             }
             failure : function (resp) {
                 // fonction appelée en cas d'erreur
                 console.log(resp) ;
             }
         }) ;
        elevRequest.getElevation([new OpenLayers.LonLat(lng,lat)]) ;
    }
    Cela permet de masquer l'utilisation du protocole JSONP d'accès au service si on ne veut pas avoir de problèmes de crossdomain lié à l'utilisation de requêtes AJAX.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 53
    Points : 43
    Points
    43
    Par défaut evt deplacement de point
    Bonjour,
    Merci pour vos réponses, je vais essayer la méthode que vous proposez pour récupérer l'altitude.
    Mais avant, mon problème bloquant est qu'il faut que j'intercepte l’événement de l'utilisateur qui déplace un point et a ce moment la j'appelle ma fonction de récupération de l'altitude et met a jour le point de la trace avec le nouvelle altitude.
    Et pour faire tout ça je patauge un peu ...
    Merci d'avance

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 53
    Points : 43
    Points
    43
    Par défaut afterfeaturemodified
    Bonjour,
    J'ai un peu avancé sur mon problème, si j'ai bien compris la doc, pour avoir la liste des points modifiés, je pourrai utiliser l’événement "afterfeaturemodified".
    Je pourrai alors appeler une fonction qui calculerai l'altitude de ces points : "afterfeaturemodified": modifiedfeature
    Mon problème est comment récupérer l'objet contenant la feature modifiée :
    Extrait de la doc :
    afterfeaturemodified Triggered when a feature is finished being modified. Listeners will receive an object with a feature property referencing the modified feature.
    Merci d'avance

Discussions similaires

  1. zindex dans la gestion des couches (Encore!)
    Par cmail dans le forum IGN API Géoportail
    Réponses: 10
    Dernier message: 05/06/2014, 17h45
  2. Gestion des Makefile [EDIT]
    Par ArnSpin dans le forum Systèmes de compilation
    Réponses: 1
    Dernier message: 26/04/2010, 10h10
  3. Gestion affichage couche (bêta 1.05)
    Par Unusual dans le forum IGN API Géoportail
    Réponses: 5
    Dernier message: 09/04/2010, 19h14
  4. [Data] Gestion des couches avec Spring
    Par Jacobian dans le forum Spring
    Réponses: 3
    Dernier message: 08/06/2008, 22h03
  5. gestion des couches présentation et session
    Par youp_db dans le forum Développement
    Réponses: 1
    Dernier message: 19/04/2007, 17h10

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