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

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Mon 24 October 2011 15:58

Jean-Marie64
Participant actif
Lieu: Pau
Date d'inscription: 6 Nov 2007
Messages: 131

[OpenLayers] BBOX transmise dans l'URL englobant maxExtent

Bonjour

j'affiche actuellement 2 layers :
-un premier layer de cartographie
-un deuxième layer contenant des données métier

dans les 2 cas les requêtes sont en WMS

pour chacun des layers j'ai la même valeur pour la propriété maxExtent ;

cette valeur est bien prise en compte par le layer cartographie,
mais le 2ème layer n'en tient pas compte et la BBOX transmise par l'URL
(récupérant les données métier) correspond toujours aux limites
de la fenêtre du navigateur ; or si ces limites dépassent le cadre
d'affichage de la géographie, les données métier en dehors du cadre
sont affichées ; l'image jointe montre un exemple de configuration

je n'arrive donc pas à limiter la BBOX de l'URL récupérant les données
métiers aux limites définies par maxExtent;

je précise que je fais un affichage plein écran

voici quelques parties de mon code

par exemple en LambertIIe

Code:

var maxextent = new OpenLayers.Bounds(-2000 ,1200000, 1600000, 2800000);

mon premier layer est déclaré comme suit :

Code:

LayerFond = new OpenLayers.Layer.WMS(
    "fond",           
    geoserver+'/geocache/wms?',
    { layers: 'europe',             
           format: 'png'           
    },           
    {              
          isBaseLayer:true,               
          singleTile:false,               
          maxExtent: maxextent,               
          resolutions: [5000,2500,1000,500,250,100,50,25,10]  
   });

et mon deuxième layer :

Code:

LayerImpacts = new OpenLayers.Layer.WMS(
    "real time",
    dataserver+'/cgi-bin/mapserver/mapserv?map=/home/vjc/geo/mapfiles/europe/mapfile-france-time-4i.map',           
   { layers: 'impacts,copyright',
     format: 'png',
     transparent: true
   },
   {
       isBaseLayer:false,
       singleTile:true,
       buffer:0, ratio:1,
       maxExtent: maxextent
    });
var options = {
    controls:[
        new OpenLayers.Control.PanZoomBar()
    ],
    units: "m",
    minResolution: "auto",
    maxResolution: "auto",
    maxExtent: maxextent,
    projection: 'EPSG:27572'
};

puis

Code:

map = new OpenLayers.Map( 'map', options );

comment puis-je résoudre ce problème ?

merci bien

jean-Marie


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

Hors ligne

 

#2 Tue 25 October 2011 11:23

tbonfort
Participant actif
Date d'inscription: 11 Oct 2007
Messages: 87

Re: [OpenLayers] BBOX transmise dans l'URL englobant maxExtent

Jean-Marie64 a écrit:

Bonjour

j'affiche actuellement 2 layers :
-un premier layer de cartographie
-un deuxième layer contenant des données métier

dans les 2 cas les requêtes sont en WMS

pour chacun des layers j'ai la même valeur pour la propriété maxExtent ;

cette valeur est bien prise en compte par le layer cartographie,
mais le 2ème layer n'en tient pas compte et la BBOX transmise par l'URL
(récupérant les données métier) correspond toujours aux limites
de la fenêtre du navigateur ; or si ces limites dépassent le cadre
d'affichage de la géographie, les données métier en dehors du cadre
sont affichées ; l'image jointe montre un exemple de configuration

je n'arrive donc pas à limiter la BBOX de l'URL récupérant les données
métiers aux limites définies par maxExtent;

je précise que je fais un affichage plein écran

voici quelques parties de mon code

par exemple en LambertIIe

Code:

var maxextent = new OpenLayers.Bounds(-2000 ,1200000, 1600000, 2800000);

mon premier layer est déclaré comme suit :

Code:

LayerFond = new OpenLayers.Layer.WMS(
    "fond",           
    geoserver+'/geocache/wms?',
    { layers: 'europe',             
           format: 'png'           
    },           
    {              
          isBaseLayer:true,               
          singleTile:false,               
          maxExtent: maxextent,               
          resolutions: [5000,2500,1000,500,250,100,50,25,10]  
   });

et mon deuxième layer :

Code:

LayerImpacts = new OpenLayers.Layer.WMS(
    "real time",
    dataserver+'/cgi-bin/mapserver/mapserv?map=/home/vjc/geo/mapfiles/europe/mapfile-france-time-4i.map',           
   { layers: 'impacts,copyright',
     format: 'png',
     transparent: true
   },
   {
       isBaseLayer:false,
       singleTile:true,
       buffer:0, ratio:1,
       maxExtent: maxextent
    });
var options = {
    controls:[
        new OpenLayers.Control.PanZoomBar()
    ],
    units: "m",
    minResolution: "auto",
    maxResolution: "auto",
    maxExtent: maxextent,
    projection: 'EPSG:27572'
};

puis

Code:

map = new OpenLayers.Map( 'map', options );

comment puis-je résoudre ce problème ?

merci bien

jean-Marie


c'est le comportement normal d'openlayers, il ne me semble pas qu'il y ait de contournement possible a ce niveau la.

la seule solution que je connaisse si tu veux absolument cacher les données metier en dehors d'une etendue specifiée est de configurer un layer raster, en STATUS default et POSTLABELCACHE true. cette couche affichera un raster dont l'etendue est l'etendue maximale envoyée par openlayers (au moins), et ayant une zone nodata correspondant au maxextent des données metier a afficher. Cette couche aura pour effet de masquer toutes les données en dehors du maxextent defini par la zone nodata.

--
thomas

Hors ligne

 

#3 Wed 26 October 2011 11:27

Jean-Marie64
Participant actif
Lieu: Pau
Date d'inscription: 6 Nov 2007
Messages: 131

Re: [OpenLayers] BBOX transmise dans l'URL englobant maxExtent

Bonjour

j'ai créé dans le mapfile un layer raster :

Code:

LAYER
  NAME "raster"
  DATA "filter.gif"
  TYPE RASTER
  STATUS DEFAULT
  POSTLABELCACHE TRUE
END

j'ai procédé de la façon suivante pour afficher l'image :

Code:

var Filter= new OpenLayers.Layer.WMS( 
    "raster",
    dataserver+'/cgi-bin/mapserver/mapserv?map=/home/vjc/geo/mapfiles/europe/mapfile-france-time-4i.map'',
    { layers: 'raster',
        transparent: true
    },
    {
        isBaseLayer:false,
        singleTile:true,
        buffer:0, ratio:1,
        maxExtent: maxextent
    });
....

map.addLayers([LayerFond,Filter,LayerImpacts]);

mais le raster ne tient pas compte des limites maxextent,
sa taille, à l'affichage, est démesurée par rapport à la carte

faut-il passer en paramètres ces limites au niveau du layer 'raster' dans le mapfile
ainsi que la projection  ?

merci pour votre aide

jean-Marie

Hors ligne

 

#4 Wed 26 October 2011 12:06

tbonfort
Participant actif
Date d'inscription: 11 Oct 2007
Messages: 87

Re: [OpenLayers] BBOX transmise dans l'URL englobant maxExtent

Jean-Marie64 a écrit:

Bonjour

j'ai créé dans le mapfile un layer raster :

Code:

LAYER
  NAME "raster"
  DATA "filter.gif"
  TYPE RASTER
  STATUS DEFAULT
  POSTLABELCACHE TRUE
END

j'ai procédé de la façon suivante pour afficher l'image :

Code:

var Filter= new OpenLayers.Layer.WMS( 
    "raster",
    dataserver+'/cgi-bin/mapserver/mapserv?map=/home/vjc/geo/mapfiles/europe/mapfile-france-time-4i.map'',
    { layers: 'raster',
        transparent: true
    },
    {
        isBaseLayer:false,
        singleTile:true,
        buffer:0, ratio:1,
        maxExtent: maxextent
    });
....

map.addLayers([LayerFond,Filter,LayerImpacts]);

mais le raster ne tient pas compte des limites maxextent,
sa taille, à l'affichage, est démesurée par rapport à la carte

faut-il passer en paramètres ces limites au niveau du layer 'raster' dans le mapfile
ainsi que la projection  ?

merci pour votre aide

jean-Marie


il faut utiliser un format raster géoréférencé (ex. geotiff) et pas du gif qui ne contient pas ce referencement

Hors ligne

 

#5 Wed 26 October 2011 14:20

Jean-Marie64
Participant actif
Lieu: Pau
Date d'inscription: 6 Nov 2007
Messages: 131

Re: [OpenLayers] BBOX transmise dans l'URL englobant maxExtent

vu que la projection (qui est variable) est passée en paramètre dans l'url,
il faudrait que le geotiff puisse prendre en compte cette variable,
or je pense que sa projection est pré-définie

n'y-t'il pas moyen de passer dans l'URL une BBOX' dont les limites seraient déduite de
l'intersection de la BBOX (rendu par OpenLayers) avec maxextent ?

Hors ligne

 

#6 Fri 25 November 2011 15:37

Jean-Marie64
Participant actif
Lieu: Pau
Date d'inscription: 6 Nov 2007
Messages: 131

Re: [OpenLayers] BBOX transmise dans l'URL englobant maxExtent

Bonjour

la problématique va être traitée de la manière suivante :

concernant la géographie :
vu qu'il n'est pas possible de "découper" la géographie
aux limites de maxExtent, je vais visualiser ces limites à l'aide d'un polygone
(résultat de la projection des limites en degré)
il n'est donc plus nécessaire de "découper" la géographie ce qui permet
d'ailleurs au client de mieux situer sa région en dézoomant

concernant les données points :
à priori je m'oriente vers un filtre sur les coordonnées des points,
ce filtre étant spécifié dans le mapfile (voir sujet : "Filtre sur les coordonnées d'un point") 

Jean-Marie

Hors ligne

 

Pied de page des forums

Powered by FluxBB