[GeoNetwork-users-fr] Afficher la carte de recherche en Lambert 2 étendu

Bonjour,

la carte de recherche par défaut de geosource utilise le serveur wms de geosignal, et avec les paramêtres par défaut elle est affichée en WGS84, ce qui fait une carte tout déformée/aplatie.

j'ai donc cherché comment afficher cette carte en autre chose que du WGS84 et avec une autre étendue, et voila la liste des modifications a faire (ca pourra servir a d'autres, et même peut-être être intégré plus proprement dans geosource même)

- modifier xml/map-server.xml, changer l'extent choisi pour la région que l'on veut afficher (avec des coordonnées dans le système de projection choisi, p.ex <northBL>2220000</northBL><southBL>1950000</southBL><eastBL>780000</eastBL><westBL>550000</westBL> dans mon cas, pour l'auvergne en L2E) - a priori, la valeur de l'attribut SRS du tag <extent> n'est utilisée nulle part, meme pas dans la requete WMS faite au serveur - un bug ? dans le doute, j'ai mis EPSG:27582

- modifier scripts/gn_search.js pour forcer OpenLayers a utiliser la projection choisie dans la requete WMS : pour cela, remplacer dans la fonction initMap() :
var options = {maxExtent:boundsTo, maxResolution:"auto"};
par
var options = {maxExtent:boundsTo, maxResolution:"auto", projection:'EPSG:27582'};

a partir de la, la carte affichée est dans la bonne projection, et avec la bonne étendue - j'ai choisi de garder le serveur WMS de geosignal, mais ca serait pareil avec un autre.

cependant il y'a un hic, les recherches géographiques ne fonctionnement plus ! en effet, dans les thésaurus geonetwork/geosource, l'etendue des communes/départements/etc est enregistrée en WGS84, et lorsqu'on fait 'calculer l'emprise' a partir des mots clefs (ou qu'on la renseigne a la main), les valeurs de longitude/latitude sont en WGS84 et rien d'autre.

pour cela, il faut convertir a la volée les coordonnées de la boite englobante sur la carte de recherche de notre système de coordonnées choisies en WGS84, il faut faire 3 modifications :

- télécharger proj4js.js ici http://trac.osgeo.org/proj4js/wiki/Download
(d'ailleurs, c'est étonnant qu'il ne soit pas bundlé avec geosource ou openlayers, des explications ici : http://trac.openlayers.org/wiki/Documentation/Dev/proj4js), le mettre dans scripts/openlayers/ (j'utilise proj4js-compressed.js ici)
- modifier xsl/main-page.xsl pour l'inclure dans toutes les pages html générees : ajouter au dessus de la ligne incluant openlayers.js
<script type="text/javascript" src="{/root/gui/url}/scripts/openlayers/proj4js-compressed.js"/>

- enfin, faire une reprojection a la volée de la boite englobante dans scripts/gn_search.js, fonction ol_getURLselectedbbox(), remplacer la ligne complete 'return...' par :

//ajouter la projection Lambert 2 Etendue aux projections connues de proj4js
   Proj4js.defs['EPSG:27582'] = "+title=NTF (Paris) / France II (deprecated) +proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=0 +k_0=0.99987742 +x_0=600000 +y_0=2200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m";

// créer une boite englobante OpenLayers avec les coordonnées de l'étendue sélectionnée dans la fenetre de recherche
   var bounds = new OpenLayers.Bounds($('westBL').value,$('southBL').value,$('eastBL').value,$('northBL').value);

// convertir cette boite de L2E vers WGS84
   bounds.transform(new OpenLayers.Projection("EPSG:27582"),new OpenLayers.Projection("EPSG:4326"));

// renvoyer la chaine de caractéres qui sera passée au module de recherche de geosource avec les coordonnées transformées de cette boite
   return "northBL="+bounds.top+"&eastBL="+bounds.right+"&southBL="+bounds.bottom+"&westBL="+bounds.left;

Voila, c'est pas super propre, ni intégré, mais ca marche pour moi.

J'aimerais avoir des commentaires sur la forme et la manière, savoir si certains de ces fixes peuvent être intégrés, savoir si on peut récupérer la valeur du SRS passée dans map-server.xml pour éviter de mettre en dur EPSG:27582, etc...

--
Cdlt,
Landry Breuil
Administrateur de données du CRAIG

Bonjour Landry,

2009/9/4 Landry Breuil <breuil@anonymised.com>

Bonjour,

la carte de recherche par défaut de geosource utilise le serveur wms de
geosignal, et avec les paramêtres par défaut elle est affichée en WGS84,
ce qui fait une carte tout déformée/aplatie.

En effet.

j'ai donc cherché comment afficher cette carte en autre chose que du
WGS84 et avec une autre étendue, et voila la liste des modifications a
faire (ca pourra servir a d'autres, et même peut-être être intégré plus
proprement dans geosource même)

- modifier xml/map-server.xml, changer l'extent choisi pour la région
que l'on veut afficher (avec des coordonnées dans le système de
projection choisi, p.ex

<northBL>2220000</northBL><southBL>1950000</southBL><eastBL>780000</eastBL><westBL>550000</westBL>
dans mon cas, pour l'auvergne en L2E) - a priori, la valeur de
l'attribut SRS du tag <extent> n'est utilisée nulle part, meme pas dans
la requete WMS faite au serveur - un bug ? dans le doute, j'ai mis
EPSG:27582

Ceci n'est pas un bug mais juste une extension possible non développé dans
la version 2 de Géosource.
Il a été envisagé de le faire ou bien de pouvoir l'étendre par la suite.
D'où ce paramètre dans la configuration, non utilisé pour le moment.

- modifier scripts/gn_search.js pour forcer OpenLayers a utiliser la
projection choisie dans la requete WMS : pour cela, remplacer dans la
fonction initMap() :
var options = {maxExtent:boundsTo, maxResolution:"auto"};
par
var options = {maxExtent:boundsTo, maxResolution:"auto",
projection:'EPSG:27582'};

a partir de la, la carte affichée est dans la bonne projection, et avec
la bonne étendue - j'ai choisi de garder le serveur WMS de geosignal,
mais ca serait pareil avec un autre.

cependant il y'a un hic, les recherches géographiques ne fonctionnement
plus ! en effet, dans les thésaurus geonetwork/geosource, l'etendue des
communes/départements/etc est enregistrée en WGS84, et lorsqu'on fait
'calculer l'emprise' a partir des mots clefs (ou qu'on la renseigne a la
main), les valeurs de longitude/latitude sont en WGS84 et rien d'autre.

En effet la référence en terme de métadonnées/thésaurus associés est le
WGS84, afin d'avoir un standard mondial

pour cela, il faut convertir a la volée les coordonnées de la boite
englobante sur la carte de recherche de notre système de coordonnées
choisies en WGS84, il faut faire 3 modifications :

- télécharger proj4js.js ici http://trac.osgeo.org/proj4js/wiki/Download
(d'ailleurs, c'est étonnant qu'il ne soit pas bundlé avec geosource ou
openlayers,

Proj4Js est un projet standalone qui n'a pas vocation d'être intégré au
projet OpenLayers.
Après concernant son intégration à GéoSource nous ne l'avons pas inclu du
fait de sa non-utilisation.
La quantité de fichier javascript chargée est à mon avis suffisante pour
s'eviter de charger des librairies non utiles! :wink:

des explications ici :

http://trac.openlayers.org/wiki/Documentation/Dev/proj4js), le mettre
dans scripts/openlayers/ (j'utilise proj4js-compressed.js ici)
- modifier xsl/main-page.xsl pour l'inclure dans toutes les pages html
générees : ajouter au dessus de la ligne incluant openlayers.js
<script type="text/javascript"
src="{/root/gui/url}/scripts/openlayers/proj4js-compressed.js"/>

- enfin, faire une reprojection a la volée de la boite englobante dans
scripts/gn_search.js, fonction ol_getURLselectedbbox(), remplacer la
ligne complete 'return...' par :

//ajouter la projection Lambert 2 Etendue aux projections connues de
proj4js
  Proj4js.defs['EPSG:27582'] = "+title=NTF (Paris) / France II
(deprecated) +proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=0 +k_0=0.99987742
+x_0=600000 +y_0=2200000 +a=6378249.2 +b=6356515
+towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m";

// créer une boite englobante OpenLayers avec les coordonnées de
l'étendue sélectionnée dans la fenetre de recherche
  var bounds = new

OpenLayers.Bounds($('westBL').value,$('southBL').value,$('eastBL').value,$('northBL').value);

// convertir cette boite de L2E vers WGS84
  bounds.transform(new OpenLayers.Projection("EPSG:27582"),new
OpenLayers.Projection("EPSG:4326"));

// renvoyer la chaine de caractéres qui sera passée au module de
recherche de geosource avec les coordonnées transformées de cette boite
  return

"northBL="+bounds.top+"&eastBL="+bounds.right+"&southBL="+bounds.bottom+"&westBL="+bounds.left;

Voila, c'est pas super propre, ni intégré, mais ca marche pour moi.

Bravo et merci pour cette contribution!
Quant à la solution choisie, je pense que nous serions parti sur ce type de
solution également si nous avions choisi de développer le support des
projections autres que le WGS84.

J'aimerais avoir des commentaires sur la forme et la manière, savoir si
certains de ces fixes peuvent être intégrés, savoir si on peut récupérer
la valeur du SRS passée dans map-server.xml pour éviter de mettre en dur
EPSG:27582, etc...

Oui, il suffit de créer une variable en xsl dans le fichier main-page.xsl
:
<xsl:variable name="srs" select="/root/gui/mapServer/extent/@SRS"/>
et d'ajouter une nouvelle entrée dans l'objet mapInfo dans la fonction
javascript un peu plus bas,
...
    srs : "<xsl:value-of select="$srs"/>",
...

Ensuite, cette valeur sera disponible dans la fonction initMap du fichier
gn_search.js, via l'objet mapInfo (ie mapInfo.srs).

Concernant l'intégration, nous en discuterons avec le BRGM.
Je ne sais pas si c'est un besoin exprimé par d'autres utilisateurs?

Nous vous tiendrons informé de ces dicsussions.

Merci,

Cordialement,

Mathieu Coudert

Camptocamp

--
Cdlt,
Landry Breuil
Administrateur de données du CRAIG

------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus
on
what you do best, core application coding. Discover what's new with
Crystal Reports now. http://p.sf.net/sfu/bobj-july
_______________________________________________
GeoNetwork-users-fr mailing list
GeoNetwork-users-fr@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geonetwork-users-fr

Bonjour,

2009/9/4 Landry Breuil <breuil@anonymised.com>

Bonjour,

la carte de recherche par défaut de geosource utilise le serveur wms de
geosignal, et avec les paramêtres par défaut elle est affichée en WGS84,
ce qui fait une carte tout déformée/aplatie.

j'ai donc cherché comment afficher cette carte en autre chose que du
WGS84 et avec une autre étendue, et voila la liste des modifications a
faire (ca pourra servir a d'autres, et même peut-être être intégré plus
proprement dans geosource même)

- modifier xml/map-server.xml, changer l'extent choisi pour la région
que l'on veut afficher (avec des coordonnées dans le système de
projection choisi, p.ex

<northBL>2220000</northBL><southBL>1950000</southBL><eastBL>780000</eastBL><westBL>550000</westBL>
dans mon cas, pour l'auvergne en L2E) - a priori, la valeur de
l'attribut SRS du tag <extent> n'est utilisée nulle part, meme pas dans
la requete WMS faite au serveur - un bug ? dans le doute, j'ai mis
EPSG:27582

- modifier scripts/gn_search.js pour forcer OpenLayers a utiliser la
projection choisie dans la requete WMS : pour cela, remplacer dans la
fonction initMap() :
var options = {maxExtent:boundsTo, maxResolution:"auto"};
par
var options = {maxExtent:boundsTo, maxResolution:"auto",
projection:'EPSG:27582'};

a partir de la, la carte affichée est dans la bonne projection, et avec
la bonne étendue - j'ai choisi de garder le serveur WMS de geosignal,
mais ca serait pareil avec un autre.

cependant il y'a un hic, les recherches géographiques ne fonctionnement
plus ! en effet, dans les thésaurus geonetwork/geosource, l'etendue des
communes/départements/etc est enregistrée en WGS84, et lorsqu'on fait
'calculer l'emprise' a partir des mots clefs (ou qu'on la renseigne a la
main), les valeurs de longitude/latitude sont en WGS84 et rien d'autre.

pour cela, il faut convertir a la volée les coordonnées de la boite
englobante sur la carte de recherche de notre système de coordonnées
choisies en WGS84, il faut faire 3 modifications :

- télécharger proj4js.js ici http://trac.osgeo.org/proj4js/wiki/Download
(d'ailleurs, c'est étonnant qu'il ne soit pas bundlé avec geosource ou
openlayers, des explications ici :
http://trac.openlayers.org/wiki/Documentation/Dev/proj4js), le mettre
dans scripts/openlayers/ (j'utilise proj4js-compressed.js ici)
- modifier xsl/main-page.xsl pour l'inclure dans toutes les pages html
générees : ajouter au dessus de la ligne incluant openlayers.js
<script type="text/javascript"
src="{/root/gui/url}/scripts/openlayers/proj4js-compressed.js"/>

- enfin, faire une reprojection a la volée de la boite englobante dans
scripts/gn_search.js, fonction ol_getURLselectedbbox(), remplacer la
ligne complete 'return...' par :

//ajouter la projection Lambert 2 Etendue aux projections connues de
proj4js
  Proj4js.defs['EPSG:27582'] = "+title=NTF (Paris) / France II
(deprecated) +proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=0 +k_0=0.99987742
+x_0=600000 +y_0=2200000 +a=6378249.2 +b=6356515
+towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m";

// créer une boite englobante OpenLayers avec les coordonnées de
l'étendue sélectionnée dans la fenetre de recherche
  var bounds = new

OpenLayers.Bounds($('westBL').value,$('southBL').value,$('eastBL').value,$('northBL').value);

// convertir cette boite de L2E vers WGS84
  bounds.transform(new OpenLayers.Projection("EPSG:27582"),new
OpenLayers.Projection("EPSG:4326"));

// renvoyer la chaine de caractéres qui sera passée au module de
recherche de geosource avec les coordonnées transformées de cette boite
  return

"northBL="+bounds.top+"&eastBL="+bounds.right+"&southBL="+bounds.bottom+"&westBL="+bounds.left;

Voila, c'est pas super propre, ni intégré, mais ca marche pour moi.

J'aimerais avoir des commentaires sur la forme et la manière, savoir si
certains de ces fixes peuvent être intégrés, savoir si on peut récupérer
la valeur du SRS passée dans map-server.xml pour éviter de mettre en dur
EPSG:27582, etc...

Cette fonctionnalité a été intégrée à la version 2.2.1 de GéoSource.
Merci pour cette contribution,

Salutations,

--
Mathieu Coudert

--
Cdlt,
Landry Breuil
Administrateur de données du CRAIG

------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus
on
what you do best, core application coding. Discover what's new with
Crystal Reports now. http://p.sf.net/sfu/bobj-july
_______________________________________________
GeoNetwork-users-fr mailing list
GeoNetwork-users-fr@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geonetwork-users-fr