% Template GRASS newsletter - Article
% Language: Latex
%

\title{Tikiwiki un GeoCMS}
\author{par Franck Martin, traduit par Marie Silvestre}

\maketitle

\section{Vue d'ensemble}
\label{sec:overview}

Vous avez peut-\^etre entendu parl\'e de Content Management Systems (CMS) ou Syst\`emes de Gestion de Contenus (SGC), il s'agit d'applications web qui permettent de partager du contenu via internet. Le concept a \'evolu\'e en m\'elangeant les wikis avec les sites internet bas\'es sur un forum. Un wiki \footnote{D\'efinition d'un wiki : \url{http://en.wikipedia.org/wiki/Wiki}} est un site internet permettant la cr\'eation rapide de pages utilisant un langage simple de formatage. Les liens vers les nouvelles pages sont cr\'e\'es en premier puis les pages elles-m\^emes. A partir de l\`a, des forums, des galeries d'images et des blogs ont \'et\'e ajout\'es. Tikiwiki \footnote{Site internet de Tikiwiki: \url{http://tikiwiki.org}} a \'et\'e cr\'e\'e comme un CMS int\'egr\'e d\`es le d\'ebut, l'approche est plus robuste, et permet \`a toutes les fonctionnalit\'es d'interagir entre elles. Dans Tikiwiki, vous avez un wiki, une galerie d'images, une galerie de fichiers, des blogs, des forums, des articles, des trackers et bien d'autres choses encore, le tout li\'e via un syst\`eme de gestion des utilisateurs et des groupes pour d\'efinir les permissions sur les objets. Tikiwiki ne d\'epend pas d'un format de base de donn\'ees sp\'ecifique, utilisant \textit{PHP ADODB}\footnote{le projet PHP ADODB : \url{http://adodb.sourceforge.net/}} et \textit{Smarty}\footnote{moteur de template Smarty : \url{http://smarty.php.net/}}, un moteur de template pour PHP.  Il est alors facile de personnaliser l'apparence et le ressenti de Tikiwiki de fa\c{c}on \`a ce que votre site internet ne ressemble pas au site Tikiwiki par d\'efaut.


\subsection{Qu'est-ce que Tikiwiki exactement ?}

Tikiwiki est un des premiers CMS d\'evelopp\'es, il est hautement configurable mais souffre d'un code de base long et d'un manque de module. Cependant ce d\'esavantage est aussi un avantage si vous voulez d\'eployer toutes les fonctionnalit\'es dans un CMS car elles sont directement int\'egr\'ees plut\^ot que dans des modules ind\'ependants. Tikiwiki peut \'egalement \^etre \'etendu via \textit{mods}, un syst\`eme de plug-in qui permet d'\'etendre les fonctions. J'ai choisi Tikiwiki comme CMS parce qu'il a \'et\'e mis au rang de projet du mois sur Sourceforge et \'egalement parce que la communaut\'e de d\'eveloppeurs est tr\`es ouverte. Il a \'et\'e tr\`es facile d'ajouter du code au code de base. C'est important lorsque vous commencez \`a contribuer \`a un projet.

Tikiwiki a un syst\`eme de s\'ecurit\'e \'etendu et les d\'eveloppements actuels se focalisent sur l'impl\'ementation d'\textit{AJAX} dans le code 
pour le rendre plus efficace. L'autre point important de Tikiwiki est l'internationalisation. Il y a plusieurs langues pour l'interface et 
il est ais\'e d'ajouter votre propre langue avec l'\'equivalent php de \textit{gettext}. Aussi, Tikiwiki supporte l'encodage en UTF8 des caract\`eres et les \'ecritures de droite \`a gauche. Vous pouvez aussi bien m\'elanger plusieurs langues dans la m\^eme page que faire une traduction int\'egrale des pages du wiki. Enfin, Tikiwiki est hautement personnalisable via le  \textit{CSS} et les templates \textit{Smarty}.\\


\begin{figure}[tbp]
   \centering
   %name of your graphic, without the path AND in EPS format:
   \includegraphics[width=0.95\columnwidth]{integration/martin/tikiwiki1}
   %caption of the figure
   \caption{Une carte ind\'ependante dans Tikiwiki.}
   %label of the figure, which has to correspond to \ref{}:
   \label{fig:tikiwiki1}
\end{figure}


\subsection{Un GeoCMS, qu'est-ce que c'est ?}
Depuis le succ\`es de Google Maps, les cartes sont devenues une partie importante de tout site internet. Le succ\`es de Google Maps est d\^u 
\`a la publication de son API, permettant \`a n'importe quel utilisateur d'ajouter des donn\'ees ponctuelles \`a une carte Google, comme la localisation d'un voyage. Les cartes sont disponibles depuis longtemps sur internet, comme avec \textit{Mapquest}, mais elles n'\'etaient pas personnalisables par le grand public. Un \textit{\textbf{Geo}spatial \textbf{C}ontent \textbf{M}anagement \textbf{S}ystem} (GeoCMS) est un CMS avec des objets g\'eographiques et des capacit\'es de rendu cartographique. En plus d'avoir sur votre site internet une carte interactive en ligne sur laquelle vous pouvez zoomer, recadrer, interroger les objets, vous avez des objets g\'eographiques que vous pouvez repr\'esenter. Ces cartes peuvent \^etre ind\'ependantes (voir fig. \ref{fig:tikiwiki1}) ou inclues dans une page du wiki (voir fig. \ref{fig:tikiwiki2}). Par exemple, vous pouvez demander \`a vos utilisateurs authentifi\'es d'ajouter leur localisation et les voir repr\'esent\'es par un point sur la carte. Vous pouvez cr\'eer une galerie d'images o\`u chaque image \`a une localisation et les voir repr\'esent\'ees par un point sur la carte, pour montrer votre dernier voyage, des monuments importants, des entit\'es g\'eologiques, etc.

Avec toute couche g\'eographique, se pose le probl\`eme d'en savoir suffisament sur la couche (m\'etadonn\'ees) : qui a cr\'e\'e la couche, quand, quelle est la qualit\'e de la donn\'ee, dans quel syst\`eme de projection les objets sont-ils repr\'esent\'es, etc. Il est important d'avoir ces informations pour \'etablir un niveau de qualit\'e des donn\'ees. Si vous avez une couche de population et qu'une catastrophe frappe une r\'egion sp\'ecifique, vous devez avoir une certaine qualit\'e de donn\'ees pour pr\'eparer la r\'eponse. Lier des couches sur la carte avec une page du wiki est possible dans Tikiwiki. Les m\'etadonn\'ees sont de fait faciles 
\`a entrer et le sp\'ecialiste peut d\'ecrire les caract\'eristiques int\'eressantes repr\'esent\'ees sur la carte.

Tikiwiki fournit \'egalement un module complet de chargement et traite les couches g\'eographiques pour les rassembler sur les cartes via les mapfiles de MapServer. Un historique est maintenu pour chaque mapfile afin de garder une trace des changements et, optionnellement, vous pr\'evient de tels changements.\\


\begin{figure}[tbp]
   \centering
   %name of your graphic, without the path AND in EPS format:
   \includegraphics[width=1\columnwidth]{integration/martin/tikiwiki2}
   %caption of the figure
   \caption{Une carte inclue dans une page du wiki.}
   %label of the figure, which has to correspond to \ref{}:
   \label{fig:tikiwiki2}
\end{figure}


\section{Installation et configuration}
La fonctionnalit\'e de cartographie de Tikiwiki a pu \^etre cr\'e\'ee gr\^ace \`a la publication de l'API MapServer\footnote{Site internet de MapServer : \url{http://mapserver.gis.umn.edu/}} pour PHP. Le moteur de MapServer est appel\'e dans Tikiwiki pour cr\'eer des rendus image pour l'interface de Tikiwiki.

Je ne vais pas passer trop de temps sur l'installation et la configuration mais r\'esumer rapidement car le sujet de l'article est de vous donner envie de l'installer, donc je me concentrerai sur la description de ses fonctionnalit\'es.

L'installation de Tikiwiki est assez lin\'eaire et la documentation compl\`ete sur l'installation est disponible en ligne \footnote{Documents d'installation de Tikiwiki : \url{http://doc.tikiwiki.org/}} pour diff\'erents syst\`emes d'exploitation incluant MS-Windows. Il y a \'egalement quelques paquets disponibles pour diff\'erentes versions de Linux. L'installation de Tikiwiki peut \^etre r\'esum\'ee ainsi : 
d\'ecompressage et remplissage d'un formulaire qui dirige Tikiwiki vers une base de donn\'ees vide et d\'ej\`a cr\'e\'ee. L'installation de l'extension \textit{php-mapscript} du code de MapServer est un peu plus compliqu\'ee car vous devez compiler \textit{MapServer} avec toutes ses d\'ependances et enregistrer l'extension avec PHP. Vous allez \'egalement devoir cr\'eer un r\'epertoire accessible pour Apache et prot\'eg\'e de mani\`ere ad\'equate pour stocker les mapfiles, les couches g\'eographiques et les images g\'en\'er\'ees. Il y aura \'egalement quelques paquets disponibles avec quelques exemples de donn\'ees, notamment pour Mandriva. Pour cette installation sp\'ecifique, la documentation peut-\^etre trouv\'ee ici : \url{http://doc.tikiwiki.org/tiki-index.php?page=Maps+Install}


\section{Cr\'eer des cartes}
Tikiwiki utilise le moteur sous-jacent MapsServer, ce qui signifie qu'il utilise le format mapfile. Ce mapfile, avec l'extension \textit{.map}, cr\'ee un espace de travail web \`a utiliser dans l'application. Il existe un \'editeur de texte dans Tikiwiki pour \'editer le mapfile. Il utilise \'egalement des balises pr\'e-d\'efinies pour compl\'eter automatiquement certaines parties du mapfile (par exemple une couche template). Il y a plusieurs sections ou objets dans un mapfile.
L'objet g\'en\'eral est l'objet carte qui commence par MAP et termine par END. A l'int\'erieur de cet objet on trouve les objets REFERENCE, LEGEND, WEB, SCALEBAR et QUERYMAP. Ils d\'efinissent la pr\'esentation g\'en\'erale de la carte g\'en\'er\'ee, la carte de situation (REFERENCE), l'\'echelle (SCALEBAR), la l\'egende (LEGEND) et les objets surlign\'es par une requ\^ete (QUERYMAP). Dans l'objet MAP, vous pouvez ins\'erer des objets LAYER (couche). Il y a principalement deux types de LAYERs : raster et vecteur. L'utilisation de la librairie GDAL (prononcer \textit{goodle} en Anglais) pour les raster et OGR (prononcer \textit{ogre} en anglais) 
pour les vecteurs permet d'\'ecrire et de lire beaucoup de formats de fichiers de Syst\`eme d'Information G\'eographiques (SIG). Le format le plus utilis\'e pour les rasters est le GeoTIFF et les formats shapefiles ou les fichiers MapInfo TAB pour les vecteurs. A l'int\'erieur d'un objet LAYER, vous d\'efinissez un ou plusieurs objets CLASS pour sp\'eficifier la couleur et le type d'entit\'es dessin\'ees sur la carte. Vous pouvez \'egalement ajouter un objet LABEL si vous souhaitez ajouter des \'etiquettes aux entit\'es. Un mapfile typique peut \^etre trouv\'e sur \url{http://doc.tikiwiki.org/Maps+Mapfile+Tutorial}.


Chaque couche (objet LAYER) pointe sur un fichier SIG qui est g\'er\'e par une interface de gestion des couches vous permettant de charger 
des fichiers SIG \`a utiliser dans le mapfile dans Tikiwiki.

Tikiwiki tire profit des commentaires et de l'objet METADATA du mapfile. Tikiwiki place un ent\^ete dans le mapfile qui permet de garder 
une trace des r\'evisions entre chaque \'edition du mapfile, un historique est \'egalement cr\'e\'e.


\begin{figure}[tbp]
   \centering
   %name of your graphic, without the path AND in EPS format:
   \includegraphics[width=1\columnwidth]{integration/martin/tikiwiki1}
   %caption of the figure
   \caption{Une table montrant les informations relatives aux objets requ\^et\'es.}
   %label of the figure, which has to correspond to \ref{}:
   \label{fig:tikiwiki3}
\end{figure}

Le mot cl\'e WIKI de l'objet METADATA est utilis\'e pour faire le lien entre une couche et une page du wiki, vous permettant de fournir des
explications sur une couche sp\'ecifique. Ce lien est cr\'e\'e dans le gestionnaire de couches sur l'interface de la carte.
Le mot cl\'e DOWNLOAD de l'objet METADATA est \'egalement utilis\'e pour t\'el\'echarger les fichiers SIG composant la couche. Tikiwiki est donc un outil de de publication de donn\'ees g\'eographiques.

Enfin, le mot cl\'e VIEW de l'objet METADATA est utilis\'e pour cr\'eer des vues pr\'ed\'efinies de la carte. Les utilisateurs peuvent donc zoomer sur 
le Pacifique ou sur l'Europe ou sur n'importe quel autre endroit int\'eressant.

Le syst\`eme permet l'inclusion de beaucoup de couches mais Tikiwiki peut lui-m\^eme cr\'eer quelques couches sp\'ecifiques. Par exemple une couche contenant la localisation de tous les utilisateurs enregistr\'es qui ont rentr\'e une localisation valide peut \^etre cr\'e\'ee. De m\^eme, une galerie d'images peut \^etre d\'eclar\'ee de type g\'eographique et chaque image aura une position. Une couche issue de toutes ces images peut \^etre cr\'e\'ee et ajout\'ee \`a n'importe quel mapfile en tant que couche de points sur la carte. Lorsque les utilisateurs interrogent un de ces points, une table contenant les informations \`a propos de l'image et l'image elle-m\^eme peuvent \^etre affich\'ees juste en dessous de la carte (voir fig. \ref{fig:tikiwiki3}).

Un plugin wiki a \'et\'e d\'evelopp\'e, il inclut n'importe quelle carte dans une page wiki et met en oeuvre quelques fonctionnalit\'es basiques telles que le zoom et le d\'eplacement panoramique. A son niveau le plus simple, une image g\'en\'er\'ee peut-\^etre ins\'er\'ee dans une page web, et donc une page wiki, d\`es lors que les param\`etres pour g\'en\'erer l'image de la carte sont pr\'esents dans l'URL. La m\'ethode GET est utilis\'ee plut\^ot que POST pour g\'en\'erer les cartes.\\



\subsection{La nouvelle interface de visualisation}
J'ai travaill\'e sur l'impl\'ementation d'\textit{AJAX} dans l'interface de visualisation standard via la librairie \textit{xajax}\footnote{XAJAX library site: \url{http://www.xajax.org/}}. Je propose \'egalement une nouvelle interface bas\'ee sur le code de Ka-Map\footnote{ka-Map site: \url{http://ka-map.maptools.org/}}. J'ai int\'egr\'e ce code dans Tikiwiki et il est fournit en tant que \textit{mods} (module) pour les versions 1.9.x et 1.10.x de Tikiwiki. Alors que la version 1.10.x est encore en d\'eveloppement, il permet au syst\`eme de gestion du site d'int\'egrer la nouvelle interface imm\'ediatement en t\'el\'echargeant le \textit{mod}.

Le code de Ka-Map a \'et\'e modifi\'e pour le rendre portable et une petite librairie identifie les mapfiles compatibles Ka-Map en regardant la pr\'esence du mot cl\'e KAMAP dans la balise METADATA de l'objet WEB. Vous n'avez qu'\`a sp\'ecifier le nom de la carte et les diff\'erentes \'echelles disponibles, par exemple :

\begin{verbatim}
KAMAP ?Pacific,1000000,500000,100000?
\end{verbatim}

Vous pouvez \'egalement utiliser les mots-cl\'e standard de Ka-Map tels qu'ils sont d\'ecrits dans la documentation de Ka-Map. Au final le code va identifier le mot-cl\'e WIKI dans LAYER METADATA et l'afficher \`a c\^ot\'e de la l\'egende de la couche. La page wiki appara\^it avec un fond semi-transparent par dessus la carte. Cette nouvelle interface a l'apparence et le ressenti de Google Map pour la navigation tout en offrant la possibilit\'e de personnaliser les jeux de donn\'ees (voir fig. \ref{fig:tikiwiki4}).

\section{L'avenir est brillant}
Tikiwiki, en tant que GeoCMS, a \'et\'e mis en place dans plusieurs pays\footnote{Pays du Pacifique Sud utilisant GeoCMS: \url{http://www.sopac.org/maps}} et est en train de devenir un succ\`es, MapServer PHP MapScript \'etant assez stable avec Apache. MapServer est conforme \`a la norme Web Map Server (WMS) de l'Open Geospatial Consortium (OGC), ce qui signifie que beaucoup de couches peuvent \^etre diffus\'ees via internet \`a un grand panel de clients cartographiques et permettant une int\'egration totale.

Du c\^ot\'e du CMS, plusieurs d\'eveloppements sont envisag\'es. Le premier est d'inclure plus de javascript dans l'interface cartographique pour afficher les coordonn\'ees cartographiques de la position du pointeur en temps r\'eel, pour mesurer des distances et pour effectuer des zooms \`a l'aide d'un rectangle de s\'election. D'une mani\`ere g\'en\'erale, AJAX pourrait \^etre utilis\'e pour rendre l'interface encore plus ergonomique.

Quelques fonctionnalit\'es suppl\'ementaires seront axamin\'ees et d\'evelopp\'ees. Par exemple, la possibilit\'e de localiser g\'eographiquement des objets gr\^ace \`a leurs attributs, par exemple : o\`u est situ\'e la ville appel\'ee Suva ? Pour les couches raster et les autres, l'utilisateur pourra afficher dans une fen\^etre tous les attributs d'un endroit au passage du pointeur dessus.

Plus d'objets dans Tikiwiki auront une composante g\'eographique, comme les galeries de fichiers, les blogs, les articles, etc. Mais la fonctionnalit\'e la plus int\'eressante sera de lier les trackers aux cartes. Cette fonctionnalit\'e de tracker est en fait un syst\`eme qui cr\'ee un formulaire afin d'entrer des donn\'ees dans la base de donn\'ees. Pour le moment, les donn\'ees de tracker sont uniquement sauvegard\'ees dans la base de donn\'ees Tikiwiki mais avec l'utilisation de DSN, les trackers pourront \^etre enregistr\'es dans n'importe quelle base de donn\'ees, dont Postgresql. Postgresql, par l'interm\'ediaire de son extention PostGIS\footnote{Site de PostGIS: \url{http://postgis.refractions.net/}} peut stocker des objets
g\'eographiques et MapServer peut lire de telles bases Postgresql. Les trackers seront un moyen d'ajouter n'importe quel type d'information g\'eographique. Les perspectives sont donc infinies : suivi de v\'ehicules, informations sur les p\^eches, syst\`eme d'\'echantillonnage de sol, etc. L'avenir est donc brillant. Codeurs, r\'edacteurs et utilisateurs sont toujours les bienvenus.\\


\begin{figure}[tbp]
   \centering
   %name of your graphic, without the path AND in EPS format:
   \includegraphics[width=1\columnwidth]{integration/martin/tikiwiki4}
   %caption of the figure
   \caption{L'interface Ka-Map.}
   %label of the figure, which has to correspond to \ref{}:
   \label{fig:tikiwiki4}
\end{figure}


\begin{figure}[tbp]
   \centering
   %name of your graphic, without the path AND in EPS format:
   \includegraphics[width=1\columnwidth]{integration/martin/tikiwiki5}
   %caption of the figure
   \caption{Le syst\`eme de Serveur cartographique \`a Nauru.}
   %label of the figure, which has to correspond to \ref{}:
   \label{fig:tikiwiki5}
\end{figure}


\address{Franck Martin\\
 \email{franck AT sopac.org}\\
\url{http://www.peachymango.org/tiki-index.php?page=Franck+Martin}\\
\begin{footnotesize}Franck Martin est le principal d\'eveloppeur des aspects cartographiques dans Tikiwiki. Il travaille et vit \`a Fidji dans le Pacifique sud 
et a \'et\'e un utilisateur pr\'ecoce de GNU/Linux. Il travaille actuellement \`a l'installation de GeoCMS dans 14 pays des \^iles du Pacifique 
(voir fig. \ref{fig:tikiwiki5}). Ce projet est financ\'e par le Fond Europ\'een de D\'eveloppement.\end{footnotesize}}


%%% Local Variables: 
%%% mode: latex
%%% TeX-master: main_document.tex
%%% End: 

