%\title{Towards Web Services Dedicated to Thematic Mapping}
\title{Vers des services web d\'edi\'es \`a la cartographie th\'ematique}
\author{Abson Sae-Tang, Olivier Ertz}

\maketitle

\section{Introduction}
%Open standards favor interoperability of systems, and Open Geospatial Consortium (OGC) is the group that specifies the standards that allow geographic systems to interoperate. Among most known specifications, OGC defines the Web Map Server (WMS), the Web Feature Server (WFS), the Geographic Markup Language (GML), and the Styled Layer Descriptor (SLD) standards to solve the issue of spatial data sharing and interoperability. The project described in this paper puts the emphasis on the use of SLD to favor interoperability of geographic systems for thematic mapping.
Les standards ouverts favorisent l'int\'erop\'erabilit\'e des syst\`emes ; et l'OGC (Open Geospatial Consortium) est l'organisme de normalisation qui sp\'ecifie les standards permettant aux syst\`emes g\'eographiques d'op\'erer de concert. Parmi les sp\'ecifications connues, l'OGC d\'efinit des standards comme Web Map Server (WMS), Web Feature Server (WFS), Geographic Markup Language (GML), ainsi que Styled Layer Descriptor (SLD) pour r\'esoudre le probl\`eme de partage et d'interop\'erabilit\'e des donn\'ees spatiales. Le projet d\'ecrit dans cet article met l'accent sur l'utilisation de SLD pour favoriser l'interop\'erabilit\'e des syst\`emes g\'eographiques d\'edi\'es \`a la cartographie th\'ematique.

%\section{What is SLD~?}
\section{Qu'est-ce que SLD~?}
%SLD stands for Styled Layer Descriptor, it is an encoding that extends the Web Map Service specification to allow user-defined symbolization of feature data. It allows users (or systems) to determine which features or layers are rendered with which colors or symbols. SLD addresses the important need for users (and software) to be able to control the visual portrayal of the geospatial data. FOSS4G applications highly rely on and respect open standards, and SLD is implemented by Geoserver, Mapserver, deegree among many other software.
SLD signifie Styled Layer Descriptor (Descripteur de Style de Couche), il s'agit d'un encodage qui \'etend la sp\'ecification WMS pour permettre de personnaliser la symbologie \`a appliquer sur les entit\'es spatiales. Celle-ci permet aux utilisateurs (ou syst\`emes) de d\'eterminer avec quelles couleurs ou symboles quelles entit\'es ou couches de donn\'ees doivent \^etre graphiquement repr\'esent\'ees. SLD r\'epond au besoin de l'utilisateur (ou logiciel) de contr\^oler le rendu visuel des donn\'ees g\'eographiques sur une carte. Les applications libres de la g\'eoinformatique respectent et se basent fortement sur ces standards ouverts, et SLD est notamment impl\'ement\'e par Geoserver, Mapserver, deegree parmi d'autres.

%Next version of this standard is known as the Symbology Encoding Specification which is still in progress. The ability to define styling rules requires a styling language that the client and server can both understand. Symbology Encoding provides this language, while the SLD profile of WMS enables application of Symbology Encoding to WMS layers using extensions of WMS operations.
La prochaine version de ce standard est connue sous le nom de Symbology Encoding Specification qui est en cours de d\'efinition. La possibilit\'e de d\'efinir des r\`egles de style n\'ecessite un language de style que client et serveur doivent comprendre. Symbology Encoding fournit ce langage, alors que SLD en tant que profil WMS ne permet que l'application des r\`egles de style aux couches WMS.

%\section{Is SLD ready for thematic mapping~?}
\section{SLD convient-il \`a la cartographie th\'ematique~?}
%Concretely, SLD is a useful and complete specification for styling your maps. For each layer you could say ``color all my line features in blue'', or ``make all polygon borders black, and the insides pale yellow'', or even ``use little triangles for all my points''. But you can also define even more complex styles. You can define the style rules based on attributes of the features in a layer. In a roads data set, you can style highways with a three-pixel red line, style four-lane roads in a two-pixel black line, and style two-lane roads in a one-pixel black line, thanks to an attribute that indicates the type of road.
Concr\`etement, SLD est une sp\'ecification utile et compl\`ete pour d\'efinir le style de rendu de vos cartes. Pour chaque couche vous pourriez dire ``colorie toutes les entit\'es ligne en bleu'', ``dessine tous les polygones avec un bord noir rempli de jaune clair'', ou m\^eme ``utilise de petits triangles sur tous mes points''. Aussi, est-il possible de d\'efinir des styles plus complexes. Vous pouvez d\'efinir des r\`egles de style bas\'ees sur les attributs des entit\'es de la couche. Pour une couche de routes, vous pouvez d\'efinir les styles, ligne rouge de trois pixels de large pour les autoroutes, ligne noire de deux pixels pour les voies rapides, ligne noire de un pixel pour les routes secondaires, et ce gr\^ace \`a un attribut indiquant le type de route.

%But is it as good for thematic mapping? That is, for choropleth maps (Figure~\ref{choro}), proportional symbols (Figure~\ref{prop}), overlaid symbols (Figure~\ref{overlaid}), juxtaposed symbols (Figure~\ref{juxtaposed}), pie charts (Figure~\ref{pie}), bar/histogram charts (Figure~\ref{bar}), etc. These charts mainly make use of style rules based on feature attributes to transform statistical data to a graphical representation on the map. So, this project is first a study on how far we can go with SLD for thematic mapping.
Mais ce langage de style est-il aussi efficace pour la cartographie th\'ematique ? C'est-\`a-dire pour des cartes choropl\`ethes (Figure~\ref{choro}), de symboles proportionnels (Figure~\ref{prop}), superpos\'es (Figure~\ref{overlaid}), juxtapos\'es (Figure~\ref{juxtaposed}), de secteurs (Figure~\ref{pie}), de diagrammes en barres (Figure~\ref{bar}), etc. Ces cartes th\'ematiques utilisent principalement des r\`egles de style bas\'ees sur les attributs d'entit\'es pour transformer une valeur statistique en une repr\'esentation graphique sur la carte. Ainsi, ce projet repr\'esente tout d'abord une \'etude sur le potentiel de SLD pour r\'epondre \`a des besoins en cartographie th\'ematique.
\begin{figure*}[htbp]
  \centering
  \subfloat[Choropl\`ethe]{
    \label{choro}
    \includegraphics[width=0.25\textwidth]{proceedings/ertz/chartZone.png}}
    \quad          
  \subfloat[Cercles proportionnels]{
    \label{prop}
    \includegraphics[width=0.25\textwidth]{proceedings/ertz/chartCircles.png}}
  \subfloat[Cercles superpos\'es]{
    \label{overlaid}
    \includegraphics[width=0.25\textwidth]{proceedings/ertz/chartOverlayed.png}}
\\
    \quad            
  \subfloat[Demi-cercles juxtapos\'es]{
    \label{juxtaposed}
    \includegraphics[width=0.25\textwidth]{proceedings/ertz/chartJuxtaposed.png}}
  \subfloat[Graphique en secteurs]{
    \label{pie}
    \includegraphics[width=0.25\textwidth]{proceedings/ertz/chartPie.png}}
    \quad           
  \subfloat[Diagrammes en barres]{
    \label{bar}
    \includegraphics[width=0.25\textwidth]{proceedings/ertz/chartBar.png}}
  \caption{Cartes th\'ematiques}
  \label{thematicMaps}
  \vspace{-10pt}
\end{figure*}

%With the current specification of SLD, it's more or less possible to describe thematic maps, but there are some drawbacks~:
Avec la sp\'ecification actuelle de SLD, il est plus ou moins possible de d\'ecrire des cartes th\'ematiques, mais avec certains inconv\'enients~:
\begin{description}
%  \item [Choropleth map~:] one rule with a filter (class boundaries) per class, each rule having its polygon symbolizer with the fill color to apply.
%  \item [Proportional symbols~:] a point symbolizer with a built-in graphic mark like circle, a fill color, and its size controlled by a data attribute.
%  \item [Bivariate symbols~:] a mix of the filter and color of a choropleth map, and the point symbolizer of proportional symbols. Both size of the symbol and fill color are controlled by two data attributes.
%  \item [Overlaid symbols~:] two rules with a filter for the rendering order (the fact that the smallest symbol has to be in front of the greatest). And two point symbolizers per rule, each with its size controlled by a data attribute.
  \item [Carte choropl\`ethe~:] une r\`egle avec un filtre par classe (pour d\'efinir les limites de classe), chaque r\`egle ayant son "symboliseur de polygone" (PolygonSymbolizer) avec la couleur de remplissage \`a appliquer.
  \item [Symboles proportionnels~:] un "symboliseur de point" (PointSymbolizer) avec un marqueur graphique, interne au syst\`eme comme un cercle, une couleur de remplissage, et la taille du cercle contr\^ol\'ee par une donn\'ee attributaire.
  \item [Symboles bivari\'es~:] un savant m\'elange entre les filtres et couleurs de la carte choropl\`ethe, et un "symboliseur de point" pour les symboles proportionnels. La taille des cercles et la couleur de remplissage sont contr\^ol\'ees par deux donn\'ees attributaires.
  \item [Symboles juxtapos\'es~:] deux r\`egles avec un filtre pour g\'erer l'ordre d'affichage (le fait que le plus petit symbole doit \^etre devant le plus grand), et deux "symboliseurs de point" par r\`egle, chacun ayant sa taille contr\^ol\'ee par une donn\'ee attributaire.
\end{description}

%For juxtaposed symbols, pie chart, and bar/histogram chart maps, it starts to be more complex and even unpleasant to describe them with SLD. Concretely, how do we hang two juxtaposed symbols on a unique point or centroid? Same for slices of a pie chart or bars of a histogram.  One solution would be to use InlineFeature (from SLD 1.1) to draw the symbols, bars of the histogram for example. But unfortunately, InlineFeature uses GML to create temporary features, not graphics! So this is not acceptable. The second idea would be to use a kind of third party application for producing pictures of the symbols to represent points with external graphic links. Nonetheless if this is more acceptable, it is too verbose. Because one rule with a filter per symbol is required (given 50 points, SLD will need 50 rules).
Pour des cartes de symboles juxtapos\'es, de graphiques en secteurs, de diagrammes en barres, cela devient bien plus complexe voire d\'esagr\'eable \`a d\'ecrire avec SLD. En effet, comment d\'ecrire deux demi-cercles juxtapos\'es "accroch\'es" \`a un m\^eme point ou centro\"ide ? De m\^eme pour les tranches d'un camembert ou les barres d'un histogramme.

%\section{Towards an extension dedicated to thematic mapping}
\section{Vers une extension d\'edi\'ee \`a la cartographie th\'ematique}
%This initial study on how far we can go with SLD lead us to the idea of extending the symbology encoding of SLD. We call it SLD-T (even if it has nothing to do with WFS-T). Such an extension wants to extend the grammar in order to introduce specific terminology the thematic mapper is used to, ease the description of thematic maps, and reduce verbosity and redundancy.
L'\'etude initiale sur le potentiel de SLD nous a conduits \`a l'id\'ee d'une extension du langage de symbologie. Nous l'avons appel\'e SLD-T (m\^eme si cela n'a rien \`a voir avec WFS-T). Une telle extension \'etend la grammaire afin d'introduire la terminologie propre au m\'etier de la cartographie th\'ematique, de simplifier la description des cartes th\'ematiques, et de r\'eduire la verbosit\'e ainsi que la redondance.  

%Basically the idea is to create an abstract ThematicSymbolizer (like a PointSymbolizer is) that will be include in the SLD schema by extending the existing Symbolizer element from a Rule, with specializations for each kind of thematic map (Figure~\ref{rule}).
Pour l'essentiel, l'id\'ee est de cr\'eer un ThematicSymbolizer abstrait (comme le PointSymbolizer) qui sera inclu dans le sch\'ema SLD par extension de l'\'el\'ement Symbolizer existant dans une Rule, avec des sp\'ecialisations pour chaque type de carte th\'ematique (Figure~\ref{rule}).

\begin{description}
%  \item [CategoryThematicSymbolizer~:] for maps with classifications (i.e. choropleth and bivariate map). This symbolizer is built-on ThematicCategory elements to describe the classification type (by unique value, by range value, etc.).
%  \item [SimpleThematicSymbolizer~:] for maps without classification (i.e. proportional symbols). It is a simple wrapper of ``standard'' symbolizers to let them inherit useful generic elements from the ThematicSymbolizer like symbol priority and placement (see MultiThematicSymbolizer).
%  \item [MultiThematicSymbolizer~:] to depict several thematic symbols per feature (i.e. overlaid and juxtaposed symbols). A BaseSymbolizer is used to group common rendering element (like Stroke or WellKnownName) and avoid redundancy. For overlaid symbols, the rendering process order is managed by the Priority element which can be controlled by a feature attribute. For juxtaposed symbols, the PointPlacement (inspired from the TextSymbolizer) allow to define an AnchorPoint and a Displacement for each symbol.
%  \item [ChartThematicSymbolizer~:] for chart symbols (i.e. pie and bar charts). A ThematicMark (following the idea of graphic Mark) is used to specify the chart type (pie or bar). And a ChartParts element to describe the bars and slices composing the complex chart. As all ThematicSymbolizer can be rotated, one can also create an histogram.
  \item [CategoryThematicSymbolizer~:] pour des cartes avec classification (ex. : choropl\`ethe et bivari\'ee). Ce symboliseur est construit sur la base d'un \'el\'ement ThematicCategory pour d\'ecrire le type de classification (par valeur unique, par intervalle de valeurs, etc.).
  \item [SimpleThematicSymbolizer~:] pour des cartes sans classification (ex. : des symboles proportionnels). Il s'agit d'une simple enveloppe des symboliseurs ``standards'' afin qu'ils puissent h\'eriter d'\'el\'ements g\'en\'eriques utiles du ThematicSymbolizer comme la priorit\'e de symbole et le placement (voir MultiThematicSymbolizer).
  \item [MultiThematicSymbolizer~:] pour repr\'esenter plusieurs symboles th\'ematiques pour une m\^eme entit\'e (ex. : deux symboles superpos\'es ou juxtapos\'es). Un symboliseur (BaseSymbolizer) est utilis\'e pour d\'efinir les propri\'et\'es communes de rendu (comme Stroke et WellKnownName) et ce afin d'\'eviter toute redondance. Pour des symboles juxtapos\'es, le processus de rendu est g\'er\'e par un ordre gr\^ace \`a l'\'el\'ement Priority qui peut \^etre contr\^ol\'e par un attribut d'entit\'e. Pour la juxtaposition de symboles, l'\'el\'ement PointPlacement (inspir\'e du TextSymbolizer) permet de d\'efinir un point d'ancrage (AnchorPoint) et un d\'eplacement (Displacement) pour chacun des symboles.   
  \item [ChartThematicSymbolizer~:] pour des symboles en diagrammes (par ex. : graphique en secteur et diagramme en barres). Un marqueur th\'ematique (ThematicMarker, sur l'id\'ee du marqueur graphique Mark) est utilis\'e pour sp\'ecifier le type de diagramme (en secteurs ou en barres). Les \'el\'ements ChartParts d\'ecrivent les tranches ou les barres qui composent le diagramme graphique. Comme il est possible de d\'efinir une rotation pour tous les ThematicSymbolizer, il est facile de d\'ecrire un histogramme. 
\end{description}

\begin{figure}[htbp]
  \center
  \includegraphics[width=1\columnwidth]{proceedings/ertz/rule.jpg}
%  \caption{Rule with a new symbolizer}
  \caption{L'\'el\'ement Rule avec un nouveau symboliseur}
  \label{rule}
\end{figure}


%This is a brief summary about the extension. Complete XSD schema and document specification with examples are available online.\footnote{XSD schema and document specification: \url{http://geosysin.iict.ch}}
Cet article ne survole que bri\`evement le contenu de l'extension. Le sch\'ema XSD complet et le document de sp\'ecification illustr\'e d'exemples est disponible en ligne.\footnote{Schema XSD et document de sp\'ecification: \url{http://geosysin.iict.ch}}

%SLD specification was originally meant for WMS. The user can define a SLD document and send it to a WMS server, and it returns the layer after applying the style you provided. But it's also useful as part of an OWS compliant desktop application. It could take a SLD file and apply it to a WFS response in GML that it receives. So, it makes sense to use such a styling specification server-side and client-side.
La sp\'ecification initiale SLD \'etait \`a l'origine d\'edi\'ee \`a WMS. L'utilisateur d\'efinit un document SLD qui est envoy\'e \`a un serveur WMS, retournant la couche g\'eographique apr\`es avoir appliqu\'e le style d\'efini. Cependant, un tel document est aussi utile pour des applicatifs bureau conforme OWS (OGC Web Service). Celui-ci peut utiliser SLD pour l'appliquer au GML donn\'e par une r\'eponse WFS. Ainsi, un tel document de style et de symbologie a tout son int\'er\^et a \^etre utilis\'e c\^ot\'e serveur mais aussi c\^ot\'e client.

%Consider this basic scenario: a cartographer or thematic mapper designing a nice and meaningful map on its SLD compliant desktop application, and as soon as the map is ready, he pushes it on a WMS server to share it. He will push the data and the styling. If interoperability is first about sharing data, it is finally about sharing maps with the appropriate styling for visualization, and the user wants also to share thematic maps.
Consid\'erons ce simple sc\'enario : un cartographe r\'ealisant une superbe carte pleine de sens avec son outil de bureau conforme SLD, et d\`es que celle-ci est pr\^ete, la publie sur son serveur WMS pour la partager. Il devra transf\'erer sur le serveur les donn\'ees ainsi que le document de style. Si l'interop\'erabilit\'e concerne d'abord les donn\'ees, cela concerne aussi finalement le partage des repr\'esentations cartographiques avec les styles appropri\'es ainsi que la symbologie, les utilisateurs voulant aussi partager des cartes th\'ematiques.

\section{Conclusion}
%The initial study of this project tries to depict how far and how to use the specification for thematic mapping further then just for basic styling. Moreover, to enable SLD for complex thematic mapping, the project describe a solution with an extension of the symbology encoding. The extension has the aim to introduce specific terminology thematic mapper is familiar with, ease the description of thematic maps, and reduce verbosity and redundancy the use of ``standard'' SLD could produce.
L'\'etude initiale de ce projet a consist\'e \`a d\'epeindre le potentiel et comment utiliser la sp\'ecification SLD pour d\'ecrire des cartes th\'ematiques. De plus, pour permettre \`a SLD de d\'ecrire des repr\'esentations th\'ematiques complexes, le projet d\'ecrit une solution bas\'ee sur une extension de l'encodage de symbologie. L'extension a pour objectif d'introduire la terminologie propre \`a la cartographie th\'ematique, de simplifier la description des cartes th\'ematiques, et de r\'eduire la verbosit\'e ainsi que la redondance que SLD pourrait produire.

%As a proof of concept, a first implementation has been started on GeoTools, only about juxtaposed symbols. It was quite easy, because of an initial strong support of SLD and rendering model. The advantage of using GeoTools is that the library is used server-side for Geoserver but also client-side with uDig. But there are many FOSS platforms on which a complete implementation could be done, and no decision has been made. Future plans include an implementation but also a real use case. Notice, to have a really complete implementation, the rendering of legend graphic is mandatory.
Comme preuve de concept, une premi\`ere impl\'ementation a d\'emarr\'e sur Geotools, seulement pour des symboles juxtapos\'es \`a ce jour. Cela a \'et\'e assez facile gr\^ace \`a un d\'ej\`a bon support de SLD et mod\`ele de rendu. Un avantage \`a utiliser Geotools r\'eside dans le fait que cette librairie est utilis\'ee par Geoserver c\^ot\'e serveur mais aussi c\^ot\'e client avec uDig. Mais il existe de nombreuses autres plateformes libres sur lesquelles une impl\'ementation pourrait \^etre men\'ee, et aucun choix n'a encore \'et\'e arr\^et\'e. Dans le futur, hormis une impl\'ementation compl\`ete il est envisag\'e une mise en oeuvre dans le cadre d'un cas concret sur des besoins r\'eels. Il est \`a not\'e qu'une impl\'ementation compl\`ete requiert aussi le rendu des l\'egendes de carte. 

%SLD is more then ever a key element for Spatial Data Infrastructure, and its acceptance is probably crossing a step as we see more and more projects building SLD renderer and especially editor to ease user's life to create SLD (GeoServer, Mapbender, OpenLayers, etc.). Finally, at the so called ``web thematic mapping''' side, it is good to see MapServer now able to create complex thematic maps with pie and bar charts, and also client-side application like CarThema5 (based on gvSIG), JumpChart (based on JUMP), OrbisGIS (based on GeoTools and GDMS) are ready to go for thematic mapping. This is all good news going the right way.
SLD est plus que jamais un \'el\'ement cl\'e pour une Infrastructure de Donn\'ees Spatiales (IDS), et son acceptation est probablement entrain de franchir une \'etape. En effet, nous pouvons constater que de plus en plus de projets interpr\`etent la sp\'ecification et proposent notamment un \'editeur pour faciliter la vie de l'utilisateur qui souhaite sauvegarder sa carte dans ce format (Geoserver, Mapbender, OpenLayers, etc.). Aussi, du c\^ot\'e du "webmapping" orient\'e cartographie th\'ematique, il est encourageant de voir MapServer \`a pr\'esent capable de cr\'eer des cartes th\'ematiques complexes \`a base de diagramme en secteurs ou en barres, et de m\^eme, c\^ot\'e client, des applicatifs comme CarThema5 (bas\'e sur gvSIG), JumpChart (bas\'e sur OpenJUMP), OrbisGIS (bas\'e sur Geotools et GDMS) bient\^ot capables de produire de telles cartes. Ce sont toutes des initiatives allant dans le bon sens. 

%\section{Acknowledgements}
\section{Remerciements}

%The authors wish to thank their partners at \href{http://www.microgis.ch}{MicroGIS SA} and \href{http://www.camptocamp.com}{Camptocamp SA} for their collaboration on parts of the research behind this paper.
Les auteurs souhaitent remercier leurs partenaires, \href{http://www.microgis.ch}{MicroGIS SA} et \href{http://www.camptocamp.com}{Camptocamp SA} pour leur collaboration. 

\begin{thebibliography}{5}
  \bibitem{geoSysin}A.~Sae-Tang, and O.~Ertz, 
  \newblock {\sl Towards Web Services Dedicated to Thematic Mapping},
  \newblock HEIG-VD, IICT/geo.SYSIN
  \newblock \url{http://geosysin.iict.ch}.

  \bibitem{ogcSld}OGC Styled Layer Descriptor Specification,
  \newblock \url{http://www.opengeospatial.org/standards/sld}.

  \bibitem{ogcSymbEnc}OGC Symbology Encoding Specification,
  \newblock \url{http://www.opengeospatial.org/standards/symbol}.

  \bibitem{cpqd}M.D.~Teixeira, R.~de~Melo~Cuba, and G.M.~Weiss,
  \newblock {\sl Creating Thematic Maps with OGC Standards Through the Web},
  \newblock CPqD Telecom \& IT Solutions,
  \newblock \url{http://www.gmldays.com/papers/Teixeira.html}.

  \bibitem{geoSismo}M.A.~Manso, A.~Maldonado, R.~Hernandez, D.~Ballari, and J.~Moya,
  \newblock {\sl GEOSISMO~: Visualization of Events and Seismologic Characteristics in the Internet},
  \newblock Madrid Polytechnic University,
  \newblock \url{http://redgeomatica.rediris.es/ICA_Madrid2005/papers/manso.pdf}.
\end{thebibliography}

\address{Abson Sae-Tang\\
  HEIG-VD IICT/geo.SYSIN\\
  IICT/geo.SYSIN, \url{http://www.iict.ch}\\
  \email{musy-abson.sae-tang AT heig-vd.ch}}
  
\address{Olivier Ertz\\
  HEIG-VD IICT/geo.SYSIN\\
  IICT/geo.SYSIN, \url{http://www.iict.ch}\\
  \email{olivier.ertz AT heig-vd.ch}}
