Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
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

Printemps des cartes 2024

#1 Tue 02 December 2008 17:16

pilou272002
Participant occasionnel
Date d'inscription: 9 Sep 2005
Messages: 24

[OpenLayers] Comment faire insérer mon beau raster !!

Bonjour à tous,

Ca fait déjà quelques temps que je bosse sur ce projet de webmapping. J'ai mis les fonds google (roads,ortho) en couches de base, intégrer des layers au format kml, geojson (en appliquant des analyses thématiques) mais là je bloque sur un truc qui me parait pourtant simple : insérer un raster png.

J'ai fabriqué mon PNG à partir de mon sig autonome (mapinfo)
Au départ, je suis parti naîvement dans du kml. j'avais fait dans google earth une superposition d'image. J'ai exporté le 'place' en kml. et dans mon html, j'appelais la fonction openlayers.layer.gml :

transports =new OpenLayers.Layer.GML("Desserte actuelle et future", "Transports_Image_Overlay.kml", {
format: OpenLayers.Format.KML,
projection: new OpenLayers.Projection("EPSG:4326")});


Ca na pas du tout marché, je me suis dit que le kml n'était effectivement pas fait pour çà !! yikes(

du coup je repars dans le classique openlayers.layers.image :

transports =new OpenLayers.Layer.Image("Desserte actuelle et future", "Transports.png",
new OpenLayers.Bounds(-0.109,0.1182,0.1311,-0.293),
new OpenLayers.Size(580, 500),{numZoomLevels: 30});



Les bounds que je choisis font référence à mon map.setcenter initial[2] et aux coordonnées long lat que me rendait le premier kml [1] :
[1]
<LatLonBox>
<north>48.95461308533419</north>
<south>48.72684710498827</south>
<east>2.456115902535942</east>
<west>2.032263169704167</west>
</LatLonBox>

[2]
var lat=48.845
var lon=2.325
map.setCenter (lonLat, zoom)

Mais en vain !!! Rien n'y fait !! Quand je clique sur le base layer 'transport' un magnifique fond blanc apparait et l'échelle de zoom claque un beau bug
J'ai surement dû faire une belle boulette mais je ne la trouve pas !
Merci aux connaisseurs,

Bonne soirée

Pierre

Hors ligne

 

#2 Tue 02 December 2008 18:50

René-Luc D'Hont
Participant assidu
Date d'inscription: 7 Nov 2006
Messages: 328
Site web

Re: [OpenLayers] Comment faire insérer mon beau raster !!

Bonjour,

Tout d'abord si tu utilises les fonds Google, quelle projection de visualisation utilises-tu, EPSG:4326 ou EPSG:900913 ?

Il est important si tu souhaites avoir un affichage le plus propre possible de travailler en Google Spherical Mercator, EPSG:900913. Plus d'info [urlhttp://crschmidt.net/~crschmidt/spherical_mercator.html]ici[/url] : http://crschmidt.net/~crschmidt/spherical_mercator.html

Hors ligne

 

#3 Wed 03 December 2008 10:12

pilou272002
Participant occasionnel
Date d'inscription: 9 Sep 2005
Messages: 24

Re: [OpenLayers] Comment faire insérer mon beau raster !!

Le display projection que j'utilise est epsg 4326.
Comme je ne suis qu'un amateur, voici les premières lignes de code :

        function init(){
               map = new OpenLayers.Map ("map", {
                controls:[
                    new OpenLayers.Control.Navigation(),
                    new OpenLayers.Control.PanZoomBar(),
                    new OpenLayers.Control.Attribution()],
                maxExtent: new OpenLayers.Bounds(-20037508.34,-20037508.34,20037508.34,20037508.34),
                maxResolution: 156543.0399,
                numZoomLevels: 50,
                units: 'm',
                projection: new OpenLayers.Projection("EPSG:900913"),
                displayProjection: new OpenLayers.Projection("EPSG:4326")
            } );
            var gsat = new OpenLayers.Layer.Google(
                "Photographie aerienne",
                {type: G_SATELLITE_MAP, 'sphericalMercator': true, numZoomLevels: 22}
            );
            map.addLayer(gsat);
            var gmap = new OpenLayers.Layer.Google(
                "Habillage routier",
                {'sphericalMercator': true}
            );
            map.addLayer(gmap);
            var lonLat = new OpenLayers.LonLat(lon, lat).transform(new OpenLayers.Projection("EPSG:4326"), map.getProjectionObject());
            map.setCenter (lonLat, zoom);


Merci beaucoup René-Luc pour ton aide.

Bonne journée

Hors ligne

 

#4 Wed 03 December 2008 11:36

René-Luc D'Hont
Participant assidu
Date d'inscription: 7 Nov 2006
Messages: 328
Site web

Re: [OpenLayers] Comment faire insérer mon beau raster !!

Donc comme l'indique ton code, tu affiches ta carte en Google Spherical Mercator :

Code:

projection: new OpenLayers.Projection("EPSG:900913")

Par contre en déclarant :

Code:

displayProjection: new OpenLayers.Projection("EPSG:4326")

Tu permets seulement à des contrôles (OpenLayers.Control) de te fournir des informations dans la projection WGS84

Donc pour ton problème de couche Image tu dois reprojeté la bounding box de ton image exprimé en EPSG:4326, comme tu le fais avec le centre de ta carte à l'initialisation.

Tu devrais donc faire :

Code:

var bounds = new OpenLayers.Bounds(-0.109,0.1182,0.1311,-0.293);
bounds.transform(new OpenLayers.Projection("EPSG:4326"), map.getProjectionObject());
transports =new OpenLayers.Layer.Image("Desserte actuelle et future", "Transports.png",
  bounds,
  new OpenLayers.Size(580, 500),
  {numZoomLevels: 30});

Si tu ne fais pas cela ton image est en fait affichée au milieu du golfe de guinée!

Hors ligne

 

#5 Wed 03 December 2008 14:21

pilou272002
Participant occasionnel
Date d'inscription: 9 Sep 2005
Messages: 24

Re: [OpenLayers] Comment faire insérer mon beau raster !!

Merci René-Luc pour ces précisions.
J'ai essayé ton code mais lorsque je clique sur le base layer "desserte actuelle et future", des erreurs sont identifiées sur une ligne totalement anodine.
J'avoue être perdu mais je ne désespère pas, je vais continuer de chercher et trouver LA solution.......... ou pas :o)

Au cas où, je mets en pièce jointe un ptit zip de mon projet

Merci et Bonne journée

Dernière modification par pilou272002 (Wed 03 December 2008 15:06)


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

Hors ligne

 

#6 Wed 03 December 2008 15:42

René-Luc D'Hont
Participant assidu
Date d'inscription: 7 Nov 2006
Messages: 328
Site web

Re: [OpenLayers] Comment faire insérer mon beau raster !!

A mon avis tu oubliés un simple var devant le premier bounds!

Hors ligne

 

#7 Wed 03 December 2008 16:09

René-Luc D'Hont
Participant assidu
Date d'inscription: 7 Nov 2006
Messages: 328
Site web

Re: [OpenLayers] Comment faire insérer mon beau raster !!

J'ai commencer à débugger et je vous conseille de vérifier tous les chemins que vous utilisez. Que ce soit pour transport ou pour les fichier KML vous pointez dans le vide.

Ensuite il faut utiliser

Code:

var bounds = new OpenLayers.Bounds(2.032263169704167, 48.72684710498827, 2.456115902535942, 48.95461308533419);
bounds.transform(new OpenLayers.Projection("EPSG:4326"), map.getProjectionObject());
transports =new OpenLayers.Layer.Image("Desserte actuelle et future", 
                                                  "TRANSPORT.png",
                                                  bounds,
                                                  new OpenLayers.Size(580, 500),
                                                  {isBaseLayer:false});

Vous vous appercevrez ainsi que votre image ne colle pas avec les fonds google. Ceci est normal puisque l'image est en 4326, alors que Google est en 900913. Ensuite il y a des problèmes avec les JSON, qui ne semble pas reprojeté.

En fonction de ce que vous voulez faire, je vous conseille, soit de vous affranchir de Google et de travaille en 4326 avec l'image Transport comme fond. Soit de recréer une image du transport mais cette fois selon la projection de Google et de réviser votre code de sorte que toutes vos couches soit transformer en 900913.

Hors ligne

 

#8 Thu 04 December 2008 10:24

pilou272002
Participant occasionnel
Date d'inscription: 9 Sep 2005
Messages: 24

Re: [OpenLayers] Comment faire insérer mon beau raster !!

Merci beaucoup René-Luc, J'arrive désormais à superposer mon image.
Il est vrai que je dois cependant épurer mon code.
Merci beaucoup

Hors ligne

 

Pied de page des forums

Powered by FluxBB