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 :

Projection des couches Geoportail en Lambert 93


Sujet :

IGN API Géoportail

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mai 2009
    Messages : 25
    Points : 8
    Points
    8
    Par défaut Projection des couches Geoportail en Lambert 93
    Bonjour à tous,

    Je suis donc un petit nouveau sur le site. Je développe depuis quelque temps une application qui permet de visualiser les bateaux détectés par notre récepteur AIS. L'application permet aussi de "rejouer" une situation en sachant que la position des navires est stockée dans une base de données.

    Mon environnement de développement est :
    - ColdFusion 5 sous Windows 2000 (pour accéder aux bases de données)
    - Mapserver
    - OpenLayers 2.7
    - Oracle 9i (stockage des coordonnées des navires)
    - Firefox 2.0.0.20

    C'est donc avec grand plaisir que j'essaie maintenant d'utiliser GeoPortail en guise de couches de fond mais je n'arrive pas à les utiliser en Lambert 93. Les coordonnées de mes navires étant stockées en Lambert 93, je n'ai pas trop envie de reprojeter en local à chaque affichage.

    J'ai essayé d'utiliser la page "basic-lamb93-compressed.html" mais la console d'erreurs Javascript me sort des messages du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Erreur : erreur de syntaxe
    Fichier source : http://vigie2.bordeaux-port.fr:81/Ais/Geoportail/js/1.0beta4/lib/proj4js/lib/defs/EPSG2154.js?_tick_=1243497806713
    Ligne : 1, Colonne : 1
    Code source :
    Proj4js.defs["EPSG:2154"]="+title=RGF93 / Lambert-93 +proj=lcc +lat_1=49 +lat_2=44 +lat_0=46.5 +lon_0=3 +x_0=700000 +y_0=6600000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ";^
    ou encore
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Erreur : mal formé
    Fichier source : http://vigie2.bordeaux-port.fr:81/Ais/Geoportail/js/1.0beta4/lib/proj4js/lib/projCode/lcc.js?_tick_=1243497806723
    Ligne : 1, Colonne : 1
    Code source :
    /*******************************************************************************^
    Quelqu'un a t-il une idée ?

  2. #2
    Membre éprouvé Avatar de cmail
    Homme Profil pro
    Inscrit en
    Mai 2009
    Messages
    1 730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Loire (Auvergne)

    Informations forums :
    Inscription : Mai 2009
    Messages : 1 730
    Points : 966
    Points
    966
    Par défaut
    Bonjour Mick,
    Il ne m'est pas possible de te répondre, je suis trop débutant. Cependant, il faut attendre le retour de dgrichard (animateur chez IGN du geoportail) qui saura te dépanner. Je le soupçonne en vacances, car il nous a jamais habitué à une aussi longue période de silence Et on se sent très seul, ici, sans lui!

    Par ailleurs sous FF3, il faudra que tu installes le greffon Firebug pour avoir des renseignements sur les erreurs qui surviennent et qui bloquent l'affichage... Courage.

  3. #3
    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
    Citation Envoyé par cmail Voir le message
    Bonjour Mick,
    Il ne m'est pas possible de te répondre, je suis trop débutant. Cependant, il faut attendre le retour de dgrichard (animateur chez IGN du geoportail) qui saura te dépanner. Je le soupçonne en vacances, car il nous a jamais habitué à une aussi longue période de silence
    Pas en vacances, celui fait plusieurs nuits que je bosse pour avoir des labels affichés à côté des pictos et j'ai réussi tard dans la nuit avec OpenLayers 2.7 ...

    Sur le fond du sujet (Lambert93), j'ai besoin de comprendre de quel flux on parle :

    1. le Géoportail est en projection équidistante cylindrique sur RGF93G en France Métropolitaine;
    2. Il est possible d'afficher le flux Géoportail en projection plate-carre (géographique) lors de l'appel à geoportalLoad<INSTANCE>.

    De fait, tous les flux à afficher sur le Géoportail doivent suivre les règles édictées ici dans l'avant-propos.

    Pour faire court :


    1. Un flux image doit être en projection compatible avec les flux Géoportail : donc soit la même projection équidistante cylindrique, soit en plate-carre (WGS84 géographique, RGF93 géographique, etc ...);
    2. Un flux vecteur n'a lui aucun problème, il suffit d'annoncer sa projection native (propriété externalProjection). Normalement, l'API se charge de mettre la propriété internalProjection à celle des flux Géoportail.

    Ceci dit, la page "basic-lamb93-compressed.html" est une page de test pour accèder à un flux entièrement en Lambert 93 et non en équidistante cylindrique : le test ne fonctionne pas puisque nous n'avons pas encore de tels flux (je vais l'indiquer dans la page de test) !

  4. #4
    Membre éprouvé Avatar de cmail
    Homme Profil pro
    Inscrit en
    Mai 2009
    Messages
    1 730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Loire (Auvergne)

    Informations forums :
    Inscription : Mai 2009
    Messages : 1 730
    Points : 966
    Points
    966
    Par défaut
    Citation Envoyé par dgrichard Voir le message
    Pas en vacances, celui fait plusieurs nuits que je bosse pour avoir des labels affichés à côté des pictos et j'ai réussi tard dans la nuit avec OpenLayers 2.7 ...
    En voilà une très bonne nouvelle!!! A ce que je comprends, cela devrait répondre aux attentes formulées dans cette question.

    J'espère , et quand tu offres ton travail ?
    Nous sommes de vrais parasites!

  5. #5
    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
    Citation Envoyé par cmail Voir le message
    En voilà une très bonne nouvelle!!! A ce que je comprends, cela devrait répondre aux attentes formulées dans cette question.

    J'espère , et quand tu offres ton travail ?
    Nous sommes de vrais parasites!

    C'est fait ...

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mai 2009
    Messages : 25
    Points : 8
    Points
    8
    Par défaut
    Mon application comporte plusieurs couches OpenLayers :
    1. des couches provenant d'un serveur Mapserver et qui sont en Lambert 93 (bouées, chenal d'accès...),
    2. des couches de type Marker pour représenter la "trace" des bateaux (une trace par minute ; la trace étant une icone). Le passage de la souris sur la trace déclenche un popup qui affiche les caractéristiques de vitesse, de cap...
    3. une couche de type Vector qui dessine les polylignes reliant chaque trace et qui représente la dernière position du bateau (en respectant la dimension réelle du bateau).

    Pour cela, j'utilise les coordonnées Lambert 93 stockées dans la base de données et du code ColdFusion génère tout le code Javascript qui dessine les couches Markers et Vector.

    Et j'aurai donc aimé avoir une couche Geoportail (photo satellite) en couche de base.

    Si je vous suis bien, je n'ai qu'une solution :
    1. passer mes couches WMS Lambert 93 en WGS84 et
    2. conserver mon algorithmique en Lambert 93 (l'aspect orthonormé m'aide beaucoup pour dessiner le bateau) pour la partie trace et vecteur, et laisser faire l'API qui doit convertir à la volée

    Est-ce correct ?

    PS: pour les labels, je ne sais pas si ça peut aider, moi j'utilise des popups pour afficher le nom de mes navires à côté de leur dernière position.

  7. #7
    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
    Citation Envoyé par Mick Helley Voir le message
    Si je vous suis bien, je n'ai qu'une solution :
    1. passer mes couches WMS Lambert 93 en WGS84
    Oui, si votre WMS le permet.

    Citation Envoyé par Mick Helley Voir le message
    2. conserver mon algorithmique en Lambert 93 (l'aspect orthonormé m'aide beaucoup pour dessiner le bateau) pour la partie trace et vecteur, et laisser faire l'API qui doit convertir à la volée
    Je crains de ne pas comprendre, mais : si ce sont des données vecteurs, l'API va convertir à la volée les coordonnées Lambert 93 en projection de la carte. Les données chargées peuvent donc être en Lambert 93. Par contre, une fois chargées dans l'API, elles seront dans la projection de la carte.

    De nouveau, je préfèrerai voir le code de la page pour comprendre ...

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mai 2009
    Messages : 25
    Points : 8
    Points
    8
    Par défaut
    Ci-dessous un bout de code qui permet de générer un vecteur représentant un bateau :
    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
    	// Dessiner un cargo
    	function RenvoyerCargo(longBateau, largBateau) {
    		var cargoPoint = new Array()
    		var cargo;
    		
    		// Les points du cargo
    		cargoPoint.push(new OpenLayers.Geometry.Point(-largBateau/2, -longBateau/2));
    		cargoPoint.push(new OpenLayers.Geometry.Point(largBateau/2, -longBateau/2));
    		cargoPoint.push(new OpenLayers.Geometry.Point(largBateau/2, longBateau * 5 / 12));
    		cargoPoint.push(new OpenLayers.Geometry.Point(0, longBateau / 2));
    		cargoPoint.push(new OpenLayers.Geometry.Point(-largBateau/2, longBateau * 5 / 12));
    		
    		cargo = new OpenLayers.Geometry.LinearRing(cargoPoint);
    		
    		// On déplace le bateau pour tenir compte de la position AIS (1/6 arrière)
    		cargo.move(0, longBateau * 5/12);
    		
    		return cargo;
    	}
    
    	// Renvoyer un objet Vecteur à partir de coordonnées, de cap, d'un type de bateau, d'une longueur, d'une largeur et d'infos sur le popup à générer
    	function RenvoyerBateauVecteur(x, y, cap, typeBateau, longBateau, largBateau, data) {	
    		var bateau, polyBateau, bateauVecteur, style;
    		
    		switch(typeBateau) {
    			case 'IN' : // Inconnu donc pas dans VIGIE2
    				bateau = RenvoyerCargo(longBateau, largBateau);
    				style = style_bateau_inconnu;
    				break;
    			default :
    				bateau = RenvoyerBateauStandard(longBateau, largBateau);
    				style = style_bateau;
    		}
    		
    		// On déplace le navire
    		bateau.move(x, y);
    		
    		// On fait tourner le navire selon son cap
    		bateau.rotate(360-cap, new OpenLayers.Geometry.Point(x,y));	
    		
    		// 
    		bateauVecteur = new OpenLayers.Feature.Vector(bateau, data, style);
    		return bateauVecteur;
    	}
    On voit que je tire partie du référentiel orthonormé qu'est le Lambert 93 (x et y). J'aurai du mal à faire le même algorithme avec du WGS84.

    J'ajoute bien sûr ces "bateaux" ainsi calculés sur une couche Layer de type Vector.

  9. #9
    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
    Ok, je comprends mieux. Merci.

    Du point de vue architecture, je proposerai plutôt ceci :


    1. un bateau a à un instant donné une position (peut importe le système de coordonnées d'ailleurs);
    2. un bateau est représenté par une icône standard (c'est équivalent au polygone de 6 points). Cet icône voit sa taille modifiée par le rapport longueur/largeur du bateau. Cet icône voit son orientation modifié par un angle.


    Il devient alors possible de définir un objet ponctuel dont la symbolisation (style) est définie par l'externalGraphic, graphicX, graphicY, rotation (autour de la position du point).

    Enorme avantage de cette solution : on peut rendre cet objet mobile via un setTimeout() simplement.

    C'est plus complexe à faire, mais plus simple au final (occupation mémoire, vitesse de rafraîchissement, customisation des icônes selon un type de bateau). J'écris cela parce que le problème ressemble à celui du suivi de trajectoire où la position de l'objet à surveiller est récupérée sur des tempos réguliers, sauf qu'il pouvait y avoir beaucoup d'objets à surveiller (par exemple, une flotte de camions et des voiliers en régate ici).

    Sinon : soluce de repli lors de la récupération des coordonnées du bateau (en projection de la carte) on transforme dans une géométrie intermédiaire en Lambert93.

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mai 2009
    Messages : 25
    Points : 8
    Points
    8
    Par défaut
    Ce n'est qu'une partie du code. Car mes bateaux (il peut y en avoir plus de 30) sont animés comme avec un magnétoscope : avance rapide (avec augmentation de la vitesse), pause. J'utilise un setTimeout pour ça et j'alimente un énorme tableau de coordonnées en Javascript pour pouvoir faire l'animation sans accéder à la base de données continuellement. Je précise aussi que j'affiche la trajectoire de mes bateaux au fur et à mesure du temps avec des "traces" toutes les minutes.

    L'intérêt du vecteur est que le bateau est bien proportionnel aux quais et qu'on voit bien son positionnement par rapport aux bollards. C'est aussi très intéressant pour détecter d'éventuelles collisions.

    Je reconnais que l'ensemble est assez gourmand mais nos PC, pourtant vieux, font tourner ça facilement.

    Donc, Geoportail + mes couches WMS en WGS84 + ma couche Vector ça peut le faire ?

    En tout cas, merci de m'avoir consacré du temps. Je vous tiendrai informé de mes avancées.

  11. #11
    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
    Citation Envoyé par Mick Helley Voir le message
    Donc, Geoportail + mes couches WMS en WGS84 + ma couche Vector ça peut le faire ?
    Tout à fait !

    Citation Envoyé par Mick Helley Voir le message
    En tout cas, merci de m'avoir consacré du temps. Je vous tiendrai informé de mes avancées.
    Effectivement, à l'instar de mga_geo, ce sont les utilisateurs de l'API qui font que l'on passe autant d'heures derrière son clavier pour voir leurs réalisations!

  12. #12
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mai 2009
    Messages : 25
    Points : 8
    Points
    8
    Par défaut
    Je n'arrive pas à afficher ma couche WMS :
    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
            geoportalLoadviewer("map_global", "normal");
    	if (!viewer) {
    		alert('new.instance.failed');
    		return;
    	}
    		
    	// Rajout des couches de Geoportail
            viewer.addGeoportalLayers();
            viewer.getMap().setCenterAtLonLat(-0.7193, 45.27, 10); 
    
    	map = viewer.getMap();
    	map.setCenterAtLonLat(-0.7193, 45.27, 10);
            map.addControl(new OpenLayers.Control.LoadingPanel());
    
            layerLithos = map.addLayer(
    				"WMS",
    				"Lithos",
    				"http://appsig.bordeaux-port.fr/cgi-bin/mapserv",
    				{
    					map:'/usr/local/apache2/htdocs/pab/pab.map', 
    					layers: 'lithos,appont',
    					transparent:true,
    					format:'image/png'
    				},
    				{
    					singleTile: true,
    					projection: 'EPSG:4326',
    					maxExtent: new OpenLayers.Bounds(-1.55, 44.8, -0.25,46.3266400536), 
    					maxResolution: 'auto',
    					maxZoomLevel: 4,
    					unit: 'degrees',
    					isBaseLayer: false,
    					visibility: true,
    					encodeBBOX: true
    				}
    			);
    Le code ci-dessus ne fonctionne pas car quand j'utilise layerLithos.getFullRequestString(), j'obtiens une URL suivante, qui une fois exécutée dans mon navigateur renvoie une image vide.

    Là je sèche...

  13. #13
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mai 2009
    Messages : 25
    Points : 8
    Points
    8
    Par défaut
    Ah ça y est, j'ai trouvé : mon fichier .map était mal adapté pour le WGS84.

    Je superpose enfin les couches Geoportail avec mes couches de chenal et autres bouées. Il ne me reste plus que mes bateaux...

  14. #14
    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 WMS : paramètres
    Pourrais-tu retirer les paramètres suivants pour vérifier que l'affichage fonctionne toujours :

    1. maxResolution : pour voir si l'affichage reste correct (callé sur les résolutions de la carte Géoportail);
    2. encodeBBOX : il me semble que ce paramètre n'est pas utile (mais j'ai un doute!-)

  15. #15
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mai 2009
    Messages : 25
    Points : 8
    Points
    8
    Par défaut
    Yes, ça marche encore et même ça marche mieux. Parce qu'à l'échelle du monde, mes couches ne s'affichaient plus... Cool.

    Par contre, je n'arrive pas à afficher mes vecteurs. Je convertis mes points de Lambert93 à WGS84 (OpenLayers.Projection) et cherche à afficher mes markers et vecteurs. Et rien ne s'affiche.

    Voilà comment je crée ma couche Marker :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    projWGS84 = new OpenLayers.Projection("EPSG:4326");
    layerAIS = new OpenLayers.Layer.Markers("AIS");	
    layerAIS.isBaseLayer = false;
    layerAIS.projection = projWGS84;
    Et comment j'essaie d'insérer des markers :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    ais_lonlatL93 = new OpenLayers.LonLat(403579.9146,6476947.6826);
    ais_lonlatWGS84 = ais_lonlatL93.clone();
    ais_lonlatWGS84.transform(projL93, projWGS84)
    ais_lonlat = ais_lonlatWGS84;
    data = { popupSize: new OpenLayers.Size(200, 120), popupContentHTML: mmsi_html, icon: markerIcon };
    ais_feature = new OpenLayers.Feature(layerLithos, ais_lonlat, data);
    ais_marker = ais_feature.createMarker();
    layerAIS.addMarker(ais_marker);

  16. #16
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mai 2009
    Messages : 25
    Points : 8
    Points
    8
    Par défaut
    Autres indices :
    1. la commande alert(layerAIS.getDataExtent().toString()) me renvoie bien le maxExtent en WGS84 qui contient les markers
    2. et en fait tous les markers sont dessinés à la coordonnée (0,0) !!! Bien sûr, je ne leur demande pas de le faire là...

  17. #17
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mai 2009
    Messages : 25
    Points : 8
    Points
    8
    Par défaut
    Autre essai :
    - j'ai laissé mes bateaux en Lambert 93
    - ma couche Marker est en projection Lambert 93

    Là l'affichage des markers semble correct (différenciation des points contrairement à ci-dessus) mais ce n'est pas du tout calé par rapport aux cartes Geoportail, ni à mes couches en WGS84...

    J'abandonne pour ce soir !

  18. #18
    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
    Citation Envoyé par Mick Helley Voir le message
    Autre essai :
    - j'ai laissé mes bateaux en Lambert 93
    - ma couche Marker est en projection Lambert 93

    Là l'affichage des markers semble correct (différenciation des points contrairement à ci-dessus) mais ce n'est pas du tout calé par rapport aux cartes Geoportail, ni à mes couches en WGS84...

    C'est la bonne méthode pourtant !
    Quelle est la portée du décalage (en mètres, décamètres, kilomètres ?)

    Ton site est-il visible de l'extérieur ?

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

    Informations forums :
    Inscription : Mai 2009
    Messages : 2 124
    Points : 1 764
    Points
    1 764
    Par défaut Exemple avec des reprojections
    http://atlasnw.free.fr/web/geoportai...es/marker.html

    J'ai 3 marqueurs avec des projections différentes: WGS84, L93 et LIIe.
    Et ils sont tous à la bonne place.
    NB: j'ai fait les conversions avec Circé

  20. #20
    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
    Je crois comprendre gràce à l'exemple donné par mga_geo et en fouillant le code d'OpenLayers :


    1. OpenLayers.Layer.Markers ne gère pas les projections : si aucune projection n'est définie, comme pour toutes couches OpenLayers c'est la projection de la baseLayer qui prend la main ...
    2. OpenLayers.Marker ne gère pas les projections : les coordonnées sont forcément dans la projection de la carte (donc de la baseLayer courante) ...
    3. l'API impose une projection aux couches et la plupart du temps reprojette à la volée entre la projection de la couche (méthode getNativeProjection()) et la projection de la carte (méthode getProjection()) ... sauf pour les Marker (oubli? y-en-a sûrement d'autres !-)

    A l'instar de mga_geo, il faut donc "à la main" reprojetter de Lambert 93 (IGNF:LAMB93) en projection de la carte pour que cela fonctionne avant d'ajouter le Marker à la couche Markers.

    De cette façon, l'API gère correctement les markers même en changeant de la vue locale à la vue monde les markers.

Discussions similaires

  1. QGIS 1.8 problème d'affichage des couches geoportail
    Par jano07 dans le forum IGN API Géoportail
    Réponses: 9
    Dernier message: 19/09/2012, 23h35
  2. [Geoportail] Récupération des couches
    Par darksquall666 dans le forum Android
    Réponses: 3
    Dernier message: 06/09/2011, 21h38
  3. maxExtent des couches du Geoportail
    Par shama dans le forum IGN API Géoportail
    Réponses: 3
    Dernier message: 02/11/2009, 09h23
  4. maxExtent des couches du Geoportail
    Par shama dans le forum SIG : Système d'information Géographique
    Réponses: 1
    Dernier message: 24/10/2009, 11h00
  5. [Design] Séparation des couches
    Par brousaille dans le forum Plateformes (Java EE, Jakarta EE, Spring) et Serveurs
    Réponses: 17
    Dernier message: 16/03/2005, 21h34

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