S'abonner au Flux RSS

jeudi, décembre 15 2011

Déployer Geoserver 2.1.2 avec Tomcat7 sur Debian Squeeze

Le but de ce mini tutoriel est de mettre en oeuvre la dernière version stable de GeoServer sur une Debian/Squeeze avec Tomcat7. C'est aussi une façon pour moi de conserver la méthode, car n'étant pas de culture javaiste c'est toujours difficile de se replonger dans la logique Tomcat et ses multiples emplacements de fichiers de conf.

Tomcat7 n'étant pas disponible dans Squeeze (il l'est dans wheezy) nous allons utiliser un backport disponible sur mon dépôt non-officiel, voir ce billet pour la mise en oeuvre du dépôt. Une fois le dépôt configuré et apt-get udpate effectué comme il se doit on va installer les 2 paquets suivants ; tomcat7 pour la base et tomcat7-admin pour disposer de la webapp manager bien pratique.

apt-get install tomcat7 tomcat7-admin

Après l'installation des paquets le serveur se lance automatiquement et vous devez obtenir le classique It works ! à l'adresse http://127.0.0.1:8080/

Pour le déploiement de GeoServer nous allons utiliser le manager interne de Tomcat, il est nécessaire pour cela de définir un utilisateur avec les bonnes permissions en éditant le fichier /etc/tomcat7/tomcat-users.xml. Nous allons y ajouter un utilisateur foobar avec le mot de passe barfoo, cela va consister à ajouter les 2 lignes suivantes :

<role rolename="manager-gui"/>
<user username="foobar" password="barfoo" roles="manager-gui"/>

Le fichier contient des exemples qui aident à suivre la bonne syntaxe, ce qui est important ici est le rôle manager-gui.

La configuration par défaut de tomcat limite la taille des fichiers web archive à 50Mo, hors la taille du .war de geoserver dépasse cette limite, il faut par conséquent l'augmenter. Il faut pour cela éditer le fichier /usr/share/tomcat7-admin/manager/WEB-INF/web.xml. Recherchez les balise <max-file-size> et <max-request-size>, puis remplacez leur valeur par 78643200 soit 75MB de limite au lieu des 50MB par défaut.

La dernière version de GeoServer stable est la 2.1.2 qui est disponible en ligne à l'adresse http://geoserver.org/display/GEOS/Stable, il convient de télécharger la version Web archive. Vous obtiendrez un fichier geoserver-2.1.2-war.zip qu'il conviendra de décompresser.

Maintenant que nous avons installé et configuré Tomcat, téléchargé le .war de GeoServerger, nous pouvons ouvrir le manager à l'adresse http://127.0.0.1:8080/manager/html et y rechercher le formulaire Déployer comme le montre l'image suivante.

tomcat-war.png

Indiquez l'emplacement du fichier .war dans le champs nommé Choisir le fichier WAR à téléverser et cliquez sur Déployer, si tout se passe bien ça y est GeoServer est installé.

Il reste à tester l'url http://127.0.0.1:8080/geoserver/web/ et hop Geoserver 2.1.2 sous Tomcat7.

De base GeoServer contient un ensemble de données de test, regardez le lien à gauche Prévisualisation de la couche et appréciez la richesse de l'outil.

Pour se connecter en tant qu'admin sur GeoServer utilisez les login/pass par défaut admin/geoserver, ceux-ci sont définis dans le fichier /var/lib/tomcat7/webapps/geoserver/data/security/users.properties.

Il est à noter que cette méthode bien que valable dans le principe pour Tomcat6 certain emplacement de fichiers sont différents dans la pratique.

Backport Tomcat 6 et 7 pour squeeze

J'ai mis en ligne hier soir les backports pour squeeze des versions de Tomcat suivante :

  • tomcat7 7.0.23
  • tomcat6 6.0.33

Disponible sur mon dépôt personnel.

Je testerai prochainement la dernière version de Geoserver sur Tomcat7.

vendredi, décembre 9 2011

Registre parcellaire graphique en OpenData et BadData

Nombreux sont ceux qui comme moi se sont réjouit de l'ouverture de la Plateforme française d'ouverture des données publiques ce lundi avec ces 352.000 jeux de données. Sa naissance a même été saluée par data publica qui en a fait un inventaire exhaustif, il reste maintenant à faire une analyse qualitative de ceux-ci.

J'ai pour ma part essayé le jeu de données du registre parcellaire graphique qui recense plus de 6 millions de parcelles déclarées par les exploitants agricoles avec la culture majoritaire de l'année à l'échelle de la France. On trouve sur data.gouv.fr les données pour l'année 2010 au format shapefile directement exploitable par les outils SIG. L'utilisation de ce format est a saluer car il facilite de fait la réutilisation des données et surtout leur visualisation sans pré-traitement.

Jusque là tout va bien, le hic c'est que les shapefiles contiennent des erreurs, chaque parcelle (îlot) est représentée par un polygone regoupés dans des shapefiles par département, mais une fois ces shapefiles intégrés à une base postgis les outils de rendus (geoserver utilisé ici) ne peuvent effectuer leur travail à cause de géométries invalides (Ring Self-intersection, Points of LinearRing do not form a closed linestring, ...), ce qui rend les données un peu moins attractives de prime abord.

Après une analyse détaillées des 92 fichiers représentant les données de l'hexagone on note une moyenne de 0.26% de géométries invalides par fichier avec un maximum de 0.94% sur le département de la Mayenne, pour au total 0.29% d'erreur. Ces chiffres paraissent ridiculement petit mais lors du rendu par tuilage un polygone défectueux en plein milieu rend la tuile vide, à l'échelle de la France on obtient rien sur la carte. Après suppression des erreurs de la base on arrive tout de même à faire un rendu comme celui-ci, sympa toutes ces couleurs ;-) Maintenant vous savez ce qu'il y a eu dans le champs à coté de chez vous si vous avez la chance d'habiter à la campagne.

Le fichier de statistiques complet est attaché au billet

NB : le RPG est disponible sur le geoportail pour les années 2007 à 2009, pour pas aussi sur data.gouv.fr, on pourrait mesurer ainsi la perte de surface agricole année par année.

mardi, décembre 6 2011

Bilan des backports pour Openstreetmap

L'avantage indéniable de Debian sur d'autres distributions est à mes yeux sa stabilité exemplaire, cela entraine malheureusement d'avoir régulièrement des versions un peu obsolète des logiciels empaquetés. Il est possible de contourner cela en créant des backports de la version de développement de Debian (Wheezy) vers la version stable (Squeeze). J'ai réalisé les backports des principaux outils utilisés dans l'univers OpenStreetMap, ceux-ci sont diponibles sur mon dépôt privé (voir ce billet pour la mise en place du dépôt sur votre machine.

A ce jour les outils ci-dessous sont disponibles dans ces versions :

  • dans-gdal-scripts 0.18
  • gdal 1.7.3
  • mapnik 2.0.0
  • osm2pgsql 0.70.5
  • openlayers 2.11
  • gpsprune 13.1
  • viking 1.2.1

Les paquets n'ont pas été poussés dans le dépôt des backports officiels car ils représentent une utilisation trop faible au vu de la communauté Debian, un paquet comme osm2pgql est utlilisé à ce jour par moins de 300 personnes d'après popcon quand les outils apache2 le sont par plus de 60000 (popcon apache2-utils).

jeudi, décembre 1 2011

Backport gdal 1.7.3 et libdap 3.11.1 pour squeeze

Derniers backports pour squeeze de la journée, la version 1.7.3 de gdal et la version 3.11.1 de libdap. Ces paquets sont disponibles sur mon dépôt personnel http://rodolphe.quiedeville.org/debian/.

Adresse du dépôt

deb http://rodolphe.quiedeville.org/debian/ squeeze-backports main

Cette version inclut gdaldem pour la manipulation des fichiers de modélisation de terrain dans le paquet gdal-bin.

mercredi, novembre 30 2011

Section squeeze backports ouverte avec mapnik2

Les backports de mapnik2 publiés hier sous forme de .deb sont désormais disponibles dans mon dépôt personnel, pour les utiliser depuis cette source il vous suffit d'ajouter cette ligne dans votre sources.list apt :

deb http://rodolphe.quiedeville.org/debian/ squeeze-backports main

Pour supprimer l'avertissement de sécurité sur les paquets non officiels, vous pouvez récupérer ma clef GPG et l'ajouter au trousseau d'apt avec les commandes suivantes.

gpg --keyserver hkp://pgp.mit.edu --recv-keys 72F1F20D
gpg --export 72F1F20D | apt-key add -

mardi, novembre 29 2011

Installer mapnik2 sur Debian Squeeze

La version de mapnik disponible dans squeeze est actuellement la 0.7.1 alors que la version 2.0 de Mapnik est déjà disponible pour Wheezy, j'ai backporté les paquets nécessaires pour faire du rendu avec mpanik2 pour la version squeeze de debian. Les .deb sont disponibles au téléchargement sur http://osm.fsffrance.org/debian-backports/

Un README détaille les étapes et les dépendances pour installer Mapnik2 sur votre Debian Squeeze.

jeudi, novembre 17 2011

Remplir ses caches sur plusieurs niveaux de façon smart

J'utilise tilecache pour générer des tuiles à la volée sur des rendus plus ou moins complexe, et pour réduire un peu la charge du serveur de rendu j'ai mis en place des caches (avec varnish) au devant de celui-ci. L'architecture de cache repose sur 2 niveaux, un cache en frontal direct non public, et 3 caches devant celui-ci qui sont appelés pas les clients OpenLayers (ou autres) et ouvert sur le net. L'intérêt des 3 caches est de bénéficier de l'astuce bien connu des a.tile.., b.tile.., c.tile bien connu des utilisateurs d'OpenStreetMap. Avec tilecache est fournit tilecache_seed qui permet de remplir les cache mais celui-ci ne remplissait pas entièrement mon besoin. En effet il me faut remplir les 3 caches publics, avec l'ensemble des layers rendus et ceci sans mettre à genoux le serveur de rendu. Idéalement l'opération se ferait en une passe sans avoir à ancer plusieurs commandes à la suite. Pour cela j'ai écrit un script perl qui rassemble toutes ces fonctionnalités plus quelques autres.

Le script permet de spécifier autant de serveur à remplir que souhaité, un ensemble de cache à générer, une bbox sur la zone voulue, et un couple de zoom min et max. Lors du lancement le script va extraire un premier serveur du groupe de serveurs indiqués, il va ensuite boucler pour générer tous les layers sur ce serveur sur la première tuile du zoom min, de cette façon le cache en frontal de la machine de rendu va se remplir. Ensuite il va appeler les mêmes tuiles sur les autres serveurs, à cet instant nous avons donc dans tous les caches, tous les layers dans l'espace d'une tuile. Le script va ensuite boucler de même pour toutes les autres tuiles en descendant dans les niveau de zoom après avoir complété le précédent.

Des problèmes fréquemement rencontrés avec des processus comme les remplissage de cache, la saturation du backend, la rupture d'un élément obligent à tout reprendre ou stopper le processus. J'ai essayé d'être le plus smart possible et de faire en sorte que le script aille le plus loin possible en générant le moins d'erreur, les mécanismes mis en oeuvre sont décrits ci-dessous :

  • suppression automatique d'un serveur défaillant, en cours de remplissage un des serveurs caches fait défaut, au bout de 10 réponses consécutives en erreur le serveur est ignoré et le remplissage continu sur les autres normalement
  • réduction de la sollicitation du backend, en cours de remplissage si le serveur source surcharge, à chaquer erreur 503 reçues le remplissage ralentit, le temps d'attente entre tuiles est augmenté afin de réduire la charge endurée. De même au bout d'un nombre de requête sans erreur le temps d'attente est réduit pour éviter un de traitement trop long. Si le temps d'attente dépasse un seuil le processus prend fin.
  • une option simulate permet de se rendre compte avant de le faire que l'on va faire plus de 3 millions de requêtes HTTP, des fois cela peut-être long :-)

Bien évidemment le script peut-être utlisé au plus simple avec un layer et un seul serveur de cache en direct, si vous n'aimez pas tilecache_seed.

Le script est nommé fill-cache.pl (original) et publié sur Gitorious dans le projet osmtools

Comme tout script/programme celui-ci n'est évidemement pas finit et peut être amélioré, alors comme il est libre, profitez-en, contribuez ! Si vous ne codez pas et avez l'idée de génie, un petit commentaire sur ce billet pourrait voir vos voeux se réaliser.

mercredi, juin 22 2011

Nouvelles cartes des éoliennes

En avril 2010 j'ai réalisé une première carte des éoliennes en france, cette carte utilise un fichier de données GML comme source de données. Afin de pouvoir réaliser une carte mondiale des éoliennes en particulier et des sources d'énergie en général j'ai mis en place une instance GeoServer avec une base de données Postgis comme source.

Ceci m'a permis de réaliser cette nouvelle carte de couverture mondiale qui recense aujourd'hui 40 781 éoliennes au plan mondial.

Cette carte sera mise à jour une fois par semaine dans un premier temps puis quotidiennement si la puissance machine le permet.

mardi, mai 31 2011

Plugins munin pour GeoWebCache

Ayant récemment déployé des serveurs GeoWebCache j'ai voulu en suivre les métriques d'utilisation.Mais après une recherche sur le web je n'ai pas trouvé de plugins existants pour munin ; ce qui m'a amené à en écrire pour les données suivantes :

  • geowebcache_bandwidth
  • geowebcache_blankitems
  • geowebcache_ratio
  • geowebcache_volume

Ces plugins sont publiés sur mon compte Gitorious sous licence GPLv2 ; ils sont également disponible dans l'archive attachées à ce billet.

Si vous voyez d'autres mesures à monitorer et/ou des améliorations à faire aux plugins existants, laissez un commentaire sur ce billet.

- page 1 de 7