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 :

Probleme affichage fichier KML


Sujet :

IGN API Géoportail

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2012
    Messages : 11
    Points : 5
    Points
    5
    Par défaut Probleme affichage fichier KML
    Bonjour
    Après avoir développé pas mal d'outils sur l'API Google Maps j'ai du me pencher récemment sur l'API Geoportail.

    Mon besoin est assez simple puisqu'il s'agit dans un premier temps d'afficher un tracé à partir d'un fichier KML fourni en WGS84.

    J'ai actuellement environ 300 fichiers kml qui s'affichent sans probleme dans la majorité des cas. Mais pour certains de ces fichiers le tracé ne se place pas au bon endroit.

    par exemple un tracé qui devrait apparaitre pret d'Angoulème se trouve dans les Pyrénées pret de saint lary soulan.

    Je n'arrive pas à trouver d'explication cohérente ou de différence entre les KML qui se chargent au bon endroit et ceux qui ne se chargent pas au bon endroit.

    Voici mon code pour le chargement du KML :

    kmlLayer=VIEWER.getMap().addLayer(
    "KML",
    "tracé",
    "kl/"+nom,
    {
    visibility:true,
    opacity:1,
    projection:"EPSG:4326",
    eventListeners:{
    "loadend":function(){
    if(this.maxExtent){
    this.map.zoomToExtent(this.maxExtent);
    this.setVisibility(true);
    }
    }
    }
    }

    Le pire c'est que le code dans le listener "loadend" fonctionne parfaitement. la carte se positionne bien la ou le tracé devrait apparaitre.

    Le problème continu lorsque j'essai d'afficher un marqueur sur ce tracé. le marqueur s'affiche au bon endroit lorsque le KML s'affiche au bon endroit. Il part en Afrique quand le KML part dans les pyrénées.

    voici le code pour l'affichage du marqueur :

    var position = new OpenLayers.Geometry.Point(lon,lat);
    var projWGS84=new OpenLayers.Projection("EPSG:4326");
    position.transform(projWGS84, VIEWER.projection);
    var style = {externalGraphic:'../images/mark.png', graphicWidth:17, graphicHeight:28,graphicYOffset:-28 };
    var pt = new OpenLayers.Feature.Vector(position, null, style);
    var markLayer = new OpenLayers.Layer.Vector('marqueur');
    markLayer.addFeatures([pt]);
    VIEWER.getMap().addLayer(markLayer);

    Bien entendu j'ai vérifié les KML qui posent probleme sur Geoportail. Ils sont tout à fait conformes. d'ailleurs mon script GoogleMaps pour ces memes KML ne pose aucun probleme.

    Quelqu'un pourrait il m'aiguiller? A ce stade je ne vois pas du tout vers ou chercher. J'ai essayé de trafiquer les projections mais ça n'a rien donné.

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    2 128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 2 128
    Points : 1 764
    Points
    1 764
    Par défaut Mme Irma on vous demande !
    Sans url pour voir, il est difficile d'aider ...
    Dans les pistes à explorer, il y a l'encodage qui n'est pas conforme.
    Et il y a des validateurs "online" http://kmlvalidator.com/home.htm

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2012
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    merci pour le lien je vais aller regarder ça.

    Je ne peux pas fournir de lien vers le site dans l'immédiat.
    mais voici un des kml qui fonctionne mal :

    <?xml version="1.0" encoding="utf-8"?><kml xmlns="http://earth.google.com/kml/2.1"><Folder><description><![CDATA[1 Éléments de la couche_wgs_84]]></description><Placemark><name><![CDATA[D_2]]></name><description><![CDATA[<br><br><br>
    <table border="1" padding="0">
    <tr><td>ID_CIRCUIT</td><td>D_2</td></tr>
    ]]></description><visibility>1</visibility><open>0</open><Style><LineStyle><color>FF1A00FF</color><width> 2</width></LineStyle></Style><LineString><extrude>1</extrude><altitudeMode>clampToGround</altitudeMode><tessellate>1</tessellate><coordinates>
    .918414,45.550405,0
    .918749,45.550856,0
    .92008,45.550979,0
    .920444,45.551266,0
    .920506,45.551498,0
    .920118,45.551836,0
    .919996,45.551982,0
    .920384,45.552253,0
    .920189,45.552447,0
    .920443,45.55255,0
    .921647,45.552309,0
    .922206,45.551793,0
    .923211,45.552486,0
    .923398,45.553132,0
    .923612,45.553679,0
    .924632,45.553336,0
    .925468,45.553549,0
    .926154,45.554632,0
    .924993,45.555582,0
    .92433,45.555784,0
    .924432,45.556181,0
    .924231,45.556539,0
    .924915,45.55642,0
    .925994,45.556407,0
    .926199,45.556559,0
    .926068,45.557545,0
    .925734,45.558329,0
    .925922,45.558941,0
    .928732,45.559026,0
    .929272,45.559003,0
    .928771,45.558615,0
    .928578,45.558134,0
    .928639,45.557131,0
    .929181,45.556416,0
    .929702,45.556278,0
    .929711,45.556015,0
    .930485,45.555387,0
    .930947,45.554934,0
    .930566,45.554466,0
    .930477,45.554333,0
    .93074,45.554206,0
    .930604,45.554088,0
    .931877,45.553881,0
    .932315,45.554087,0
    .932565,45.554915,0
    .932946,45.554757,0
    .93289,45.553735,0
    .933969,45.553705,0
    .934547,45.553914,0
    .934902,45.553838,0
    .935266,45.552873,0
    .936004,45.552557,0
    .936463,45.552187,0
    .937298,45.552433,0
    .937742,45.5531,0
    .938373,45.553144,0
    .938919,45.553582,0
    .939134,45.554722,0
    .939396,45.554612,0
    .939905,45.553535,0
    .940236,45.553458,0
    .941245,45.55374,0
    .941858,45.553957,0
    .942522,45.55406,0
    .943864,45.554208,0
    .944335,45.555723,0
    .944071,45.555891,0
    .944032,45.556006,0
    .944066,45.556039,0
    .944775,45.555888,0
    .945138,45.555557,0
    .945842,45.555224,0
    .945299,45.554704,0
    .945508,45.554106,0
    .94639,45.553415,0
    .945534,45.55279,0
    .944883,45.552951,0
    .94398,45.552992,0
    .942443,45.552708,0
    .941232,45.552201,0
    .940359,45.551732,0
    .939207,45.5512,0
    .938119,45.551156,0
    .937622,45.550965,0
    .93703,45.550493,0
    .936797,45.550464,0
    .936512,45.550558,0
    .93615,45.550518,0
    .936032,45.55087,0
    .935754,45.551079,0
    .935366,45.55113,0
    .934885,45.550833,0
    .934807,45.550724,0
    .933908,45.550946,0
    .933594,45.550883,0
    .933542,45.550396,0
    .933261,45.550399,0
    .931799,45.551583,0
    .931544,45.551817,0
    .930279,45.551481,0
    .928969,45.551424,0
    .927589,45.550723,0
    .92736,45.550587,0
    .927346,45.549698,0
    .927355,45.549451,0
    .92653,45.549584,0
    .926098,45.54923,0
    .92554,45.549747,0
    .925155,45.55002,0
    .923823,45.549287,0
    .922581,45.548655,0
    .92217,45.548367,0
    .922437,45.548125,0
    .922141,45.547889,0
    .921619,45.548061,0
    .920944,45.547933,0
    .920087,45.548921,0
    .918899,45.549986,0
    .918464,45.55034,0
    .918414,45.550405,0
    </coordinates></LineString></Placemark></Folder></kml>

    Je vais essayer de fournir un lien vers le site au plus vite.

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Août 2010
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 177
    Points : 191
    Points
    191
    Par défaut
    Bonsoir,

    Est-ce une erreur de copier coller ? Le premier 0 des coordonnées est décalé :

    Il en manque un ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <tessellate>1</tessellate><coordinates>
    0.918414,45.550405,0
    Et il y en a un en trop à la fin des coordonnées :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    .918414,45.550405,0
    </coordinates></LineString></Placemark></Folder></kml>

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2012
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    il 'n y a pas de 0 devant la virgule en fait.
    ca ne me choque pas.
    Ces KML sont générés par google earth.

    les coordonnées d'un polyligne sont toujours de cette forme non ?

    exemple sur la doc de google:

    <coordinates> -112.2550785337791,36.07954952145647,2357
    -112.2549277039738,36.08117083492122,2357
    -112.2552505069063,36.08260761307279,2357
    -112.2564540158376,36.08395660588506,2357
    -112.2580238976449,36.08511401044813,2357
    -112.2595218489022,36.08584355239394,2357
    -112.2608216347552,36.08612634548589,2357
    -112.262073428656,36.08626019085147,2357
    -112.2633204928495,36.08621519860091,2357
    -112.2644963846444,36.08627897945274,2357
    -112.2656969554589,36.08649599090644,2357
    </coordinates>

    Dans le doute j'ai ajouté des 0 comme tu le recommande mais ça n a rien changé.

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2012
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    j'ai fait les modifs nécessaires pour que le KML soit valide sur http://kmlvalidator.com/home.htm

    ça n'a pas réglé le problème.

  7. #7
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    2 128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 2 128
    Points : 1 764
    Points
    1 764

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2012
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    C'est exactement ce qu'il faudrait que je vois sur mon appli.

    le probleme est donc bel et bien dans le code.

  9. #9
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    2 128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 2 128
    Points : 1 764
    Points
    1 764
    Par défaut
    Pour moi le kml est valide, le troisième champ est l'altitude.
    Du côté code, le mien n'est pas original.

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Août 2010
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 177
    Points : 191
    Points
    191
    Par défaut
    Effectivement cela semble être une fausse piste.

    J'ai vérifié la documentation et les coordonnées sont représentées par 3 nombres la longitude, la latitude et l'altitude(facultative).

    Ce qui me semblait bizarre c'est l'absence de 0 devant la longitude : .918414

    Il est possible que l'absence de 0 soit conforme à la norme mais produise un bug dans l'API geoportail.

    Est-ce que les autres KLM qui se chargent au mauvais endroit ont une longitude de la même forme (.918414)

  11. #11
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2012
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    mga_geo je suis en train de comparer ton code et le mien.

  12. #12
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2012
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    trukker j'ai essayé de mettre les 0 ça n'a rien changé.

  13. #13
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2012
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    j'ai tenté de faire comme mga_geo en mettant
    var displayProjections = ['IGNF:LAMBE',"IGNF:RGF93G","IGNF:LAMB93"];
    displayProjection: displayProjections, dans les options du loader.
    ça n'a rien changé.

    Je ne vois pas de différence significative entre nos 2 scripts. pourtant le mien ne fonctionne pas... le tracé est toujours dans les Pyrénées.

    Voici mon code complet :

    var iVIEWER=null,
    function initialize(v){
    iVIEWER= new Geoportal.load(
    'slider',
    ['XXXXXXXXXXXXXXXXX'],
    {lon[1],lat[0]},
    //zoom
    14,
    //options
    {//displayProjection: displayProjections,
    language:'fr',
    onView: initGeoportalMap,
    layersOptions:{'GEOGRAPHICALGRIDSYSTEMS.MAPS:WMSC':{opacity:0.8},'ORTHOIMAGERY.ORTHOPHOTOS:WMSC':{visibility:false}},
    viewerClass:Geoportal.Viewer.Default //pour mettre la boite à outil standard (zoom, coordonnées, gestion des couches de données..)
    }
    );
    };
    function initGeoportalMap() {

    var VIEWER=iVIEWER.getViewer();
    VIEWER.setLayersPanelVisibility(false);
    VIEWER.setToolsPanelVisibility(true);
    VIEWER.setInformationPanelVisibility(true);
    kmlLayer=VIEWER.getMap().addLayer(
    "KML",
    "tracé",
    "kl/"+nom,
    {
    visibility:true,
    opacity:1,
    projection:"EPSG:4326",
    //styleMap: styleMap,
    eventListeners:{
    "loadend":function(){
    if(this.maxExtent){
    this.map.zoomToExtent(this.maxExtent);
    this.setVisibility(true);
    }
    }
    }
    }
    );
    var position = new OpenLayers.Geometry.Point(lon,lat);
    var projWGS84=new OpenLayers.Projection("EPSG:4326");
    position.transform(projWGS84, VIEWER.projection);
    var style = {externalGraphic:'../images/mark.png', graphicWidth:17, graphicHeight:28,graphicYOffset:-28 };
    var pt = new OpenLayers.Feature.Vector(position, null, style);

    //couche du marqueur
    var markLayer = new OpenLayers.Layer.Vector('marqueur');
    markLayer.addFeatures([pt]);
    VIEWER.getMap().addLayer(markLayer);
    }

  14. #14
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2012
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    J'ai trouvé le problème!
    Voici la solution au cas ou quelqu'un se trouve confronté à la même situation.
    dans le loader j'ai mis une position en dur :

    {lon:2,lat:45,}

    Depuis tout va bien.

    avant je donnais une position dynamique en récupérant le premier point de mon tracé en AJAX. donc en l'occurrence : lon:.918414 et lat:45.550405 dans l'exemple que je vous ai donné plus haut.

    je n'ai pas prit le temps de regarder exactement pourquoi mais je pense que .918414 était considéré comme une chaine par javascript et que j'aurai du le transformer en decimal pour que ça fonctionne. Car si j écrit lon:.918414 et lat:45.550405 en dur ça fonctionne toujours très bien.

    Merci pour votre aide.

  15. #15
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    2 128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 2 128
    Points : 1 764
    Points
    1 764
    Par défaut Résolu ?
    Alors un petit clic sur le bouton ad-hoc

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

Discussions similaires

  1. [WD15] Probleme affichage fichier de donnée avec un champ combo
    Par ingelman dans le forum WinDev
    Réponses: 20
    Dernier message: 17/05/2015, 11h12
  2. probleme affichage fichier pdf
    Par jolemoine dans le forum Imagerie
    Réponses: 2
    Dernier message: 14/12/2009, 03h00
  3. Probleme affichage dans entry a partir d'un fichier texte
    Par HaaRt dans le forum GTK+ avec C & C++
    Réponses: 6
    Dernier message: 06/04/2007, 12h01
  4. Problème d'affichage fichier texte
    Par justind1989 dans le forum Langage
    Réponses: 5
    Dernier message: 06/04/2006, 19h21
  5. [VB]Probleme lecture fichier text et affichage
    Par clochardevobsy dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 10/03/2006, 08h46

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