Posséder un ordinateur ayant Ubuntu 10.04 installé ou bien une machine virtuelle faisant fonctionner ce système d'exploitation.
Savoir utiliser la ligne de commande sous Linux.
Introduction
Cette présentation est une version dérivée de la documentation officielle en anglais sur le site du projet. Elle a d'abord été faite pour TinyOWS 0.8.0. Entre temps, la version 0.9.0 est sortie et le tutoriel a aussi été testé pour la 0.9.0.
La principale différence entre cette documentation et celle du site officiel reste le niveau de détail sur l'environnement nécessaire à l'installation.
Sur les parties "Installation de TinyOWS et fonctionnement basique en WFS" ainsi que "Utiliser TinyOWS avec du WFS-T", il ne s'agit que d'une version francisée et adaptée à des tests "en local" de documents, par ailleurs, disponibles en anglais sur http://tinyows.org/trac/wiki/OpenLayersHowToBasic et http://tinyows.org/trac/wiki/OpenLayersHowToTransactional
Nous souhaitons ainsi que TinyOWS ne devienne plus seulement adopté par les "early adopters" (précurseurs) du SIG.
Intérêts de l'outil
Pour citer le développeur principal, Olivier Courtin lors de sa présentation à OSGIS UK 2010
"Pourquoi TinyOWS ?
- Parce que Mapserver ne fait pas de WFS-T (et il n'est pas prévu qu'il en fasse)
- Parce que vous ne souhaitez peut-être pas installer et maintenir un serveur Tomcat seulement pour Geoserver
- Parce que le standard WFS-T est proche des concepts des bases de données spatiales, et que Postgis est un bon choix
- Parce que les échanges WFS nécessitent vraiment des hautes performances"
Des informations détaillées sur les performances de TinyOWS sont disponibles sur http://tinyows.org/trac/wiki/ConferenceSlide
Dépendance technique pour le fonctionnement de TinyOWS
TinyOWS nécessite d'avoir installé les librairies/applications suivantes :
- libxml2 (version 2.6.20 ou supérieure)
- PostGIS (version 1.5.x ou supérieure)
- PostgreSQL (avec les entêtes libpq, donc les paquets de développement)
- Un serveur web avec le support cgi-bin
Installation préalable des librairies/applications nécessaires au fonctionnement
Commencons par le plus facile : libxml2
sudo apt-get install libxml2 libxml2-dev
Mise en place de la base de données avec la cartouche spatiale
Actuellement sous Ubuntu, il n'existe pas de paquets (en simplifiant, l'équivalent d'un fichier exe ou msi sous Windows) pour Postgis 1.5
Nous allons devoir compiler Postgis 1.5 pour résoudre ce problème (plus d'informations sur la compilation)
Pour cela, nous allons reprendre un tutoriel "pompé" sur Georezo et ForumSIG (tuto dont je suis l'auteur ;))
Installation des paquets depuis les dépôts
Installation des paquets nécessaires à la compilation, de PostgreSQL avec les entêtes libpq et installation de proj, une librairie, gérant les référentiels spatiaux c'est à dire les projections cartographiques.
sudo apt-get install build-essential automake autoconf m4 autotools-dev sudo apt-get install postgresql-8.4 libpq-dev postgresql-server-dev-8.4 sudo apt-get install proj libproj-dev
Installation de GEOS (Il faut pour postgis 1.5, geos >= à la version 3.1.1 et celle de Lucid est la 3.1.0 )
GEOS (Geometry Engine - Open Source) est une librairie qui apporte des fonctionnalités de constructions d'objets géométriques et de traitements spatiaux. Elle est un portage en C++ de la JTS (Java Topology Suite), une librairie Java ayant les mêmes fonctionnalités.
Nettoyage du paquet GEOS (si nécessaire) :
sudo apt-get --purge libgeos-3.1.0
Installation de Geos en manuel :
Récupération des sources et décompression des fichiers :
wget http://download.osgeo.org/geos/geos-3.2.2.tar.bz2 tar -xvjf geos-3.2.2.tar.bz2 cd geos-3.2.2
Installation de quelques paquets supplémentaires pour disposer de SWIG (Simplified Wrapper and Interface Generator) qui permet de connecter des logiciels ou bibliothèques logicielles écrites en C/C++ avec des langages de scripts comme Ruby ou Python pour Geos (optionnelle) :
sudo apt-get install python-dev swig libtool
Vérification des dépendances, compilation, installation des binaires et mise à jour des chemins vers les librairies partagées
Si vous avez installé SWIG :
./configure --enable-pythonSinon :
./configureEnsuite quel que soit le choix effectué :
make sudo make install sudo ldconfig
cd ..
Installation de Postgis
Comme précédemment pour Geos mais avec Postgis maintenant :)
wget http://postgis.refractions.net/download/postgis-1.5.1.tar.gz tar -xvzf postgis-1.5.1.tar.gz cd postgis-1.5.1/ ./configure make sudo make install sudo ldconfig
Test de chargement d'une base de données :
sudo -s -u postgres #changer le mot de passe de postgres à "atlas" pour pouvoir se connecter ultérieurement psql -c"ALTER user postgres WITH PASSWORD 'atlas'" createdb geodb # (avec le mot de passe atlas) createlang -dgeodb plpgsql psql -dgeodb -f /usr/share/postgresql/8.4/contrib/postgis-1.5/postgis.sql psql -dgeodb -f /usr/share/postgresql/8.4/contrib/postgis-1.5/spatial_ref_sys.sql psql -dgeodb -c"select postgis_full_version();"
La dernière ligne devrait vous renvoyer si tout va bien :
postgis_full_version ------------------------------------------------------------------------------------------------------- POSTGIS="1.5.1" GEOS="3.2.2-CAPI-1.6.2" PROJ="Rel. 4.7.1, 23 September 2009" LIBXML="2.7.6" USE_STATS (1 ligne) (END)
Installation de Pgadmin III
C'est une interface graphique de connexion plus agréable pour commencer sous PostgreSQL/PostGIS
Installer-la avec après être sorti de l'authentification postgres :
exit sudo apt-get install pgadmin3
Installation du serveur web
Un serveur Web est un ordinateur central qui fait en sorte que vous puissiez voir avec votre navigateur les sites Web se trouvant sur ce serveur. Il permet aussi de mettre à disposition des services à destination d'autres utilisateurs et permettant d'échanger avec eux (exemple : webservices de l'OGC).
Nous avons fait le choix d'installer plus que le nécessaire pour ce tutoriel :
En plus de Apache, nous avons rajouté le support de MySQL et PostgreSQL dans PHP 5 si vous souhaitiez développer en vous connectant sur ces bases.
Installer Apache et PHP 5
sudo apt-get install libapr1 apache2 apache2-utils apache2.2-common apache2-mpm-prefork libapache2-mod-chroot libapache2-mod-auth-pam libapache2-mod-auth-sys-group sudo apt-get install php5 php5-cgi php5-common php5 php5-gd libapache2-mod-php5 php5-pgsql php5-mysql php5-xsl
Tester Apache avec :
sudo service apache2 restartUne erreur est retournée. Nous allons pour le moment l'ignorer pour revenir ultérieurement dessus.
Installer et configurer MySQL serveur ainsi que les module MySQL et PostgreSQL pour Apache
On passe encore par le gestionnaire de paquets (pour ceux, qui n'ont pas compris ce que c'est -> http://doc.ubuntu-fr.org/gestionnaire_de_paquets) :
sudo apt-get install libapache2-mod-auth-pgsql # module Apache 2 pour l'authentification POSTGRESQL sudo apt-get install mysql-server libapache2-mod-auth-mysql # MySQL server et module Apache 2 pour l'authentification MySQL
Cela retourne :
Outil de configuration des paquets
+----------------¦ Configuration de mysql-server-5.1 +-----------------+
¦ Il est très fortement recommandé d'établir un mot de passe pour le ¦
¦ compte d'administration de MySQL (« root »). ¦
¦ ¦
¦ Si ce champ est laissé vide, le mot de passe ne sera pas changé. ¦
¦ ¦
¦ Nouveau mot de passe du superutilisateur de MySQL : ¦
¦ ¦
¦ ____________________________________________________________________ ¦
¦ ¦
¦ <Ok> ¦
¦ ¦
+----------------------------------------------------------------------+
Saisir votre mot de passe et le noter pour ne pas l'oublier.
Le-ressaisir pour confirmation.
Editer le fichier suivant qui joue sur la configuration Apache et sur le fonctionnement cgi avec :
sudo nano /etc/apache2/apache2.conf
Ecrire à la fin du fichier :
ServerName localhost
Ecrire à la suite pour utiliser cgi-bin :
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ <Directory /usr/lib/cgi-bin/> Options ExecCGI AddHandler cgi-script cgi pl py </Directory>
Enregistrer puis relancer Apache avec :
sudo service apache2 restartNormalement le retour doit être :
* Restarting web server apache2 ... waiting [ OK ]
L'erreur signalée antérieurement a été réglée ;)
Installation de TinyOWS et fonctionnement basique en WFS
Compilation et installation depuis les sources stables de TinyOWS
wget http://tinyows.org/tracdocs/release/tinyows-0.9.0.tar.bz2 tar xvjf tinyows-0.9.0.tar.bz2 cd tinyows ./configure make sudo make install sudo make install-demo
Copier le binaire obtenu dans le répertoire cgi-bin après avoir changé quelques droits :
sudo chmod 777 /usr/lib/cgi-bin/ cp tinyows /usr/lib/cgi-bin/
Tester et utiliser TinyOWS
C'est bien, vous avez un binaire installé mais comment on se sert de ce binaire ?
Précédemment, nous sommes passés rapidement dessus la ligne de commande :
sudo make install-demo
Celle-ci a créée une base de données explorable via pgadmin III .
Editer le fichier de configuration de tinyows :
sudo nano /usr/local/tinyows/config.xml
Inspecter le code, comparer-le avec ci-dessous pour le comprendre et seulement ensuite le changer (sinon ça n'a pas d'intérêt qu'on vous fasse un tutoriel ;) )
Regardez également du côté de la documentation officielle du site et plus précisément http://tinyows.org/trac/wiki/ConfigFile pour comprendre certains paramètres.
<tinyows online_resource="http://127.0.0.1/cgi-bin/tinyows"
schema_dir="/usr/local/tinyows/schema/">
<pg host="127.0.0.1" user="postgres" password="atlas" dbname="tinyows_demo" port="5432"/>
<metadata name="TinyOWS Server"
title="TinyOWS Server - Demo Service" />
<contact name="TinyOWS Server"
site="http://www.tinyows.org/"
email="tinyows-users [at] lists [dot] maptools [dot] org" />
<layer retrievable="1"
writable="1"
prefix="tows"
server="localhost"
name="world"
title="World Administrative Boundaries" />
<layer retrievable="1"
writable="1"
prefix="tows"
server="localhost"
name="france"
title="French Administrative Sub Boundaries (IGN - GeoFLA Departements)" />
</tinyows>cd /usr/lib/cgi-bin sudo ./tinyows --check
cd ~ wget http://openlayers.org/download/OpenLayers-2.9.tar.gz tar xvzf OpenLayers-2.9.tar.gz
Créer et changer les droits du répertoire qui recevra les fichiers visibles sur le serveur :
sudo mkdir /var/www/tinyows sudo chmod -R 777 /var/www/tinyows
mv OpenLayers-2.9 /var/www/tinyows/Openlayers-2.9 cd /var/www/tinyows/ cp Openlayers-2.9/examples/proxy.cgi /usr/lib/cgi-bin/ nano /usr/lib/cgi-bin/proxy.cgi
Rajouter "localhost" et "127.0.0.1" ( pour limiter le risque d'erreur entre l'alias et l'IP) comme ci-dessous
allowedHosts = ['127.0.0.1','localhost', 'www.openlayers.org', 'openlayers.org', ... ]
Faire ensuite :
nano Openlayers-2.9/examples/tinyows.html
et coller :
<html>
<head>
<link rel="stylesheet" href="../theme/default/style.css" type="text/css" />
<link rel="stylesheet" href="style.css" type="text/css" />
<title>WFS Basic with TinyOWS and GeoJSON</title>
<script src="../lib/OpenLayers.js"></script>
<script src="tinyows.js"></script>
</head>
<body onload="init()">
<h1 id="title">WFS Basic example with TinyOWS, using GeoJSON.</h1>
<div id="tags"></div>
<p id="shortdesc">
Shows the use of the WFS Basic with TinyOWS Server, using GeoJSON.
</p>
<div id="map" class="smallmap"></div>
<div id="docs">
<p>
WMS base layer is GeoSignal one.<br />
Vector datas are GeoFLA Departements (IGN).<br />
Size of datas are about 800 Ko (either Shapefile or GeoJSON).<br />
Right now it's the top limit that OpenLayers can decently handle.<br />
</p>
<p>
See the <a href="tinyows.js" target="_blank">tinyows.js
source</a> to see how this is done.
</p>
</div>
</body>
</html>Créer un fichier javascript avec :
nano Openlayers-2.9/examples/tinyows.js
et insérer :
var map; OpenLayers.ProxyHost = "/cgi-bin/proxy.cgi?url="; function init() { map = new OpenLayers.Map('map', { projection: new OpenLayers.Projection("EPSG:27582"), units: "m", maxResolution: "auto", maxExtent: new OpenLayers.Bounds(5000,1620000,1198000,2678000), controls: [ new OpenLayers.Control.PanZoom() ] }); var base = new OpenLayers.Layer.WMS("OpenLayers WMS", "http://www.geosignal.org/cgi-bin/wmsmap?", {layers: "Regions,Departements", projection:"EPSG:27582", units: "m", maxResolution: "auto", maxExtent: new OpenLayers.Bounds(5000,1620000,1198000,2678000), sld: "http://www.tinyows.org/tracdocs/demo/OpenLayers-2.9/examples/sld.xml" } ); map.addLayer(base); var wfs = new OpenLayers.Layer.Vector("Countries", { strategies: [new OpenLayers.Strategy.BBOX()], projection:"EPSG:27582", protocol: new OpenLayers.Protocol.WFS({ url: "http://localhost/cgi-bin/tinyows?", featureType: "france", featureNS: "http://localhost/", outputFormat: "application/json", readFormat: new OpenLayers.Format.GeoJSON() }) }); map.addLayer(wfs); map.zoomToExtent(new OpenLayers.Bounds(5000,1620000,1198000,2678000)); }
Tester que cela fonctionne en allant sur http://localhost/tinyows/Openlayers-2.9/examples/tinyows.html

Jusqu'à maintenant, nous parlions d'utiliser TinyOWS comme serveur WFS-T, pour le moment, nous nous sommes contentés de faire la démonstration de TinyOWS comme serveur WFS, nous allons donc passer à l'étape suivante.
Utiliser TinyOWS avec du WFS-T
Comme précédemment, nous allons créer une base de données :
createdb -h localhost -p 5432 -U postgres -W tinyows createlang -h localhost -p 5432 -U postgres -W plpgsql tinyows psql -h localhost -p 5432 -U postgres -W -d tinyows < `pg_config --sharedir`/contrib/postgis-1.5/postgis.sql psql -h localhost -p 5432 -U postgres -W -d tinyows < `pg_config --sharedir`/contrib/postgis-1.5/spatial_ref_sys.sql
Nous allons charger les fichiers de démonstration :
wget ftp://ftp.intevation.de/freegis/frida/frida-1.0.1-shp.tar.gz tar xvzf frida-1.0.1-shp.tar.gz cd frida-1.0.1-shp shp2pgsql -s 31467 -I gruenflaechen.shp frida | psql -h localhost -p 5432 -U postgres -d tinyows
Une erreur se produit. Le cas n'est rencontré que maintenant car via le "make install-demo" du précédent cas, le chemin vers shp2pgsql était renseigné dans le script appelé par make install-demo.
Vous pouvez tenter de taper shp2pgsql, vous aurez une erreur. Il faut si l'on veut accéder à shp2pgsql dans la ligne de commande, on doit rajouter le chemin du binaire shp2pgsql dans la variable d'environnement PATH.
Pour en savoir plus sur les variables d'environnement, allez sur http://www.commentcamarche.net/faq/3585-bash-la-variable-d-environnement... .
Faites :
export PATH=$PATH:/usr/lib/postgresql/8.4/bin
puis tester avec :
shp2pgsql
C'est bon !!! Vous pouvez relancer l'import du shp dans PostgreSQL :
shp2pgsql -s 31467 -I gruenflaechen.shp frida | psql -h localhost -p 5432 -U postgres -d tinyows
Sauvegarder le xml de la première partie puis créer le nouveau fichier avec :
sudo cp /usr/local/tinyows/config.xml /usr/local/tinyows/config_install_demo.xml sudo vim /usr/local/tinyows/config.xml
Puis remplacer le contenu par le code ci-dessous :
<tinyows online_resource="http://127.0.0.1/cgi-bin/tinyows"
schema_dir="/usr/local/tinyows/schema/">
<pg host="127.0.0.1" user="postgres" password="atlas" dbname="tinyows" port="5432"/>
<metadata name="TinyOWS Server"
title="TinyOWS Server - WFS-T Frida Service" />
<contact name="TinyOWS Server"
site="http://www.tinyows.org/"
email="tinyows-users [at] lists [dot] maptools [dot] org" />
<layer retrievable="1"
writable="1"
prefix="frida"
server="localhost"
name="frida"
title="Frida Parks" />
</tinyows>Ne pas oublier d'enregistrer ;)
Comme pour le premier cas, on va vérifier la configuration en faisant :
cd /usr/lib/cgi-bin
puis :
./tinyows --checkqui renvoie :
Config File: OK PG Connection: OK Available layers: - public.frida -> 31467 RW
Après cette étape, nous allons admettre que vous êtes parti du début du tutoriel et ne pas réexpliquer comment récupérer Openlayers et configurer le proxy.cgi.
Nous allons donc créer le fichier html "qui va bien" avec son fichier javascript associé.
Faire pour cela :
cd /var/www/tinyows/
puis :
vim Openlayers-2.9/examples/tinyows_wfs-t.html
Coller :
<html>
<head>
<link rel="stylesheet" href="../theme/default/style.css" type="text/css" />
<link rel="stylesheet" href="style.css" type="text/css" />
<script src="../lib/OpenLayers.js"></script>
<style>
#map {
width: 800px;
height: 500px;
float: left;
border: 1px solid #ccc;
}
#message {
position: relative;
left: 5px;
}
#docs {
float: left;
}
.customEditingToolbar {
float: right;
right: 0px;
height: 30px;
width: 200px;
}
.customEditingToolbar div {
float: right;
margin: 5px;
width: 24px;
height: 24px;
}
.olControlNavigationItemActive {
background-image: url("../theme/default/img/editing_tool_bar.png");
background-repeat: no-repeat;
background-position: -103px -23px;
}
.olControlNavigationItemInactive {
background-image: url("../theme/default/img/editing_tool_bar.png");
background-repeat: no-repeat;
background-position: -103px -0px;
}
.olControlDrawFeaturePolygonItemInactive {
background-image: url("../theme/default/img/editing_tool_bar.png");
background-repeat: no-repeat;
background-position: -26px 0px;
}
.olControlDrawFeaturePolygonItemActive {
background-image: url("../theme/default/img/editing_tool_bar.png");
background-repeat: no-repeat;
background-position: -26px -23px ;
}
.olControlModifyFeatureItemActive {
background-image: url(../theme/default/img/move_feature_on.png);
background-repeat: no-repeat;
background-position: 0px 1px;
}
.olControlModifyFeatureItemInactive {
background-image: url(../theme/default/img/move_feature_off.png);
background-repeat: no-repeat;
background-position: 0px 1px;
}
.olControlDeleteFeatureItemActive {
background-image: url(../theme/default/img/remove_point_on.png);
background-repeat: no-repeat;
background-position: 0px 1px;
}
.olControlDeleteFeatureItemInactive {
background-image: url(../theme/default/img/remove_point_off.png);
background-repeat: no-repeat;
background-position: 0px 1px;
}
</style>
<script src="tinyows_wfs-t.js"></script>
</head>
<body onload="init()">
<h1 id="title">WFS Transaction Example, (TinyOWS ans OpenLayers)</h1>
<div id="tags"></div>
<p id="shortdesc">
Shows the use of the WFS Transactions (WFS-T).
Parks of Osnabruck (Frida).
<br />
Base layers is OpenStreetMap from Omniscale WMS Server.
</p>
<div id="map"></div>
<div id="message"></div>
<div id="docs">
<p>
The WFS protocol allows for creation of new features and
reading, updating, or deleting of existing features.
</p>
<p>
Use the tools to create, modify, and delete (in order from left
to right) features. Use the save tool (picture of a disk) to
save your changes. Use the navigation tool (hand) to stop
editing and use the mouse for map navigation.
</p>
<p>
See the <a href="tinyows_wfs-t.js" target="_blank">
wfs-protocol-transactions.js source</a> to see how this is done.
</p>
</div>
</body>
</html>Ensuite créer un fichier avec :
vim Openlayers-2.9/examples/tinyows_wfs-t.js
et contenant :
var map, wfs; OpenLayers.ProxyHost = "/cgi-bin/proxy.cgi?url="; var DeleteFeature = OpenLayers.Class(OpenLayers.Control, { initialize: function(layer, options) { OpenLayers.Control.prototype.initialize.apply(this, [options]); this.layer = layer; this.handler = new OpenLayers.Handler.Feature( this, layer, {click: this.clickFeature} ); }, clickFeature: function(feature) { // if feature doesn't have a fid, destroy it if(feature.fid == undefined) { this.layer.destroyFeatures([feature]); } else { feature.state = OpenLayers.State.DELETE; this.layer.events.triggerEvent("afterfeaturemodified", {feature: feature}); feature.renderIntent = "select"; this.layer.drawFeature(feature); } }, setMap: function(map) { this.handler.setMap(map); OpenLayers.Control.prototype.setMap.apply(this, arguments); }, CLASS_NAME: "OpenLayers.Control.DeleteFeature" }); function showMsg(szMessage) { document.getElementById("message").innerHTML = szMessage; setTimeout( "document.getElementById('message').innerHTML = ''",2000); } function showSuccessMsg(){ showMsg("Transaction successfully completed"); }; function showFailureMsg(){ showMsg("An error occured while operating the transaction"); }; function init() { map = new OpenLayers.Map('map', { projection: new OpenLayers.Projection("EPSG:31467"), units: "m", maxResolution: "auto", maxExtent: new OpenLayers.Bounds(3427000,5788000,3444000,5800000), controls: [ new OpenLayers.Control.PanZoom() ] }); var osm = new OpenLayers.Layer.WMS( "OSM by Omniscale WMS", "http://osm.omniscale.net/proxy/service", {layers: 'osm', format: 'image/jpeg'}, {projection:"EPSG:31467", units: "m", maxResolution: "auto", maxExtent: new OpenLayers.Bounds(3427000,5788000,3444000,5800000)} ); var saveStrategy = new OpenLayers.Strategy.Save(); saveStrategy.events.register("success", '', showSuccessMsg); saveStrategy.events.register("failure", '', showFailureMsg); wfs = new OpenLayers.Layer.Vector("Editable Features", { strategies: [new OpenLayers.Strategy.BBOX(), saveStrategy], projection: new OpenLayers.Projection("EPSG:31467"), protocol: new OpenLayers.Protocol.WFS({ version: "1.1.0", srsName: "EPSG:31467", url: "http://www.tinyows.org/cgi-bin/tinyows", featureNS : "http://www.tinyows.org/", featureType: "frida", geometryName: "the_geom", schema: "http://www.tinyows.org/cgi-bin/tinyows?service=wfs&request=DescribeFeatureType&version=1.1.0&typename=tows:frida" }) }); map.addLayers([osm, wfs]); var panel = new OpenLayers.Control.Panel( {'displayClass': 'customEditingToolbar'} ); var navigate = new OpenLayers.Control.Navigation({ title: "Pan Map" }); var draw = new OpenLayers.Control.DrawFeature( wfs, OpenLayers.Handler.Polygon, { title: "Draw Feature", displayClass: "olControlDrawFeaturePolygon", multi: true } ); var edit = new OpenLayers.Control.ModifyFeature(wfs, { title: "Modify Feature", displayClass: "olControlModifyFeature" }); var del = new DeleteFeature(wfs, {title: "Delete Feature"}); var save = new OpenLayers.Control.Button({ title: "Save Changes", trigger: function() { if(edit.feature) { edit.selectControl.unselectAll(); } saveStrategy.save(); }, displayClass: "olControlSaveFeatures" }); panel.addControls([navigate, save, del, edit, draw]); panel.defaultControl = navigate; map.addControl(panel); map.zoomToMaxExtent(); }
Vous pouvez tester sur votre serveur en allant http://localhost/tinyows/Openlayers-2.9/examples/tinyows_wfs-t.html .
Vous avez vu comment configurer TinyOWS sur votre propre serveur (à l'exception d'un fichier de style) , à vous de jouer maintenant.
Pour vous motiver, voilà ce que peut donner une version avancée d'usage de TinyOWS :

Thomas
Crédits
PostgreSQL/PostGIS
- http://www.postgresonline.com/periodical.php?i_id=17#item-147
- http://biodivertido.blogspot.com/2009/10/install-postgresql-84-and-postg...
- http://postgis.refractions.net/download/postgis-1.5.1.pdf p18-19
- http://doc.ubuntu-fr.org/postgresql
L'installation est minimale : nous n'avons pas, par exemple, installé les paquets pour générer la documentation
Merci aux différentes personnes ayant alimentées les sources citées (Javier de la Torre, Regina Obe, Kevin Neufeld ainsi que Yannick, Sparky et Elemmire )
TinyOWS
Sources principales
Page principale du projet TinyOWS
Mailing lists utilisateurs et développeurs
TinyOWS 0.9.0 présenté lors de l’OsGIS UK 2010
Merci aux contributeurs/développeurs du projet
Oslandia
- Olivier Courtin (développeur principal)
DM Solutions
- Assefa Yewondwossen (integration windows 32(MS4W))
MapGears
- Normand Savard (correction de bugs)
- Alexandre Dube (Integration dans OpenLayers)
Intevation
- Stephan Holl (Paquets Debian)
Camptocamp
- Barbara Philippot (développeuse initiale)
