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 :

outils edition de couche


Sujet :

IGN API Géoportail

  1. #1
    Nouveau membre du Club Avatar de jac83
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2011
    Messages : 71
    Points : 39
    Points
    39
    Par défaut outils edition de couche
    bonjour,
    grâce a toutes les informations que j'ai pu trouver dans les différents posts de ce forum, je suis arrivé à afficher une trace au format gpx automatiquement centrée sur une carte IGN ... merci encore . J'aimerai pouvoir faire apparaitre les outils d'édition de la couche qui contient la trace visualisée (pour pouvoir la modifier et ensuite l'enregistrer sur mon ordi). Outils d'édition comme ici sur la couche essai . Que dois je rajouter à mon code ... et à quel endroit? l'exemple du fichier qui fait apparaitre la couche (pour voir le code) est ici.

    merci
    cdlt jacques

  2. #2
    Expert confirmé
    Homme Profil pro
    Ingénieur cartographe
    Inscrit en
    Avril 2009
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur cartographe
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 173
    Points : 4 224
    Points
    4 224
    Par défaut
    Tout ce passe via le Geoportal.Control.EditingToolbar
    C'est un gros morceau, il faut t'inspirer du code source de ce contrôleur qui fait le boulot : Geoportal.Control.AddVectorLayer (via le téléchargement des sources) et jeter un œil à cet exemple

  3. #3
    Nouveau membre du Club Avatar de jac83
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2011
    Messages : 71
    Points : 39
    Points
    39
    Par défaut
    merci pour la réponse.
    j'ai déjà essayé avec l'exemple que tu donnes, exemple sur lequel j'ai enlevé ce qui ne m'intéressait pas c'est ici ... mais je n'arrive pas à faire afficher un fichier gpx ou kml en même temps que la couche vectorielle est créée avec les outils qui m'intéresse. Je ne vois pas où rajouter et quoi rajouter au code de mon essai . De plus dans mon essai lors de la sauvegarde j'obtiens un un fichier gpx "route" (rte) alors que je voudrai un itinéraire (trk) ... là aussi je coince et comme ça me prends la tête depuis un moment je viens à la pêche aux infos .
    cdlt jacques

  4. #4
    Expert confirmé
    Homme Profil pro
    Ingénieur cartographe
    Inscrit en
    Avril 2009
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur cartographe
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 173
    Points : 4 224
    Points
    4 224
    Par défaut
    Il te "suffit", après avoir ajouté le GPX dans la carte, de créer un contrôle Geoportal.Control.EditingToolbar sur cette couche GPX avec les bonnes options (par exemple, en ne mettant pas l'édition si tu n'en as pas besoin).

    C'est juste de l'assemblage de composants JS.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2011
    Messages : 33
    Points : 35
    Points
    35
    Par défaut FASToch.... lol
    Non je plaisante.

    J'avais les mêmes problèmes que toi, en étant bien moins avancé. Aussi je me suis permis de reprendre ton code.
    Manque le point, manque le polygone et les extensions kml et GPX. Tu les as simplement sautés ou effacés en recopiant.

    Reprend après la fonction initGeoportalMap la cascade d'OpenLayers en la comparant à celle de geoportalalert.html. Tu as un peu trop sabré.

    Mais bravo pour ton boulot !!
    Chapeau et merci.

  6. #6
    Expert confirmé
    Homme Profil pro
    Ingénieur cartographe
    Inscrit en
    Avril 2009
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur cartographe
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 173
    Points : 4 224
    Points
    4 224
    Par défaut
    Dans l'exemple cité, j'ai fait en sorte de ne gérer que des couches de type ponctuelles, linéaires ou polygonales. Mai, pas de deux ou des trois types en même temps.

    Nous travaillons sur un contrôleur capables de faire tout cela, mais il faudra attendre ...

  7. #7
    Nouveau membre du Club Avatar de jac83
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2011
    Messages : 71
    Points : 39
    Points
    39
    Par défaut
    Le fait d'avoir épuré le code de geoportalalert est volontaire car je n'ai pas besoin de tout. Je viens de lire que ce code évoluait, je vais suivre cela avec attention. Pour le reste je n'ai toujours pas réussi a ajouter les outils d'édition d'une couche gpx que j'affiche ... j'y travaille mais ce n'est pas encore ça . Du coup j'ai fait un autre essai en me servant d'une discussion présente sur le forum (voir essai) mais l'affichage des outils d'édition est aléatoire, ils s'affichent une fois sur 20 ... comprends pas pourquoi...

  8. #8
    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
    Bonjour,

    Je ne vois pas ou est le problème, mais j'avais posté un code fonctionnel ici, sur le post du 28/05/2011.

    Gilles

  9. #9
    Nouveau membre du Club Avatar de jac83
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2011
    Messages : 71
    Points : 39
    Points
    39
    Par défaut
    bonjour,
    effectivement il se peut que le problème ne soit pas visible ... je joints donc 2 copies d'écran une avec l'affichage attendu de la trace et des outils d'édition (c'est ici) et une avec l'affichage qui arrive le plus souvent sans outils d'édition et avec la trace qui n'exploite pas le style demandé (c'est ici). Ce qui est bizarre et j'ai essayé du boulot et de chez moi, c'est que le bon affichage se fait une fois sur 20 ou 30 la plupart du temps c'est le mauvais qui apparait. J'ai essayé de vider le cache rien y fait... comprends pas pourquoi
    jacques

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

    Informations forums :
    Inscription : Mai 2009
    Messages : 2 130
    Points : 1 765
    Points
    1 765
    Par défaut Asynchronisme!
    Le code js/GPX.js est chargé et exécuté avant que la bibliothèque Geoportal ne soit chargé. Cela donne des erreurs "Geoportal is not defined" dans Firebug.


    Une solution est de mettre les surcharges dans le code de la fonction "function initGeoportalMap() {"

    Remarque au passage, la page fait référence à des images de la version 1.1 ...

  11. #11
    Nouveau membre du Club Avatar de jac83
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2011
    Messages : 71
    Points : 39
    Points
    39
    Par défaut
    merci pour la réponse mga_géo ... effectivement j'ai vu les erreurs avec firebug ... mais je n'arrive pas à corriger
    Une solution est de mettre les surcharges dans le code de la fonction "function initGeoportalMap() {"
    ... Je ne vois pas du tout ce que tu veux dire ??? ni comment faire
    cdlt jacques

  12. #12
    Expert confirmé
    Homme Profil pro
    Ingénieur cartographe
    Inscrit en
    Avril 2009
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur cartographe
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 173
    Points : 4 224
    Points
    4 224
    Par défaut
    Ton styleMap n'est pas pris en compte ...
    Regarde bien l'exemple GPX sur les styles d'abord
    Puis sur les outils d'édition, il te suffit d'avoir quelque chose comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    gpxLayer = viewer.getMap().addLayer(...);
    edCntrl = new Geoportal.Control.EditingToolbar(gpxLayer,...);
    viewer.getMap().addControl([edCntrl]);

  13. #13
    Nouveau membre du Club Avatar de jac83
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2011
    Messages : 71
    Points : 39
    Points
    39
    Par défaut
    merci pour les infos ... je ne suis pas arrivé à intégrer directement ce que tu proposais, j'ai donc fait différemment en me servant de bouts de codes et d'exemples récupérés sur le forum. Du coup je suis presque arrivé à ce que je veux c'est à dire afficher une trace gpx, la modifier et l'enregistrer voir ici.
    malheureusement si l'affichage et la modification "fonctionne" ... la sauvegarde elle est inefficace . Je me contenterai d'un affichage simple des données gpx en dessous de la carte mais je coince j'ai bien des bouts de code qui le permettent mais je n'y arrive pas . J'ai essayé aussi d'aller chercher sur l'exemple geoportal alert mais je n'arrive pas à isoler la fonction qui permet de sauvegarder ... Un peu d'aide me ferait du bien

  14. #14
    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
    Bonjour,

    Pour que l'enregistrement fonctionne il faut un programme sur le serveur (en php ou autre language serveur) qui récupère le gpx et l'enregistre.

    Voici le code que j'utilise :

    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
    45
    46
    47
    48
    if (isset($_POST['datagpx'])) {
    	
    	/*
    	* Extraction du nom de la trace gpx pour nommer le fichier qui sera enregistré
    	*/
    	
    	$data = $_POST['datagpx'];
    	
    	$doc = new DOMDocument;
    	$doc->loadXML($data);
    	
    	$items = $doc->getElementsByTagName('name');
    	
    	foreach ($items as $item) {
    		$nom = $item->nodeValue;
    		}
    	$nom = utf8_decode($nom);
    	
    	/*
    	* J'ai choisi de ne pas éffacer le fichier original mais d'en créer une copie avec le même nom auquel j'ajoute le suffixe -copie.
    	* Par contre si une copie existe déjà, il est remplacé.
    	*/
    	
    	$nomgpx = "fichiersGPX/".$nom . ".gpx";
    	$nomcopie = "fichiersGPX/".$nom . "-copie.gpx";
    			
    	if (file_exists($nomgpx)) {
    		echo '<div class="resultat">Le fichier '. utf8_encode($nomgpx) .' existe.</br></div>';
    		$nomgpx = $nomcopie;
    	} 
    	
    	if (file_exists($nomcopie)) {
    		$hauteur = 2;
    		echo '<div class="resultat">Le fichier '. utf8_encode($nomcopie) .' existe, il sera supprimé.</div>';
    		unlink($nomcopie);
    		$nomgpx = $nomcopie;
    	}
    	
    	$nomfichier = $nomgpx;
    	
    	/*
    	* Ecriture du fichier sur le disque
    	*/
    	$fichier = fopen($nomgpx, 'a+');
    	fputs($fichier, $_POST['datagpx']);
    	fclose($fichier);
    }
    Enregistre ce code dans un fichier nommé 'traitementGPX.php' dans le même dossier que 'essai5.html'.

    Crée un sous dossier 'fichiersGPX' dans le même dossier que 'traitementGPX.php' et 'essai5.html'.

    Modifie, dans ton fichier 'essai5.html', la ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    //var page = ''; //'traitementGPX.php'
    en :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var page = 'traitementGPX.php';
    Ajoute le code en rouge dans le code de création du bouton de sauvegarde :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    new OpenLayers.Control.Button({
    				name: "sauve",
    				title: "Sauvegarde",
    				displayClass: 'olControlSaveFeatures',
    				trigger: saveFeatures
    			}),
    Voilà, l'enregistrement devrait fonctionner.

  15. #15
    Nouveau membre du Club Avatar de jac83
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2011
    Messages : 71
    Points : 39
    Points
    39
    Par défaut
    merci Trukker ... pour tes instructions ... et ton code d'origine car il me semble que c'est du tien que je me suis très fortement inspiré . Malheureusement les modifs faites grâce à tes bouts de code sont inopérants toujours pas d'enregistrement

  16. #16
    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,

    Dans ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    data = format.write(CoucheGPX.features);
    coucheGPX est le nom de la couche gpx, mets plutôt :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    data = format.write(trace_modifiable.features);
    Cela devrai fonctionner.

  17. #17
    Nouveau membre du Club Avatar de jac83
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2011
    Messages : 71
    Points : 39
    Points
    39
    Par défaut
    merci de t'occuper de mon cas ... en fait j'ai plutôt remis CoucheGPX comme nom de la couche car ce nom apparaît à plusieurs "endroits" du fichier essai5.html on ne sait jamais. Mais même punition, rien ne s'enregistre sur le serveur .

  18. #18
    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,

    Je pense que c'est parce que tu ajoute la couche gpx en utilisant les fonctions de l'API Géoportail.
    Je n'ai jamais réussi à faire des sauvegarde de gpx en créant la couche gpx de cette manière, je ne sais pas si c'est possible.

    Je te propose de créer le gpx sur une couche OpenLayers.Vector de cette manière.
    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
    45
    46
    47
    48
    var styleMap = new OpenLayers.StyleMap({
      "default": new OpenLayers.Style(
        OpenLayers.Util.extend(OpenLayers.Feature.Vector.style["default"],
        {
          strokeColor: "black",
          strokeWidth: 5,
          pointRadius: "${radius}",
          strokeOpacity: "${opacity}",
          fillOpacity: "${opacity}"
        }),
        /* point style will be different for middle points */
        {
          context: {
            radius: function(feature) {
              if (feature.type == "middle") {
                return 3;
              } else {
                return 5;
              }
            },
            opacity: function (feature) {
              if (feature.type == "middle") {
                return 0.5;
              } else {
                return 1.0;
              }
            }
          }
        })
      });
    var lineStyleMap = new OpenLayers.StyleMap({
      "default": new OpenLayers.Style({
        strokeColor: "black",
        strokeWidth: 2
      })
    });
    
    CoucheGPX = new OpenLayers.Layer.Vector("trace gpx", {
    	protocol: new OpenLayers.Protocol.HTTP({
    		url: "gpxflash/data.gpx",
    		format: new OpenLayers.Format.GPX({extractWaypoints: true, extractRoutes: true, extractAttributes: true})
    	}),
    	strategies: [new OpenLayers.Strategy.Fixed()],
    	styleMap: styleMap,
    	projection: new OpenLayers.Projection("EPSG:4326")
    });
    viewer.getMap().addLayer(CoucheGPX);
    Ce code est extrait d'un code de mga_geo. Essaye-le et dis-moi si ça marche.

  19. #19
    Nouveau membre du Club Avatar de jac83
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2011
    Messages : 71
    Points : 39
    Points
    39
    Par défaut
    bonsoir,
    j'ai modifié mon fichier avec ton code (en rajoutant de quoi centrer la carte sur la couche gpx) ... au moins il se passe quelque chose lorsque l'on veut enregistrer, une petite fenêtre apparait en bas à gauche de la carte ... puis erreur 500 (interne serveur) 2 secondes après
    cdlt jacques
    (la copie d'écran de la fenêtre qui apparait en PJ)
    Images attachées Images attachées  

  20. #20
    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,

    Le fichier gpx est créé et envoyé au serveur, maintenant l'erreur est côté serveur.

    As tu fait des modifications sur le code php que je t'ai donné , ou une erreur lors du copier-coller, ou dans le nom du fichier ? Est-il au bon endroit ? As tu bien créé le sous dossier destiné à recevoir les gpx enregistrés , et au bon endroit ?

    Je cherche de mon côté si je peux identifier l'erreur.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 123 DernièreDernière

Discussions similaires

  1. Ajout outils dans une couche
    Par jlecq dans le forum IGN API Géoportail
    Réponses: 1
    Dernier message: 22/08/2012, 17h24
  2. Réponses: 1
    Dernier message: 14/11/2008, 12h54
  3. [Outils] editer un fichier xml
    Par arabimouh dans le forum APIs
    Réponses: 1
    Dernier message: 16/04/2007, 16h03
  4. [Outil][Conseil] Edition d'un XML via Interface Graphique
    Par krlou dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 20/02/2007, 12h09

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