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 :

Pas d'affichage des niveaux de zoom détaillé


Sujet :

IGN API Géoportail

  1. #1
    Futur Membre du Club
    Profil pro
    Développeur Java
    Inscrit en
    Août 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Août 2006
    Messages : 7
    Points : 5
    Points
    5
    Par défaut Pas d'affichage des niveaux de zoom détaillé
    Bonjour, je viens d'intégrer dans mon application l'appel à des couches geoportail (orthophoto et cadastre raster).

    Mon application étant OpenLayers + jquery, avec une projection en spherical mercator, je cherche à être le moins intrusif possible. Je suis donc passé par l'API min, je gère mes droits avec l'objet GeoRMHandler, et je fais créer mes couches par le Catalogue correspondant.

    Les couches s'affichent sans problème... pour quelques niveaux de zoom seulement. Je n'ai aucun affichage pour un zoom >= à 16. Est-ce une question de droits sur ma clé de dev ? de noms des couches ? est-ce normal ? Dans la doc technique je vois des affichages beaucoup plus précis.

    Mon code spécifique :
    Objet dédié pour regrouper les paramètres IGN :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    carto.ign = {
        territoire:'FXX',
        couches : {
            photo : 'ORTHOIMAGERY.ORTHOPHOTOS',
            cadastre : 'CADASTRALPARCELS.PARCELS',
            topo: 'GEOGRAPHICALNAMES.NAMES'
        },
        catalogue : new Geoportal.Catalogue(carto.map, gGEOPORTALRIGHTSMANAGEMENT)
    };
    Création d'un fond vierge :
    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
    carto.map.addLayers([
        new OpenLayers.Layer(
            'fond',
            {
    		isBaseLayer: true,
    		displayInLayerSwitcher: false,
    		projection : carto.projs.spherMercator,
    		units : 'm',
    		maxExtent: new OpenLayers.Bounds(-20037508.34, -20037508.34, 20037508.34, 20037508.34),
    		maxResolution : 156543.033928,
    		numZoomLevels: 21,
    		minZoomLevel:1,
    	        maxZoomLevel:21,
    		territory: carto.ign.territoire
    	})]);
    Création de mes couches :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    carto.couche.chargerCoucheIgn(carto.ign.couches.photo, 20);
    carto.couche.chargerCoucheIgn(carto.ign.couches.cadastre, 19);
    carto.couche.chargerCoucheIgn(carto.ign.couches.topo, 19);
    Méthode chargerCoucheIgn :
    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
    chargerCoucheIgn : function(codeCouche, niveauZoomMax) {
        var parametres = carto.ign.catalogue.getLayerParameters(carto.ign.territoire, codeCouche);
        if (parametres != null) {
            parametres.options.opacity= 1.0;
    	parametres.options.maxZoomLevel = niveauZoomMax;
    	
    	var coucheIgn = new parametres.classLayer(
    	    OpenLayers.i18n(parametres.options.name),
    	    parametres.url,
    	    parametres.params,
    	    parametres.options);
    			
    	carto.map.addLayers([coucheIgn]);
        } else {
            carto.logger.log("couche non authorisée : " + codeCouche);
        }
    },
    Merci d'avance,

    Cyril DEJONGHE

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

    Informations forums :
    Inscription : Mai 2009
    Messages : 2 128
    Points : 1 764
    Points
    1 764
    Par défaut
    Sur http://mga.alwaysdata.net/geoportail...s/ol_gpp3.html, je ne charge par l'API et cela fonctionne en pur OpenLayers.
    Donc avec jquery, cela devrait être aussi possible.

  3. #3
    Futur Membre du Club
    Profil pro
    Développeur Java
    Inscrit en
    Août 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Août 2006
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Merci pour ton exemple, je vais regarder.
    Pour le moment mon pb n'est pas de charger ou pas l'API min mais d'afficher des niveaux de zoom détaillées... c'est peut-être lié ... ou pas...

  4. #4
    Futur Membre du Club
    Profil pro
    Développeur Java
    Inscrit en
    Août 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Août 2006
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    J'ai regardé ton exemple : tu n'as pas d'orthophoto plus détaillé que moi. La doc indique une couche orthophoto détaillé (BD Ortho jusqu'à 18, Ortho HR jusqu'à 20). Mais je ne trouve pas de description des possibilités des licences de démo en termes de zoom...

  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
    Sur l'exemple de mga_geo, il faut préciser les resolutions pour que openlayers adapte sa zoombar :

    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
    ...
      var resolutions= [
        156543.0339280410,
    78271.5169640205,
    39135.7584820102,
    19567.8792410051,
    9783.9396205026,
    4891.9698102513,
    2445.9849051256,
    1222.9924525628,
    611.4962262814,
    305.7481131407,
    152.8740565704,
    76.4370282852,
    38.2185141426,
    19.1092570713,
    9.5546285356,
    4.7773142678,
    2.3886571339,
    1.1943285670,
    0.5971642835,
    0.2985821417,
    0.1492910709,
    0.0746455354
      ] ;
    
      var options = {
        name: "Cartes IGN",
        url: "http://gpp3-wxs.ign.fr/" + apiKEY + "/wmts",
        layer: "GEOGRAPHICALGRIDSYSTEMS.MAPS",
        matrixSet: "PM",
        resolutions:resolutions,
        style: "normal",
    ...
      };
    Les resolutions ont été trouvées dans cette page de la doc technique

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

    Informations forums :
    Inscription : Mai 2009
    Messages : 2 128
    Points : 1 764
    Points
    1 764
    Par défaut
    C'est à jour, et tout rose si on zoome de trop ...

  7. #7
    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
    oui, pour l'ortho, il n'y a pas de données sur les deux derniers niveaux de résolutions.

  8. #8
    Futur Membre du Club
    Profil pro
    Développeur Java
    Inscrit en
    Août 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Août 2006
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    J'ai donc renseigné les résolutions et cela a bien corrigé mon souci de zoom. Désormais, je spécifie même une résolution max d'affichage (pour le cadastre).

    1) J'ai donc pour carto.ign :
    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
    carto.ign = {
    	territoire:'FXX',
    	couches : {
    		photo : 'ORTHOIMAGERY.ORTHOPHOTOS',
    		cadastre : 'CADASTRALPARCELS.PARCELS',
    		topo: 'TOPONYMS.ALL'
    	},
    	resolutions : [
    		//156543.0339280410,
    		//78271.5169640205,
    		//39135.7584820102,
    		//19567.8792410051,
    		//9783.9396205026,
    		//4891.9698102513,
    		//2445.9849051256,
    		1222.9924525628,
    		611.4962262814,
    		305.7481131407,
    		152.8740565704,
    		76.4370282852,
    		38.2185141426,
    		19.1092570713,
    		9.5546285356,
    		4.7773142678,
    		2.3886571339,
    		1.1943285670,
    		0.5971642835,
    		0.2985821417,
    		0.1492910709,
    		0.0746455354],
    	scales : [
    		//559082264,
    		//279541132,
    		//139770566,
    		//69885283,
    		//34942642,
    		//17471321,
    		//8735660,
    		4367830,
    		2183915,
    		1091958,
    		545979,
    		272989,
    		136495,
    		68247,
    		34124,
    		17062,
    		8531,
    		4265,
    		2133,
    		1066,
    		533,
    		267]
    };
    Je stocke les échelles correspondantes pour pouvoir spécifier un minScale par la suite, j'ai commenté les échelles qui ne servent pas dans mon cas (régional).

    2) Je couple ça avec des constantes de niveau de zoom (je trouve ça plus parlant que de parler en résolution ou en échelle) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    config.zoom = {
    	minCarte : 0,
    	maxCarte : 14,
    	defaut : 8,
    	minCadastre : 9
    }
    Ma carte a donc maintenant 15 niveaux sur 22 (0...14 qui correspondent aux niveaux 7 à 21 geoportail).

    3) Ma création de map déclare les résolutions :
    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
    carto.map = new OpenLayers.Map(
    	"map",
    	OpenLayers.Util.extend(
    		{
    			controls : [
    				new OpenLayers.Control.ScaleLine({
    					geodesic : true
    				}),
    				new OpenLayers.Control.Navigation(),
    				new OpenLayers.Control.PanZoomBar(),
    				new OpenLayers.Control.MousePosition({
    					id: "position",
    					projection : carto.projs.spherMercator,
    					displayProjection : carto.projs.wgs84
    				}),
    				new OpenLayers.Control.LayerSwitcher({title : 'Choix des calques visibles'}),
    				// gestion de droits IGN
    				new OpenLayers.Control.Attribution(),
    				new Geoportal.Control.TermsOfService()
    				],
    				projection : carto.projs.spherMercator,
    				units : 'm',
    				maxResolution : 'auto',
    				resolutions : carto.ign.resolutions,
    				maxExtent : new OpenLayers.Bounds(-20037508.34, -20037508.34, 20037508.34, 20037508.34)
    			},
    		// gestion de droits IGN
    		gGEOPORTALRIGHTSMANAGEMENT)
    	);
    4) Ma création de couche précise un minScale pour ne pas afficher le cadastre aux niveaux de zooms inférieurs.
    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
    chargerFond : function () {
    	carto.couche.toutes.push(new OpenLayers.Layer(
    		'fond',
    		{
    			isBaseLayer: true,
    			displayInLayerSwitcher: false,
    			projection : carto.projs.spherMercator,
    			units : 'm',
    			territory: carto.ign.territoire
    		}));
    
    	carto.couche.chargerCoucheIgn(carto.ign.couches.photo, carto.config.zoom.minCarte);
    	carto.couche.chargerCoucheIgn(carto.ign.couches.cadastre, carto.config.zoom.minCadastre);
    },
    
    /**
     * Charger couche IGN via API geoportail min + openlayers 2.11.
     * @param codeCouche
     * @param zoomMin
     */
    chargerCoucheIgn : function(codeCouche, zoomMin) {
    	var parametres = carto.ign.catalogue.getLayerParameters(carto.ign.territoire, codeCouche);
    	if (parametres != null) {
    		parametres.options.opacity = 1.0;
    		parametres.options.minScale = carto.ign.scales[zoomMin];
    		parametres.options.visibility = true;
    		// construire layer :
    		var coucheIgn = new parametres.classLayer(
    			OpenLayers.i18n(parametres.options.name),
    			parametres.url,
    			parametres.params,
    			parametres.options);
    			
    		// ajouter :
    		carto.couche.toutes.push(coucheIgn);
    	} else {
    		carto.logger.log("couche non autorisée : " + codeCouche);
    	}
    }
    Cela règle donc l'affichage de ma carte à grands niveaux de zoom. Et désormais, on ne peut plus dézoomer jusqu'à voir le monde, on est limité au niveau 7 de geoportail.

    Merci encore pour votre aide. J'ai d'autres soucis / régression mais c'est un autre sujet.

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

Discussions similaires

  1. pas d'affichage des statistiques dans navigateur
    Par claire274 dans le forum Statistiques
    Réponses: 2
    Dernier message: 04/07/2008, 23h51
  2. Pas d'affichage des données d'un formulaire
    Par Fresal dans le forum IHM
    Réponses: 4
    Dernier message: 17/06/2008, 21h53
  3. [AJAX] [Struts] Pas d'affichage des boutons lors du raffraîchissement
    Par AnneB dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 20/07/2007, 13h29
  4. Pas d'affichage des valeurs nulles avec un COUNT
    Par phoenixz22 dans le forum Langage SQL
    Réponses: 13
    Dernier message: 30/05/2007, 18h39
  5. [Swing][ListCellRenderer]Pas d'affichage des composants
    Par Cyberwan dans le forum AWT/Swing
    Réponses: 9
    Dernier message: 08/02/2006, 00h22

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