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

Suite à un problème technique intervenu entre le 22 et le 23 mars, nous avons du procéder dans la soirée du 25 mars, à la restauration de la base de données du 24 mars (matinée).

En clair, nous avons perdu vos contributions et inscriptions du dimanche 24 et du lundi 25 mars.
Nous vous prions de nous excuser.

#1 Wed 03 February 2016 09:55

seb.49
Participant occasionnel
Date d'inscription: 5 Jun 2009
Messages: 19

Positionnement d'un OpenLayers.Image

Bonjour,

la question a probablement déjà été posé mais je n'ai pas trouvé de solution convenable à mon problème sur le forum.

J'ai un souci pour positionner une image avec OpenLayers. J'ai un logiciel (web) qui génére soit du KML soit permet de voir des cartes dans une interface web avec OpenLayers.

Concètement voici une capture d'une carte visualisée sous Google Earth et la meme avec openlayers, (après vérification c'est la carte sous Google Earth qui est bonne). On constate le décalage surtout sur la zone de Saint Brieuc. J'ai beau vérifier la boudingbox de mon image sous openlayers les coordonnées sont bien les memes que sous Google Earth mais convertis en EPSG:900913

[img]http://img15.hostingpics.net/pics/154662capturege.png[/img]
[img]http://img15.hostingpics.net/pics/183835captureol.png[/img]

Qu'ai je mal fait ? la conversion ? Faut il que je retaille mon image avant avec gdal (j'ai vu des choses avec gdalwarp) ?


Voici le code pour ajouter l'image dans OpenLayers

Code:

 var bounds = new OpenLayers.Bounds();
    bounds.extend(ConvertLonLatFromESPG4326ToESPG900913(new OpenLayers.LonLat(y1, x1)));
    bounds.extend(ConvertLonLatFromESPG4326ToESPG900913(new OpenLayers.LonLat(y2, x2)));

    var graphic = new OpenLayers.Layer.Image(
                nomImage,
                url,
                bounds,
                new OpenLayers.Size($("#map").width(), $("#map").height()),
                {
                    //http://www.forumsig.org/showthread.php?t=26393
                    maxResolution: map.layers[0].resolutions[0],
                    resolutions: map.layers[0].resolutions,                    
                    isBaseLayer: false,
                    displayInLayerSwitcher: true
                }
            );
    map.addLayer(graphic);

Merci pour votre aide

Dernière modification par seb.49 (Wed 03 February 2016 09:56)

Hors ligne

 

#2 Mon 08 February 2016 11:26

seb.49
Participant occasionnel
Date d'inscription: 5 Jun 2009
Messages: 19

Re: Positionnement d'un OpenLayers.Image

Je vous mets en lien un code sur JsFiddle pour tester
http://jsfiddle.net/seb49/8j017j93/

on voit que les 4 points ajoutés sont bon s(si on les place sur google earth on se trouve aux même endroits) donc la boudingbox est bonne. Que fait OpenLayers à mon image ??

Merci de votre aide

Dernière modification par seb.49 (Mon 08 February 2016 11:26)

Hors ligne

 

#3 Wed 10 February 2016 15:34

seb.49
Participant occasionnel
Date d'inscription: 5 Jun 2009
Messages: 19

Re: Positionnement d'un OpenLayers.Image

J'en enfin la solution, comme je le pensais il fallait passer par gdalwarp.

Voici le code qui génère une image correctement redessinée

Code:

//etape1 créer un GeoTIFF
gdal_translate.exe  -of Gtiff -co tfw=yes -a_ullr -5.25555900000001 52.739645 10.334585 41.047037 -a_srs EPSG:4326 "D:\imageSource.png" "D:\imageEtape1.tiff"
//etape2 redessiner ce GeoTIFF
gdalwarp.exe  -co COMPRESS=LZW -r bilinear -s_srs EPSG:4326 -t_srs EPSG:900913 "D:\imageEtape1.tiff" "D:\imageEtape2.tiff" 
//etape3 transformer le geoTiff tranformé en PNG
gdal_translate.exe  -of PNG -a_ullr -5.25555900000001 52.739645 10.334585 41.047037 -a_srs EPSG:4326 "D:\imageEtape2.tiff" "D:\imageFinale.png"

Espérant que cela servira à quelqu'un (je comprend mieux maintenant pourquoi OpenLayers bien que sachant afficher du kml ne gère pas les groundoverlay, cela reviendrai à ma situation de départ)

Hors ligne

 

Pied de page des forums

Powered by FluxBB