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

Printemps des cartes 2024

#1 Mon 13 June 2016 16:29

Alexandra Quin
Juste Inscrit !
Lieu: Brest
Date d'inscription: 10 Jun 2016
Messages: 3

[Geoserver 2.8.0] gérer affichage légende style sld

Bonjour,

Malgré de nombreuses heures de recherche infructueuses, je me tourne vers les pros de la géomatique pour tenter de m'aider à y voir plus clair smile

J'ai des données de type "trait de côte" acquises depuis 1952 sur un site de Bretagne par différents moyens (photo aérienne, levé topo), mais je n'ai pas de données pour chaque année depuis cette date, et bien entendu en fonction des sites étudiés les années peuvent être différentes.

Je dois intégrer toutes ces données au format .txt sur une base données type Postgis, celles-ci sont ensuite moulinées par un script et apparaissent à l'écran à l'aide d'un visualiseur.

Via Qgis, j'ai mis en forme mes traits de côte pour chaque date que j'ai sur chaque site, en attribuant une couleur différente par année, puis j'ai exporté le style défini au format SLD que j'ai ensuite intégré sur mon Geoserver (version 2.8.0), comme ça je peux distinguer chaque trait de côte en fonction des dates sur le visualiseur de ma plateforme d'affichage de données.

Néanmoins, pour éviter à toutes les personnes du labo de refaire la manip à chaque ajout de donnée ou de site, j'ai essayé d'automatiser ça. J'ai donc écrit :

<NamedLayer>
    <se:Name>TDC_SITE</se:Name>
    <UserStyle>
      <se:Name>TDC_SITE</se:Name>
      <se:FeatureTypeStyle>
        <se:Rule>
          <se:Name>2014</se:Name>
          <se:Description>
            <se:Title>2014</se:Title>
          </se:Description>
          <ogc:Filter xmlns:ogc="http://www.opengis.net/ogc">
              <ogc:PropertyIsBetween>
               <ogc:PropertyName>dte</ogc:PropertyName>
    <ogc:LowerBoundary>
      <ogc:Literal>2014-01-01</ogc:Literal>
    </ogc:LowerBoundary>
    <ogc:UpperBoundary>
      <ogc:Literal>2014-12-31</ogc:Literal>
    </ogc:UpperBoundary>
  </ogc:PropertyIsBetween>
</ogc:Filter>
             <se:LineSymbolizer>
            <se:Stroke>
              <se:SvgParameter name="stroke">#7a26e0</se:SvgParameter>
              <se:SvgParameter name="stroke-width">1.00</se:SvgParameter>
              <se:SvgParameter name="stroke-linejoin">bevel</se:SvgParameter>
              <se:SvgParameter name="stroke-linecap">square</se:SvgParameter>
            </se:Stroke>   
          </se:LineSymbolizer>
        </se:Rule>

L'idée avec cette règle est que si des données existent entre une date et une autre, la même couleur soit attribuée à chaque trait de côte pour une année N, et que cela varie en fonction de l'année. Ainsi, je peux lui définir d'aller vérifier si j'ai des données sur l'année 1940, 1941, 2035, etc. et qu'il m'affiche une couleur selon cette règle.
MAIS, et c'est là que j'ai un souci, toutes les données qui n'existent pas mais pour lesquelles un style est pré-défini (l'idée étant d'automatiser les choses pour que personne n'ait besoin d'y toucher d'ici 30 ans big_smile) s'affichent quand même en légende, et ce même si les données n'aparaissent pas à l'écran .. normal vu qu'elles n'existent pas encore.

Du coup ma question est la suivante : comment faire en sorte que si dans mes données je n'ai pas l'année 2045 par exemple, je n'aie pas l'entrée de légende qui apparaisse ?

J'espère ne pas avoir été trop longue et avoir été compréhensible.
Merci d'avance pour toute aide apportée.

Alexandra

Dernière modification par Alexandra Quin (Tue 14 June 2016 14:35)

Hors ligne

 

#2 Wed 15 June 2016 13:29

Yves
Membre du bureau
Lieu: Aix-les-Bains
Date d'inscription: 22 Mar 2006
Messages: 9855
Site web

Re: [Geoserver 2.8.0] gérer affichage légende style sld

Bonjour,

Sauf erreur, la légende est générée en fonction du SLD, donc si tu as une entrée dans ton SLD, tu en auras une dans ta légende. Est ce que tu peux éviter d'avoir une entrée dans ton SLD pour l'année manquante ?

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

 

#3 Thu 16 June 2016 12:12

Alexandra Quin
Juste Inscrit !
Lieu: Brest
Date d'inscription: 10 Jun 2016
Messages: 3

Re: [Geoserver 2.8.0] gérer affichage légende style sld

Yves a écrit:

Bonjour,

Sauf erreur, la légende est générée en fonction du SLD, donc si tu as une entrée dans ton SLD, tu en auras une dans ta légende. Est ce que tu peux éviter d'avoir une entrée dans ton SLD pour l'année manquante ?

Y.


Bonjour Yves,

Merci pour la réponse, et celle sur l'autre sujet aussi qui est en rapport aussi avec la question.

En fait non, je ne peux pas l'enlever de mon SLD, du moins pas pour ce que je veux faire. J'ai réussi à générer une structure initiale via QGIS, que j'ai modifié en ajoutant des dates.
Le souci c'est que comme j'ai besoin d'une couleur différente pour chaque trait de côte, je ne sais pas comment écrire un SLD qui permette qu'à chaque ajout de date il n'y ait pas besoin de passer à nouveau par QGIS ou de réécrire le SLD pour qu'une nouvelle couleur se génère. Du coup, j'ai utilisé <PropertyIsBetween> même pour des données qui n'existent pas encore, pour que les traits de côte aient une couleur déjà attribuée le jour où les données seront publiées, et même si elles sont "fictives" et qu'aucun trait de côte n'apparaît, elles s'affichent en légende.

J'ai retourné le problème dans tous les sens, je n'arrive vraiment pas à trouver comment faire hmm

J'aimerais bien écrire quelque chose du genre : "Alors si un jour tu as des données entre telle et telle date, tu colores le trait de côte ainsi, mais si tu ne trouves pas les données tu n'affiches rien en légende".

Dernière modification par Alexandra Quin (Thu 16 June 2016 14:24)

Hors ligne

 

Pied de page des forums

Powered by FluxBB