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 :

2.0.0beta2 Geoportal.Catalogue.TERRITORIES[d] is undefined


Sujet :

IGN API Géoportail

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2010
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2010
    Messages : 67
    Points : 35
    Points
    35
    Par défaut 2.0.0beta2 Geoportal.Catalogue.TERRITORIES[d] is undefined
    Bonjour,

    Suite à un mail IGN m'avertissant "qu'il y a un risque de défaillance matérielle qui ne sera pas garantie. Nous vous conseillons donc de commencer à utiliser l'API 2.0 et les flux du Géoportail 3 puisque votre clé vous le permet. Il suffit de remplacer dans le code « 1.3 » par « 2.0beta2 »."

    Ce que j'ai fait mais visiblement, sans rien changer d'autre dans mon code, ça ne suffit pas.
    Pour info, j'utilise l'api dans openlayers et je n'ai changé que l'appel au fichier GeoportalMin.js en replaçant le 1.3 par 2.0.0beta2 dans le chemin de l'appel.

    J'ai donc cette erreur :
    Geoportal.Catalogue.TERRITORIES[d] is undefined
    firebug me dit que ça vient de la ligne 203 dans mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var zon = cat.getTerritory('EUE');
    et de la ligne 138 dans geoportalMin.js
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    transform()GeoportalMin.js (ligne 138)
    d = "FXX"
    pour info, voici ma fonction createMap() et la fonction qui charge la clé :
    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
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    ,init:function(monprotocole){
                // on attend que les classes soient chargées
                 if (typeof(OpenLayers)==='undefined' || typeof(Geoportal)==='undefined') {
                    setTimeout('application.cf.init('+monprotocole+');',300);
                    return;
                }
                // on charge la configuration de la clef API, puis on charge l'application
                Geoportal.GeoRMHandler.getConfig([ign_api_key], null,null, {
                    onContractsComplete: this.ziva(monprotocole)
                });
            } 
    
    ,createMap: function() {
                // var map;
                // var epsg4171= new OpenLayers.Projection("EPSG:4171");
                // var ignfxx= new OpenLayers.Projection("IGNF:GEOPORTALFXX");
                // var epsg310024001= new OpenLayers.Projection("EPSG:310024001");
    
                 /**
                 * Function: setGeoRM
                 * Assign Geoportal's GeoRM token to an Object.
                 *
                 * Returns:
                 * {Object} the rightsManagement key
                 */
                function setGeoRM() {
                    return Geoportal.GeoRMHandler.addKey(
                        gGEOPORTALRIGHTSMANAGEMENT.apiKey,
                        gGEOPORTALRIGHTSMANAGEMENT[gGEOPORTALRIGHTSMANAGEMENT.apiKey[0]].tokenServer.url,
                        gGEOPORTALRIGHTSMANAGEMENT[gGEOPORTALRIGHTSMANAGEMENT.apiKey[0]].tokenServer.ttl,
                        map);
                }
                function createIgnLayer(couche,opacite,LayerBase,extentMax){
                    if(couche==null){
                        setTimeout('createIgnLayer('+couche+','+opacite+','+LayerBase+','+extentMax+');',300);
                        return;
                    }
                        couche.options.opacity = opacite;
                        couche.options.isBaseLayer = LayerBase;
                        couche.options.maxExtent = extentMax;
                        // couche.options.projection = epsg310024001;
                        couche.options["GeoRM"] = setGeoRM();
                        couche.transitionEffect= 'resize';
                        var ignLayer = new couche.classLayer(
                            OpenLayers.i18n(couche.options.name),
                            couche.url,
                            couche.params,
                            couche.options);
    
                    return ignLayer
                };
                
                var id = Ext.id();
                Ext.DomHelper.append(Ext.getBody(), {tag: 'div', cn: {tag: 'div', id: id}, style:'visibility: hidden'});
                map = new OpenLayers.Map(id 
                    ,OpenLayers.Util.extend({
                        maxResolution: resolution_max
                        ,numZoomLevels: num_zoom_levels
                        ,projection: 'EPSG:310024001'
                        // ,displayProjection:epsg4171
                        ,units: 'meters'
                        ,maxExtent: extent_max
                        ,controls:[
                            new OpenLayers.Control.ScaleLine()
                            ,new OpenLayers.Control.MousePosition({
                                prefix: "Lambert 93 : x = "
                                ,suffix: " m"
                                ,separator: " m, y = "
                                ,displayProjection: new OpenLayers.Projection("IGNF:LAMB93")
                                ,numDigits: 0
                                ,emptyString: ''
                            })
                            ,new OpenLayers.Control.KeyboardDefaults()
                            ,new OpenLayers.Control.Attribution()
                            ,new OpenLayers.Control.Navigation()
                            ,new Geoportal.Control.PermanentLogo()
                            ,new Geoportal.Control.TermsOfService()
                        ]
                    }
                    ,gGEOPORTALRIGHTSMANAGEMENT)
                );
                maMap = map;//debug
                // get IGNF's catalogue :
                var cat = new Geoportal.Catalogue(map,gGEOPORTALRIGHTSMANAGEMENT);
                var zon = cat.getTerritory('EUE');
                // get Geoportail layer's parameters :
                var scanOpts= cat.getLayerParameters(zon, 'GEOGRAPHICALGRIDSYSTEMS.MAPS:WMSC');
                var orthoOpts= cat.getLayerParameters(zon, 'ORTHOIMAGERY.ORTHOPHOTOS:WMSC');
                var cadastreOpts= cat.getLayerParameters(zon, 'CADASTRALPARCELS.PARCELS:WMSC');
                var etatmajorOpts= cat.getLayerParameters(zon, 'GEOGRAPHICALGRIDSYSTEMS.ETATMAJOR40:WMSC');
                //create layers
                var scan = createIgnLayer(scanOpts,1.0,true,extent_max);
                var ortho = createIgnLayer(orthoOpts,1.0,false,extent_max);
                var cadastre = createIgnLayer(cadastreOpts,null,false,extent_max);
                var etatmajor = createIgnLayer(etatmajorOpts,1.0,false,extent_max);
                // scanOpts.options.projection = new OpenLayers.Projection("EPSG:310024001");
                // reproject maxExtent (Geoportal's API standard and extended do it automagically :
                // scanOpts.options.maxExtent.transform(scanOpts.options.projection, map.getProjection(), true);
                // add it to the map :
                map.addLayers([scan,ortho,cadastre,etatmajor]);
     
                var overlay = new OpenLayers.Layer.WMS("overlay",
                    "/faun/faun"
                    ,{
                        layers: [
                          'znieff2'
                          , 'znieff1'
                          ,'coeur'
                          , 'ab'
                          ,'reservesnat'
                          , 'reserveschasse'
                          , 'sitesinscrits'
                          , 'sitesclasses'
                          , 'n2000'
                          ,'communes'
                          ,'secteurs'
                          ,'unitesgeo'
                        ]
                        ,transparent: true
                        ,projection:'EPSG:310024001'
                        ,units: 'meters'
                        ,maxResolution: resolution_max
                        ,maxExtent: extent_max
                        // ,version: '1.3.0'
                        ,statuscode: application.cf.user.statuscode
                        // ,territory:'EUE'
                    }
                    ,{singleTile: true}
                );
                map.addLayers([overlay]);
                
                this.searchVectorLayer = new OpenLayers.Layer.Vector('search_vector_layer', {
                    style: {
                      fillColor: "#000000"
                      ,strokeColor: "#ff0000"
                      ,cursor: "pointer"
                      ,fillOpacity: 0.1
                      ,strokeOpacity: 1
                      ,strokeWidth: 2
                      ,pointRadius: 8
                    }
                    ,styleMap: new OpenLayers.StyleMap({
                      temporary: new OpenLayers.Style({
                        strokeWidth: 2
                        ,strokeColor: "#ffa500"
                        ,fillOpacity: 0.2
                      })
                    })
                  });
                map.addLayers([this.searchVectorLayer]);
                this.selectFeatureControl = new OpenLayers.Control.SelectFeature(this.searchVectorLayer, {});
                map.addControl(this.selectFeatureControl);
                this.selectFeatureControl.activate();
                
                return map;
            }

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Architecte technique
    Inscrit en
    Mai 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mai 2010
    Messages : 7
    Points : 7
    Points
    7
    Par défaut
    Bonjour,

    Il me semble qu'avec l'API 2.0, il ne faut plus nommer les couches de cette manière ORTHOIMAGERY.ORTHOPHOTOS:WMSC mais juste, ORTHOIMAGERY.ORTHOPHOTOS puisque le format n'est plus le WMSC...

    Le problème ne semble pas venir de là de toute façon.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    442
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 442
    Points : 502
    Points
    502
    Par défaut
    L'API 2.0XX fait appelle aux services WMTS du Géoportail 3. La projection des tuiles WMTS y est du web Mercator (EPSG:3857). Il n'y a plus de projection par territoire.
    Pour rappel, le Géoportail 2 avait des tuiles en WMS-C avec une projection par zone (FXX en métropole, ANT pour les Antilles...).
    J'en conclu que le paramètre territories est devenu inutile.

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2010
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2010
    Messages : 67
    Points : 35
    Points
    35
    Par défaut
    Citation Envoyé par julienltr Voir le message
    Bonjour,

    Il me semble qu'avec l'API 2.0, il ne faut plus nommer les couches de cette manière ORTHOIMAGERY.ORTHOPHOTOS:WMSC mais juste, ORTHOIMAGERY.ORTHOPHOTOS puisque le format n'est plus le WMSC...

    Le problème ne semble pas venir de là de toute façon.
    Merci julien. Effectivement si je retire le :WMSC, même erreur. Il y a certainement un lien avec la remarque de Eric.
    Je creuse le sujet. Mais ce qui m'étonne c'est que mon code est inspiré de cet exemple qui utilise l'api 2.0.0beta
    http://api.ign.fr/tech-docs-js/examp...alMinimum.html
    et qu'il est construit comme le mien, avec cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var zon= cat.getTerritory('EUE');

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2010
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2010
    Messages : 67
    Points : 35
    Points
    35
    Par défaut
    Citation Envoyé par EricLebottier Voir le message
    L'API 2.0XX fait appelle aux services WMTS du Géoportail 3. La projection des tuiles WMTS y est du web Mercator (EPSG:3857). Il n'y a plus de projection par territoire.
    Pour rappel, le Géoportail 2 avait des tuiles en WMS-C avec une projection par zone (FXX en métropole, ANT pour les Antilles...).
    J'en conclu que le paramètre territories est devenu inutile.
    Merci Eric. Ce post ne résoud pas mon erreur mais m'éclaire et risque de me poser problème. j'ai en effet construit mes applis (Extjs et Openlayers) et ma base postgis avec la projection des tuiles du Géoportail 2 (EPSG : 310024001 = IGNFXX) ; j'ai un tas de triggers et de requêtes php basés sur cette projection, + du code js openlayers... S'il faut adapter tout ça...
    c'est pas cool ça de la part de l'IGN de changer la projection du service geoportail.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    442
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 442
    Points : 502
    Points
    502
    Par défaut
    Normalement l'API en JavaScript gère elle-même le reprojection, le fait de passer à la 2.0 depuis le 1.3 ne change pas grand chose.

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2010
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2010
    Messages : 67
    Points : 35
    Points
    35
    Par défaut
    Citation Envoyé par EricLebottier Voir le message
    Normalement l'API en JavaScript gère elle-même le reprojection, le fait de passer à la 2.0 depuis le 1.3 ne change pas grand chose.
    J'espère qu'il y aura une solution de ce type qui affiche les cartes proprement car si on regarde l'exemple ici on a une carte déformée et des labels peu lisibles. J'avais eu des pb de ce type et pas mal creusé différentes solutions. C'est pourquoi j'avais fait le choix d'enregistrer mes données en base sur la même projection que les tuiles.

Discussions similaires

  1. Geoportal.Catalogue.TERRITORIES : prb limites administratives
    Par saxrub dans le forum IGN API Géoportail
    Réponses: 5
    Dernier message: 08/02/2013, 16h37
  2. Réalisation d'un catalogue tarifaire XML + Flash
    Par braouazou dans le forum XML/XSL et SOAP
    Réponses: 5
    Dernier message: 02/05/2008, 10h36
  3. [FLASH 8] Catalogue
    Par murfy dans le forum Flash
    Réponses: 7
    Dernier message: 10/04/2007, 09h43
  4. [ADOX]Source d'un recordset avec un catalogue
    Par jacma dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 09/10/2005, 12h25
  5. Catalogue en ligne > relier vers une autre db
    Par zatomik dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 14/09/2004, 11h12

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