banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

GEODATA DAYS 2024

#1 Thu 02 September 2010 08:16

nico-29
Participant assidu
Lieu: Brest
Date d'inscription: 2 Jun 2006
Messages: 185

[OpenLayers] changement de système de coordonnées

Bonjour,

J'ai un scan d'une carte marine (projection Mercator ED50 - EPSG 6859) que j'ajoute à une carte OpenLayers.
A cette carte, je veux également ajouter un layer  de type vecteur contenant des points, les coordonnées des points au départ sont en ED50 (géographique) (EPSG 4230).

Je déclare donc ma carte avec le système de coordonnées EPSG 6859, j'affiche ma carte, elle est bien calée.
J'ajoute un event à ma carte pour avoir l'affichage de la position du curseur en degrés décimaux, voici le code :

Code:

map.events.register("mousemove", map, function(e) {
                var position = this.events.getMousePosition(e);
                var lonlat = map.getLonLatFromPixel(this.events.getMousePosition(e));
                lonlat.transform(new OpenLayers.Projection("EPSG:6859"), new OpenLayers.Projection("EPSG:4230"));
                OpenLayers.Util.getElement("mapInfosPos").innerHTML = '' + Math.round(lonlat.lon*1000000)/1000000 + ', ' + 
                                                            Math.round(lonlat.lat*1000000)/1000000;
            });

Ca ça marche nickel.

de l'autre côté, je veux transformer les coordonnées de mes points en ED50 Mercator avant de les charger dans le layer pour les afficher, voici le code :

Code:

var pt = new OpenLayers.LonLat(-4.5363, 47.99785);
    pt.transform(new OpenLayers.Projection("EPSG:4230"), new OpenLayers.Projection("EPSG:6859"));
    alert(pt.lon+' '+pt.lat);
    features[0] = new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(pt.lon, pt.lat),
                                                {type: 5, name: "Dourduff"});
                                
    var points = new OpenLayers.Layer.Vector('Points', {styleMap: myStyles});
    points.addFeatures(features);
    map.addLayer(points);

et ça, ça ne marche pas : quand je fais afficher les coordonnées du point transformé, il m'affiche les coordonnées de départ.

Qu'est ce qui cloche ?
Apparement, l'instruction :

Code:

lonlat.transform(new OpenLayers.Projection("EPSG:6859"), new OpenLayers.Projection("EPSG:4230"));

fonctionne, mais celle-ci :

Code:

pt.transform(new OpenLayers.Projection("EPSG:4230"), new OpenLayers.Projection("EPSG:6859"));

ne fonctionne pas, pourquoi ?

Merci,

Nico

Hors ligne

 

#2 Thu 02 September 2010 09:48

Yves
Membre du bureau
Lieu: Aix-les-Bains
Date d'inscription: 22 Mar 2006
Messages: 9859
Site web

Re: [OpenLayers] changement de système de coordonnées

Bonjour,

Je pense que tu devrais ajouter la projection que tu utilises pour la couche vector :

Code:

 var points = new OpenLayers.Layer.Vector('Points', {styleMap: myStyles, projection: new OpenLayers.Projection('EPSG:6859')});

Y.


Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !!  - GeoRezo vous aide ? Aidez GeoRezo !

Hors ligne

 

#3 Thu 02 September 2010 10:08

nico-29
Participant assidu
Lieu: Brest
Date d'inscription: 2 Jun 2006
Messages: 185

Re: [OpenLayers] changement de système de coordonnées

ça ne fait rien.

ça coince déjà au niveau de :

Code:

var pt = new OpenLayers.LonLat(-4.5363, 47.99785);
pt.transform(new OpenLayers.Projection("EPSG:4230"), new OpenLayers.Projection("EPSG:6859"));
alert(pt.lon+' '+pt.lat);

puisque l'instruction alert renvoie les coordonnées du point de départ (-4.5363, 47.99785), et non les coordonnées converties.

Nico

Hors ligne

 

#4 Thu 02 September 2010 10:38

Yves
Membre du bureau
Lieu: Aix-les-Bains
Date d'inscription: 22 Mar 2006
Messages: 9859
Site web

Re: [OpenLayers] changement de système de coordonnées

Tu as un message d'erreur ?

As tu inclus la lib proj4js et les définitions des deux projections ?

Y.


Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !!  - GeoRezo vous aide ? Aidez GeoRezo !

Hors ligne

 

#5 Thu 02 September 2010 10:47

nico-29
Participant assidu
Lieu: Brest
Date d'inscription: 2 Jun 2006
Messages: 185

Re: [OpenLayers] changement de système de coordonnées

j'ai téléchargé proj4js et copié dans l'arborescence de mon site, dans un répertoire nommé carto.
dans l'en-tête de ma page html, j'ai mis :

Code:

<script type="text/javascript" src="carto/proj4js-1.0.1/lib/proj4js.js"></script>

au début de mon javascript, j'ai mis :

Code:

Proj4js.defs["EPSG:6859"] = "+proj=merc +lon_0=0 +k=1 +x_0=0 +y_0=0 +ellps=intl +units=m +no_defs";
Proj4js.defs["EPSG:4230"] = "+proj=longlat +ellps=intl +no_defs";

il faut autre chose ?

Nico

Hors ligne

 

Pied de page des forums

Powered by FluxBB