#1 Thu 24 May 2012 11:38
- Winsclav
- Participant occasionnel
- Lieu: ÉfA
- Date d'inscription: 15 Feb 2012
- Messages: 23
[GeoServer + OpenLayers] Utiliser les SLD sur les WFS
Bonjour à tous.
Je rencontre un problème d'affichage pour mes données vectorielles. Via l'interface d'administration de GeoServer, j'ai attribué de nouveaux styles à mes couches (1. menu de gauche -> Données/Styles = création d'un nouveau style issu d'un .sld | 2. Données/Couches -> onglet publication de ma couche = choix du nouveau style), et cela fonctionne à la prévisualisation de ma couche. Par contre, si j'appelle cette même couche avec OpenLayers, j'obtiens les styles par défaut (ligne orange, dans mon cas).
Voici comment j'appelle mon WFS :
var wfsatdelos = new OpenLayers.Layer.Vector("rocher", {
strategies: [new OpenLayers.Strategy.Fixed()],
protocol: new OpenLayers.Protocol.WFS({
url: "http://XXXX:8080/geoserver/wfs",
featureType: "rocher",
featurePrefix: "delos",
geometryName: "the_geom"
}),
projection:"EPSG:2100"
}
);
Je ne rentre donc aucun style, pensant qu'OpenLayers va aller taper le style défini dans GeoServer... à tort. Je peux bien sûr ajouter un style lors de l'appel de mon wfs, mais sld est bien plus puissant.
Avez-vous une solution pour moi ?
Merci infiniment.
nota : le message est également trouvable sur http://www.forumsig.org/showthread.php?t=34270
Dernière modification par Winsclav (Wed 30 May 2012 12:34)
Hors ligne
#2 Tue 29 May 2012 13:56
- Winsclav
- Participant occasionnel
- Lieu: ÉfA
- Date d'inscription: 15 Feb 2012
- Messages: 23
Re: [GeoServer + OpenLayers] Utiliser les SLD sur les WFS
J'essaye de relancer ce post qui ne rencontre aucun écho, à mon grand étonnement et grande déception.
Récapitulons.
GeoServer propose un certain nombre de styles variés (mais assez moche), plus intéressant encore, il permet de créer soi-même ses styles sous format SLD (on peut charger un fichier créer de toute main ou juste renseigner les différentes balises complétées). Cela va bien plus loin que les styles proposés par OpenLayers (notamment pour les labels). GeoServer permet de prévisualiser les couches renseignées via OpenLayers, et celui-ci accepte les styles. Hors, si je travaille depuis OpenLayers et charge mes couches (WMS, WFS), les styles ne sont pas utilisés !
Deux questions :
Comment indiquer un style configuré en format sld ? J'ose espérer qu'il est possible d'indiquer un fichier de style dans un StyleMap ou Style.
Ou mieux encore: comment faire accepter directement par OpenLayers les styles entrés dans GeoServer ? Quelqu'un utilise GeoServer ? Ou connaît quelqu'un qui utilise GeoServer ?
J'ai grand besoin de savoir comment régler cette question. Je dois publier un Atlas de cartes, je peux difficilement me limiter à ce que propose OpenLayers.
Merci beaucoup pour votre aide.
Hors ligne
#3 Tue 29 May 2012 17:00
Re: [GeoServer + OpenLayers] Utiliser les SLD sur les WFS
Bonjour,
Dans le cas d'une couche WMS tu peux utiliser le paramètre sld_url (ou sld_body) pour envoyer l'url du sld au serveur dans les options de la couches.
Dans le cas d'une couche WFS, regarde l'exemple (honnetement regarder le site officiel est probablement un premier réflexe lorsque l'on travaille sur une technologie) : http://www.openlayers.org/dev/examples/sld.html
Par contre en vecteur je ne suis pas sur de comprendre ta remarque "je peux difficilement me limiter à ce que propose OpenLayers.", Le SLD ne résoudra pas ce problème. Uniquement pour le WMS mais du coup aucun rapport avec OpenLayers. Bref, ton argumentaire me parait bizarre
Y.
Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !! - GeoRezo vous aide ? Aidez GeoRezo !
Hors ligne
#4 Wed 30 May 2012 10:54
- Winsclav
- Participant occasionnel
- Lieu: ÉfA
- Date d'inscription: 15 Feb 2012
- Messages: 23
Re: [GeoServer + OpenLayers] Utiliser les SLD sur les WFS
Bonjour,
Je suis d'accord pour les wms, c'est aussi ce que j'avais trouvé (sur le lien dans le premier post).
Je n'avais pas encore vu cet exemple d'OpenLayers (merci donc), mais toujours est-il que je suis bien en difficulté pour le comprendre.
J'ai essayé de cette façon, mais maintenant, la fonction init() n'est plus définie :
Code:
function init() { ... OpenLayers.Request.GET({ url: "../webdelos/sld_cookbook/lignes/style_rocher.xml", success: complete }); ... } // handler for the OpenLayers.Request.GET function in the init method function complete(req) { sld = format.read(req.responseXML || req.responseText); setLayerStyles(); } function setLayerStyles() { // set the default style for each layer from sld var styles = sld.namedLayers.userStyles; }
Une autre piste :
SLD Parser me permet de reprendre la forme de mon fichier sld, mais je ne sais pas si OpenLayers peut accepter un truc pareil, que je n'arrive pas à faire fonctionner par ailleurs :
Code:
style: new OpenLayers.StyleMap({ "namedLayers": { "Courbes": { "userStyles": [{ "rules": [{ "symbolizers": [{ "stroke": true, "strokeColor": "#9c9e9f", "strokeWidth": "1", "strokeLinecap": "round", "zIndex": 0 }], "id": "OpenLayers_Rule_6", "name": "Inférieur à 500", "maxScaleDenominator": 500 }], "title": "style_rocher", "id": "OpenLayers_Style2_9", "layerName": "Courbes" }], "namedStyles": [], "name": "Courbes" } }, "version": "1.0.0" });
Quand je parle de ce que propose OpenLayers, je parle de ça :
Code:
var selectionStyleVector = new OpenLayers.StyleMap({ "default": new OpenLayers.Style({ fillColor: "#ffcc66", strokeColor: "black", strokeWidth: 2, graphicZIndex: 1 })
Qui ne va pas très loin. C'est pour cette raison que je veux utiliser un fichier sld.
Mon argumentaire est bizarre parce que je me casse les dents sur ces styles depuis bien trop longtemps, que je ne vois pas de solution, et que ça me les brise !
Dernière modification par Winsclav (Wed 30 May 2012 10:55)
Hors ligne
#5 Wed 30 May 2012 11:08
- vlad
- Participant occasionnel
- Date d'inscription: 7 Nov 2011
- Messages: 28
Re: [GeoServer + OpenLayers] Utiliser les SLD sur les WFS
Bonjour,
Peut être pas le problème des lignes de code mais simplement un problème technique simple.
Personnellement, je défini le style que j'utilise en sld en tant que style par défaut de ma couche. Pour changer cela, dans geoserver, aller dans la partie couche (layer), cliquer sur la couche, dans l'onglet publication modifier le style par défaut par le votre.
Après, je n'ai peut être pas compris votre problème.
Bonne journée,
vlad
Débutant? Oui. Nul? Oui. Doué avec la programmation? Non. Maso? Peut être XD
Hors ligne
#6 Wed 30 May 2012 12:30
- Winsclav
- Participant occasionnel
- Lieu: ÉfA
- Date d'inscription: 15 Feb 2012
- Messages: 23
Re: [GeoServer + OpenLayers] Utiliser les SLD sur les WFS
vlad, qu'utilisez-vous pour visualiser vos données ? OpenLayers ou autre chose ?
Parce que la définition des styles comme vous le proposez, et que j'ai bien sûr essayé, ne marche pas dans mon cas...
Je me suis peut être mal exprimé dans le premier poste, je corrige ça.
Hors ligne
#7 Wed 30 May 2012 13:35
Re: [GeoServer + OpenLayers] Utiliser les SLD sur les WFS
Bonjour,
Utiliser un SLD comme source de stylage pour une couche vecteur ne te permettra pas d'outrepasser les limitations du StyleMap pour la simple raison que le SLD sera traduit en styleMap
Si j'ai bien compris tu reproches à OpenLayers de ne pas avoir une grande finesse dans la possibilité de stylage des couches vecteurs. Quelques questions : as tu besoin d'avoir une couche vecteur ? Quelles sont exactement ces limitations ? La position des labels ? Peux tu expliciter pourquoi tu veux à la fois une couche vecteur et un stylage très précis ? Si tu désires uniquement réaliser un atlas cartographique, je ne comprend pas pourquoi tu veux utiliser une couche vecteur.
Y.
Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !! - GeoRezo vous aide ? Aidez GeoRezo !
Hors ligne
#8 Wed 30 May 2012 14:10
- Winsclav
- Participant occasionnel
- Lieu: ÉfA
- Date d'inscription: 15 Feb 2012
- Messages: 23
Re: [GeoServer + OpenLayers] Utiliser les SLD sur les WFS
Merci, je vais détailler ce que je veux, peut être fais-je fausse route.
Ce qu'il me faut, c'est une visualisation de mon atlas. Pour cela, je souhaiterais travailler avec des services wms à de petites échelles (> à 1/500).
Cela règle le soucis du SwitchLayer, car ainsi je peux proposer des agrégations de couches (que propose GeoServer pour les wms mais pas pour les wfs). En effet, je possède environ 80 couches différentes, car ils ont des styles ou des propriétés plus ou moins différent.
Ce qu'il me faut, c'est pouvoir faire évoluer cet atlas. Il s'agit d'un site archéologique, des nouvelles découvertes vont être faites, certaines parties seront à nouveau cachées,... Je dois pouvoir ajouter/modifier/supprimer des formes vectorielles. Pour cela, je souhaiterais travailler avec des services wfs-t à de grandes échelles (< ou = à 1/500). De plus, il y aura également des éléments (points, polygones) qui devraient être cliquables pour faire apparaître une pop-up par exemple. Je sais que c'est possible avec des wms, mais je pensais que c'était peut être plus facile avec des wfs.
Par ailleurs, je pense qu'il serait bien pour la présentation que les symboles ne changent pas.
Pour autant, si cela n'est pas possible, je peux aussi faire différemment. N'utiliser que des services wms pour la visualisation, et laisser la couche édition sans styles particuliers.
Qu'en penses-tu ?
Hors ligne
#9 Wed 30 May 2012 15:05
Re: [GeoServer + OpenLayers] Utiliser les SLD sur les WFS
Bonjour,
Ce qui est fait parfois (pour des questions de performance) c'est d'avoir une couche WMS (généralement une couche côté OpenLayers qui appelle plusieurs couches côté serveur) et choisir la couche que l'on veut éditer et cliquer sur le polygone/ligne/point que tu souhaites modifier. Cela permet de ne récupérer que la géométrie que tu veux modifier en l'affichant en vecteur sans récupérer toute la couche de la zone de travaille (bon tu es en grande échelle donc le nombre de feature devrait être assez limité).
Je t'accorde que c'est un poil plus compliqué !
Y.
Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !! - GeoRezo vous aide ? Aidez GeoRezo !
Hors ligne
#10 Thu 31 May 2012 09:03
- Winsclav
- Participant occasionnel
- Lieu: ÉfA
- Date d'inscription: 15 Feb 2012
- Messages: 23
Re: [GeoServer + OpenLayers] Utiliser les SLD sur les WFS
Bonjour,
Ton idée paraît bien intéressante, mais je pense laissé ça de côté. Mon successeur aura à plancher là-dessus. Sauf si tu as des solutions toutes faites pour moi !
Hors ligne