Style et légende d’une couche SIG avec Geoserver

Que l’on parle d’analyse thématique ou d’un affichage attributaire, le mnémotechnique TOLE (Titre Orientation Légende Échelle) nous rappelle que les styles affectés aux données spatiales sont indispensables pour la compréhension d’une cartographie. Plusieurs moyens de styliser des données sont possibles, depuis un logiciel, une base de données, un script ou depuis le serveur cartographique comme on le montre ici avec GeoServer (v 2.10). La documentation complète est disponible sur ce lien et des exemples de stylisation ici.

1. Structure du fichier SLD

GeoServer prend en compte les normes de styles Styled Layer Descriptor (SLD) de l’OGC dont la structure du fichier est du XML.

<?xml version="1.0" encoding="UTF-8"?>
<StyledLayerDescriptor xmlns="http://www.opengis.net/sld" xmlns:ogc="http://www.opengis.net/ogc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
version="1.1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="http://www.opengis.net/sld http://schemas.opengis.net/sld/1.1.0/StyledLayerDescriptor.xsd" 
xmlns:se="http://www.opengis.net/se">

Plusieurs versions de SLD existent, on note au passage les efforts de convergence entre les différents logiciels libres. En effet, la version du fichier de style issue du logiciel QGIS a longtemps été différente de celle prise en compte par GeoServer. Il est désormais possible d’utiliser un même fichier SLD d’un logiciel à l’autre. De plus amples explications sont détaillées dans ce billet de Geo Solutions.

De manière schématique, la structure du fichier est constituée d’un nom et du style de la couche UserStyle dans lequel on retrouve un titre et une description du style d’un ou des objets géographiques FeatureTypeStyle. La règle Rule  est caractérisée au minimum par le type de symbole (point, ligne, polygone), un nom et le style de l’objet (couleur, épaisseur, etc). A l’intérieur de la règle, on peut ajouter un filtre lié au champ attributaire et aux valeurs retenus pour l’analyse thématique.

Pour illustrer nos propos, on considère une couche spatiale avec une donnée attributaire de type numérique, par exemple, le PIB par habitant (en dollars US) en 2015 par pays.  On décide de classer les pays en 5 classes correspondant aux quantiles du PIB. Cette analyse thématique implique donc une règle de filtres de valeurs pour la colonne prise en compte. Ici, pour la classe intitulée ‘277-1158’, les objets géographiques dont les valeurs du champ ‘y2015’ supérieures à 277 et inférieures à 1158 sont représentés par un polygone avec une symbologie donnée.

<se:Rule>
  <se:Name> 277 - 1158 </se:Name>
  <se:Description>
	<se:Title> 277 - 1158 </se:Title>
  </se:Description>
  <ogc:Filter xmlns:ogc="http://www.opengis.net/ogc">
	<ogc:And>
	  <ogc:PropertyIsGreaterThanOrEqualTo>
		<ogc:PropertyName>y2015</ogc:PropertyName>
		<ogc:Literal>277.06830000000002201</ogc:Literal>
	  </ogc:PropertyIsGreaterThanOrEqualTo>
	  <ogc:PropertyIsLessThanOrEqualTo>
		<ogc:PropertyName>y2015</ogc:PropertyName>
		<ogc:Literal>1158.41113999999993212</ogc:Literal>
	  </ogc:PropertyIsLessThanOrEqualTo>
	</ogc:And>
  </ogc:Filter>
  <se:PolygonSymbolizer>
	<se:Fill>
	  <se:SvgParameter name="fill">#2c7bb6</se:SvgParameter>
	</se:Fill>
	<se:Stroke>
	  <se:SvgParameter name="stroke">#000001</se:SvgParameter>
	  <se:SvgParameter name="stroke-width">1</se:SvgParameter>
	  <se:SvgParameter name="stroke-linejoin">bevel</se:SvgParameter>
	</se:Stroke>
  </se:PolygonSymbolizer>
</se:Rule>

Le fichier de format SLD lié à la couche SIG peut être codé par ses propres soins mais dans la grande majorité des cas, à part quelques modifications, on utilisera des modèles ou on produira le fichier à partir de logiciels comme QGIS.

2. Création et import du fichier SLD dans GeoServer

Dans QGIS, on produit le style de la couche SIG et on enregistre le fichier SLD (figure 1).

Figure 1 : Création du fichier SLD lié à la couche SIG dans QGIS

Après avoir publié la donnée spatiale dans GeoServer, la création du style est relativement simple. Une rubrique ‘Style’ permet de charger le fichier de format SLD, ou on édite directement le script dans la zone de texte prévue à cet effet. Après la saisie du nom du style et de l’espace de travail (figure 2), il suffit d’affecter le style créé à la couche. Physiquement, le fichier de style est stocké dans le répertoire style qui est par défaut ..\data_dir\styles.

Figure 2 : Création d’un nouveau style dans Geoserver

Dans la couche sélectionnée, puis dans l’onglet ‘publication’, on sélectionne le nouveau style créé dans la liste et la légende de l’analyse thématique apparaît (figure 3).

Figure 3 : Choix du style pour la publication de la couche.

Enfin, la figure 4 montre le résultat de l’analyse thématique produite en lien avec la couche SIG.

Figure 4 : Prévisualisation de la couche SIG stylisée dans GeoServer.

On note que le style par défaut de la donnée spatiale est celui qui sera visible lors de la lecture des flux WFS, WM(T)S et WCS. Par extension, il est aussi possible d’accéder à la légende sous format image grâce à l’URL :

[url]/geoserver/wms?REQUEST=GetLegendGraphic&VERSION=1.0.0&FORMAT=image/png&WIDTH=20&HEIGHT=20&LAYER=[espace de travail]:[nom de la couche SIG]

Plus de détails sur la requête GetLegendGraphic est disponible dans la documentation de GeoServer.

En conclusion, la stylisation d’une couche SIG dans GeoServer est relativement simple et rapide notamment depuis qu’il est possible d’importer directement les fichiers SLD produits avec QGIS. Dans ce tutoriel, on a vu comment reproduire une analyse thématique mais de nombreuses possibilités de représentations cartographiques existent (ajout de labels, d’icônes, etc). L’utilisation d’un serveur cartographique est très intéressante puisque le style par défaut de la donnée spatiale est reproduit lors l’export de la donnée via les protocoles WFS, WM(T)S et WCS. Ainsi, en webmapping, on n’a pas besoin de reproduire le style souhaité de la couche SIG et encore moins sa légende, d’autant qu’OpenLayers v4 (et v3) n’a pas repris la classe Format.SLD()existante dans la version 2 de l’API.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *