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 :

Extension pour OL3 : représentation "aplatie" en EPSG:4326, et pb en RGF93G


Sujet :

IGN API Géoportail

  1. #1
    Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Mai 2014
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mai 2014
    Messages : 71
    Points : 66
    Points
    66
    Par défaut Extension pour OL3 : représentation "aplatie" en EPSG:4326, et pb en RGF93G
    Bonjour à tous,

    En mettant en œuvre les premiers exemples tout simples fournis par la doc :
    https://geoservices.ign.fr/documenta...nsion-ol3.html

    je remarque des soucis de représentation "aplatie" (ou anamorphosée) de la carte, dès lors que l'on utilise la projection EPSG:4326 (lon, lat) en lieu et place du système par défaut

    Quelqu'un peut-il me dire qq chose sur ce phénomène ?

    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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    <!DOCTYPE html>
    <html>
    
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
    
    	<!-- Library OpenLayers 3 -->
    	<link rel="stylesheet" href="http://localhost/v3.20.1-dist/ol.css" />
    	<script src="http://localhost/v3.20.1-dist/ol.js"></script>
    
    	<!-- Extension Géoportail pour OpenLayers 3 -->
    	<script src="http://localhost/GpOpenLayers/GpPluginOl3.js"></script>
    	<link rel="stylesheet" href="http://localhost/GpOpenLayers/GpPluginOl3.css" />
    
    	<style type="text/css">
    		#map {
    			padding: 5px;
    			width: 800px;
    			height: 600px;
    			box-shadow: 0 0 10px #999;
    		}
    		#info {
    			padding: 5px;
    			width: 100%;
    			height: 20px;
    			font-family : "monospace" ;
    			font-size: 10px;
    		}
    	</style>
    
    </head>
    
    <body>
    
    	<div id="map"></div>
    	<div id="info"></div>
    
    <script>
    
    function go() {
        var osmLyr = new ol.layer.Tile({
            source: new ol.source.OSM()
        });
        var map = new ol.Map({
            target: 'map',
            layers: [
                osmLyr,  // ----- Couche Open Street Map
    			new ol.layer.Tile({
    				source: new ol.source.GeoportalWMTS({
    					layer: "GEOGRAPHICALGRIDSYSTEMS.MAPS",
    				}),
    			}),		
    			new ol.layer.Tile({
    				source: new ol.source.GeoportalWMTS({
    					layer: "ORTHOIMAGERY.ORTHOPHOTOS",
    				}),
    				opacity: 0.7
    			}),		
            ],
            view: new ol.View({
    			center: [2.33, 48.86],
    			zoom: 12,
    			projection: "EPSG:4326"
            })
        });    
        var lsControl = new ol.control.LayerSwitcher({
            layers : [{
                layer: osmLyr,
                config: {
                    title: "OSM",
                    description: "Couche OpenStreet Map",
                }
            }], 
            options : {
                collapsed: true
            }
        });
        map.addControl(lsControl);
    	
    	var mpControl = new ol.control.GeoportalMousePosition({
            collapsed: false,
            systems : [
                {
                    crs : "EPSG:4326",
                    label : "Géographiques",
                    type : "Geographical"
                },
    	   {
                    crs : 'EPSG:4559',
                    label : "UTM 20 Nord",
                    type : "Metric"
                },
            ],
            units : ["DEC","DMS","M",]
        });
        map.addControl(mpControl);
    	
    }
    
    Gp.Services.getConfig({
        apiKey: "jhyvi0fgmnuxvfv0zjzorvdn",
        onSuccess: go
    });
    
    var infoDiv = document.getElementById("info");
    infoDiv.innerHTML = "<p> Extension OL3 version " + Gp.ol3extVersion + " (" + Gp.ol3extDate + ")</p>";
    
    </script>
    
    </body>
    </html>
    Quant à essayer IGNF:RGF93G, cela donne un affichage aberrant (j'ai essayé d'inverser lat et lon sans + de résultat) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    // création d'une vue OL3 avec la projection définie
    var view = new ol.View({
        center: [48, 2],
        zoom: 12,
        projection: "IGNF:RGF93G"
    })
    Help me please !

  2. #2
    Membre confirmé

    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Février 2017
    Messages
    282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2017
    Messages : 282
    Points : 632
    Points
    632
    Billets dans le blog
    2
    Par défaut
    Bonjour,
    Est-ce que votre couche osmLyr ne serait pas dans un EPSG différent des WMTS de l'IGN (EPSG3857)?
    Ce qui pourrait expliquer votre problème.
    Par ailleurs pour la fonction de centrage peu importe l'EPSG choisi du moment que les coodonnées du point de centrage sont bien celles exprimées dans l'EPSG choisi

  3. #3
    Membre chevronné Avatar de gcebelieu
    Homme Profil pro
    Ingénieur Géographe et Cartographe
    Inscrit en
    Novembre 2010
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Géographe et Cartographe
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2010
    Messages : 1 106
    Points : 1 843
    Points
    1 843
    Par défaut
    La représentation applatie d'une carte en EPSG:4326 est tout à fait normale : on convertit directement des coordonnées polaires (lon,lat) en coordonnées cartésiennes (x,y). Cf. cette page (par exemple) pour plus d'explications : https://fr.wikipedia.org/wiki/Projec...%A9quidistante

    Pour le RGF93G, il faut définir les résolutions associées aux niveaux de zoom pour cette projection ce qui aidera OpenLayers à faire la reprojection côté client. Cela se fait avec le paramètre "resolutions" de l'objet ol.View (cf. http://openlayers.org/en/latest/apidoc/ol.View.html )

    Si vous reprenez le tableau des resolutions géographique indiqué ici : https://geoservices.ign.fr/documenta...iveaux-de-zoom pour remplir ce paramètre, vous obtiendrez le même rendu que pour la projection EPSG:4326.

    J'ai fait un fiddle pour le montrer : http://jsfiddle.net/ignfgeoportail/t...t,js,html,css/


    Vous n'avez pas besoin de le préciser pour l'EPSG:4326 car c'est une projection définie par défaut par OpenLayers. Dès qu'on sort des projections classiques EPSG:3857 ou EPSG:4326, il faut fournir des paramètres supplémentaires.Cf. : http://openlayers.org/en/latest/apid...rojection.html

  4. #4
    Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Mai 2014
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mai 2014
    Messages : 71
    Points : 66
    Points
    66
    Par défaut
    OK gcebelieu. Je crois avoir compris.

    Mais cela ne règle pas trop mon problème, que je vais essayer de formuler clairement :

    Comment obtenir un rendu normal, SANS cet applatissement, tout en employant un centrage en (lon,lat) ? Quelle projection employer pour ce faire ?

    (avec l'API antérieur, je faisais ça à partir du model "Quickstart" fourni par l'IGN)

  5. #5
    Membre chevronné Avatar de gcebelieu
    Homme Profil pro
    Ingénieur Géographe et Cartographe
    Inscrit en
    Novembre 2010
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Géographe et Cartographe
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2010
    Messages : 1 106
    Points : 1 843
    Points
    1 843
    Par défaut
    OK, dans ce cas, vous laissez la projection par defaut (à savoir : EPSG:3857) et vous paramétrez votre centre en utilisant la fonction de transformation fournie par openlayers :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
          view: new ol.View({
                center: ol.proj.transform([2,48],"EPSG:4326","EPSG:3857"),
                zoom: 12,
            })
    Cf. fiddle : http://jsfiddle.net/ignfgeoportail/L...esult,js,html/

    EDIT : vous pouvez aussi utiliser la fonction ol.proj.fromLonLat([2,48]) qui vous évite de saisir les projections source (EPSG:4326) et destination (EPSG:3857)

  6. #6
    Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Mai 2014
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mai 2014
    Messages : 71
    Points : 66
    Points
    66
    Par défaut
    Super ! Merci, Gcebelieu !

+ Répondre à la discussion
Cette discussion est résolue.

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