<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>neogeo &#187; Python</title>
	<atom:link href="http://www.neogeo-online.net/blog/archives/tag/python/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.neogeo-online.net</link>
	<description>SIG, OpenSource et Web 2.0</description>
	<lastBuildDate>Thu, 22 Dec 2011 17:53:05 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>pycsw</title>
		<link>http://www.neogeo-online.net/blog/archives/1314/</link>
		<comments>http://www.neogeo-online.net/blog/archives/1314/#comments</comments>
		<pubDate>Fri, 06 May 2011 15:03:16 +0000</pubDate>
		<dc:creator>Benjamin Chartier</dc:creator>
				<category><![CDATA[Catalogage]]></category>
		<category><![CDATA[OGC, ISO & INSPIRE]]></category>
		<category><![CDATA[Web mapping]]></category>
		<category><![CDATA[CSW]]></category>
		<category><![CDATA[OGC]]></category>
		<category><![CDATA[OWSLib]]></category>
		<category><![CDATA[pycsw]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://www.neogeo-online.net/?p=1314</guid>
		<description><![CDATA[Un nouveau venu dans le monde du catalogage&#160;: pycsw (cf. ici et là). Comme son nom l&#8217;indique, c&#8217;est écrit en Python et ça implémente le standard CSW (le standard de service web de catalogage de l&#8217;OGC reposant sur le protocole HTTP). Il s&#8217;agit ici d&#8217;une implémentation d&#8217;un serveur qui reste assez brute. Pas d&#8217;IHM. Vous [...]]]></description>
			<content:encoded><![CDATA[<p>Un nouveau venu dans le monde du catalogage&nbsp;: pycsw (cf. <a href="http://pycsw.org/">ici</a> et <a href="http://lists.osgeo.org/pipermail/discuss/2011-April/008817.html">là</a>). Comme son nom l&#8217;indique, c&#8217;est écrit en Python et ça implémente le standard CSW (le standard de service web de catalogage de l&#8217;OGC reposant sur le protocole HTTP). Il s&#8217;agit ici d&#8217;une implémentation d&#8217;un serveur qui reste assez brute. Pas d&#8217;IHM. Vous pouvez vous faire une idée des requêtes/réponses gérées par ce catalogue en jetant un œil à la démonstration ligne&nbsp;: <a href="http://aiolos.survey.ntua.gr/pycsw/tester/index.html">pycsw Tester</a>.</p>
<p>Si vous cherchez une brique logicielle côté client pour communiquer avec un serveur CSW et si vous aimez Python, vous pouvez essayer <a href="http://trac.gispython.org/lab">OWSLib</a> (cf. <a href="http://gispython.org/owslib/docs/en/trunk/#csw">ici</a>).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.neogeo-online.net/blog/archives/1314/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>GeoDjango, LE framework cartographique.</title>
		<link>http://www.neogeo-online.net/blog/archives/139/</link>
		<comments>http://www.neogeo-online.net/blog/archives/139/#comments</comments>
		<pubDate>Fri, 09 Jan 2009 22:48:13 +0000</pubDate>
		<dc:creator>Guillaume</dc:creator>
				<category><![CDATA[GeoHacks]]></category>
		<category><![CDATA[Web mapping]]></category>
		<category><![CDATA[GeoDjango]]></category>
		<category><![CDATA[GeoJSON]]></category>
		<category><![CDATA[OpenLayers]]></category>
		<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[PostGIS]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Rest]]></category>

		<guid isPermaLink="false">http://www.neogeo-online.net/?p=139</guid>
		<description><![CDATA[J&#8217;en ai parlé dans le post précédent, mais pas de manière suffisamment détaillée pour satisfaire les curieux qui m&#8217;ont rappelé à l&#8217;ordre et soumis des questions diverses. Donc je vais essayer de me rattraper&#8230; Qu&#8217;est-ce que GeoDjango ? C&#8217;est une extension de Django (ça existe même en français) destinée à gérer les données géographique. OK, [...]]]></description>
			<content:encoded><![CDATA[<p>J&#8217;en ai parlé dans le post précédent, mais pas de manière suffisamment détaillée pour satisfaire les curieux qui m&#8217;ont rappelé à l&#8217;ordre et soumis des questions diverses. Donc je vais essayer de me rattraper&#8230;</p>
<p><strong>Qu&#8217;est-ce que GeoDjango ? </strong></p>
<p>C&#8217;est une extension de <a href="http://www.djangoproject.com/" target="_blank">Django</a> (ça existe même en <a href="http://www.django-fr.org/" target="_blank">français</a>) destinée à gérer les données géographique. OK, mais on n&#8217;avance pas là. Qu&#8217;est-ce que Django ? Un framework web en Python sous licence OpenSource BSD qui permet de structurer un site web au travers d&#8217;une structure Modele &#8211; Vue &#8211; Template très rapidement. Les modèles sont les tables de votre BD, mais en mode objet; les vues sont les actions et les manipulations diverses que vous voulez effectuer, et les templates sont des modèles de mise en page HTML destinés à présenter les résultats des vues. De plus, Django génère automatiquement un module d&#8217;administration des Modèles (des tables donc), qui permet facilement de <a href="http://fr.wikipedia.org/wiki/CRUD" target="_blank">CRUDer </a>(lire, retrouver, mettre à jour, supprimer) le contenu de votre SI. Un peu comme PhpMyAdmin, mais en mieux !</p>
<p>A ceci, GeoDjango ajoute donc la dimension spatiale, tout comme PostGIS ajoute la dimension spatiale à PostgreSQL. Cela peut fonctionner avec PostgreSQL, MySQL ou Oracle, mais pour ces deux derniers toutes les fonctions ne sont pas encore intégrées (voir la <a href="http://geodjango.org/docs/db-api.html#compatibility-table" target="_blank">table de compatibilité</a>). Vous obtenez alors des tables spatiales référencées en tant que modèles, et manipuler les objets géométriques (intersection, union, extent, aire&#8230;). Ceci grâce au portage dans le code de GeoDjango des librairies bien connues GDAL et GEOS.</p>
<p>Depuis août 2008, GeoDjango fait partie intégrante de Django, tout en gardant sa propre doc et son <a title="Le Wiki de GeoDjango" href="http://code.djangoproject.com/wiki/GeoDjango" target="_blank">wiki</a>.</p>
<p><strong>KiCéKiLaFé ? </strong></p>
<p>Justin Bronn, qui va bientôt passer ses examens pour devenir District Attorney (procureur&#8230;). A l&#8217;occasion de la mise en place de son application <a href="http://houstoncrimemaps.com/" target="_blank">Houston Crime Maps</a>, il a choisi Django et y a progressivement intégré la dimension spatiale dont il avait besoin.</p>
<p><strong>Et on peut voir ça où ? </strong></p>
<p>Une petite application de démonstration est accessible <a href="http://geoadmin.dbsgeo.com/" target="_blank">ici</a>. Elle a été construite par Dane Springmeyer, Josh Livni et  Christopher Schmidt. Vous pouvez utiliser le login/passwd geo/geo pour vous connecter au module d&#8217;administration. Surprise, les données géographiques sont éditables grâce à l&#8217;intégration d&#8217;<a href="http://www.openlayers.org/" target="_blank">OpenLayers</a> dans la page et de votre objet en mode vectoriel !</p>
<p>Sinon la<a href="http://geodjango.org/presentations/GeoDjango%20-%20Web%20Applications%20for%20Geographers%20with%20Deadlines%20(TNRIS%20Forum%20-%20Oct.%2029%2c%202008).pdf" target="_blank"> présentation faite par Justin Bronn au Forum Texas GIS en octobre 2008</a> donne aussi quelques liens.</p>
<p><strong>Ok, c&#8217;est beau, mais il y a de la doc ?</strong></p>
<p>Oui, aussi. D&#8217;abord un tutoriel : <a href="http://geodjango.org/docs/tutorial.html#geographic-data" target="_blank">http://geodjango.org/docs/tutorial.html#geographic-data</a></p>
<p>Un kit d&#8217;installation : <a href="http://geodjango.org/docs/install.html" target="_blank">http://geodjango.org/docs/install.html </a></p>
<p><a href="http://geodjango.org/docs/model-api.html" target="_blank">Les spécificités des modèles GeoDjango</a> (qui surclassent les modèles standard Django)</p>
<p>La <a href="http://geodjango.org/docs/db-api.html" target="_blank">DB-API</a>, qui intègre les opérateurs spatiaux.</p>
<p>et <a href="http://geodjango.org/docs/" target="_blank">plein d&#8217;autres trucs (sur GDAL, GEOS&#8230;)</a></p>
<p>et enfin, un <a href="http://groups.google.com/group/geodjango?lnk=" target="_blank">groupe de discussion</a> !</p>
<p><strong>et sinon, tu en penses quoi ? </strong></p>
<p>Je ne suis pas forcément très objectif, mais je suis un inconditionnel de Django en général et de GeoDjango en particulier. Ce que j&#8217;apprécie le plus est de pouvoir stocker les données géographiques sous PostGIS et de les manipuler ensuite pour les envoyer vers le client en GeoJSON par exemple après les avoir reprojetées ou simplifiées. Le GeoAdmin, et la capacité d&#8217;édition de la donnée qu&#8217;il apporte, même si elle est imparfaite, est aussi très agréable.</p>
<p>La prise en main n&#8217;est pas très difficile. Les tutoriels de Django et GeoDjango sont très accessibles, et la vitesse à laquelle on arrive à des résultats concrets donne vite envie d&#8217;aller plus loin.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.neogeo-online.net/blog/archives/139/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Quelques tuiles pour l&#039;hiver</title>
		<link>http://www.neogeo-online.net/blog/archives/114/</link>
		<comments>http://www.neogeo-online.net/blog/archives/114/#comments</comments>
		<pubDate>Mon, 18 Aug 2008 21:47:36 +0000</pubDate>
		<dc:creator>Guillaume</dc:creator>
				<category><![CDATA[GeoHacks]]></category>
		<category><![CDATA[GDAL]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[TileCache]]></category>
		<category><![CDATA[TMS]]></category>

		<guid isPermaLink="false">http://www.neogeo-online.net/?p=114</guid>
		<description><![CDATA[L&#8217;intérêt de tuiler un jeu de données raster, c&#8217;est-à-dire de préparer des imagettes multi-échelles qui seront exploitées nativement dans une application de webmapping n&#8217;est plus à démontrer. Dans le cadre du Google Summer of Code 2008, Klokan Petr Pridal vient d&#8217;ajouter un nouveau module de ce type aux outils GDAL : gdal2tiles. Son intérêt principal [...]]]></description>
			<content:encoded><![CDATA[<p>L&#8217;intérêt de tuiler un jeu de données raster, c&#8217;est-à-dire de préparer des imagettes multi-échelles qui seront exploitées nativement dans une application de webmapping n&#8217;est plus à <a title="Article sur TileCache" href="http://www.neogeo-online.net/blog/archives/84/" target="_self">démontrer</a>. Dans le cadre du <a href="http://code.google.com/soc/2008/" target="_blank">Google Summer of Code 2008</a>, Klokan Petr Pridal vient d&#8217;ajouter un nouveau module de ce type aux outils <a href="http://www.gdal.org/" target="_blank">GDAL</a> : <a href="http://www.klokan.cz/projects/gdal2tiles/" target="_blank">gdal2tiles</a>.</p>
<p>Son intérêt principal est de pouvoir exploiter directement une image existante (ECW, TIFF, MrSid, JPEG, JPEG2000 et PNG) sans passer par le relai d&#8217;un serveur WMS par exemple comme TileCache. Une arborescence est alors créée répondant aux principes du TMS (<a title="Les spécifications du TMS" href="http://wiki.osgeo.org/wiki/Tile_Map_Service_Specification" target="_blank">Tile Mapping Service</a>). Publiée dans un répertoire web, elle est alors directement exploitable par les client TMS tels qu&#8217;OpenLayers.</p>
<p>Mais ce n&#8217;est pas tout. Klokan a également inclus des options spécifiques à la création de tuiles pour GoogleMaps (en projection sphérique Mercator donc) ou GoogleEarth (en WGS 84). Qui plus est, l&#8217;application génère automatiquement, pour peu qu&#8217;on lui demande, des fichiers html pour une mise en ligne immédiate. <a title="Exemple sous GoogleMaps" href="http://www.staremapy.cz/soc/samplemap/googlemaps.html">Simple</a> mais <a title="Exemple sous OpenLayers" href="http://www.staremapy.cz/soc/samplemap/openlayers.html" target="_blank">efficace</a>, même dans <a title="Exemple dans GoogleEarth" href="http://www.maptiler.org/example-usgs-drg-grand-canyon-gtiff/usgs-drg-grand-canyon.kml" target="_blank">GoogleEarth</a> qui exploite les <a title="Doc sur les SuperOverlays" href="http://code.google.com/apis/kml/documentation/kml_21tutorial.html#superoverlays" target="_blank">SuperOverlays</a> déjà disponible avec <a href="http://tilecache.org">TileCache</a> !</p>
<p style="text-align: left;">Mais ce n&#8217;est pas tout ! Klokan a également pensé à ceux d&#8217;entre nous qui ne sont jamais arrivés à faire une simple conversion ogr2ogr de Shapefile en MapInfo&#8230; Il prépare <a title="Le site de MapTiler" href="http://www.maptiler.org/" target="_blank">MapTiler</a>, une interface  graphique pilotant gdal2tiles pour générer ses tuiles en faisant clic clic clic ! Si c&#8217;est pas gentil ça !</p>
<p style="text-align: left;">Pour les autres, voici les quelques options glanées dans la <a title="La doc" href="http://trac.osgeo.org/gdal/wiki/UserDocs/Gdal2Tiles" target="_blank">documentation</a> :</p>
<pre class="wiki">gdal2tiles.py [-title "Title"] [-publishurl http://yourserver/dir/]
              [-nogooglemaps] [-noopenlayers] [-nokml]
              [-googlemapskey KEY] [-forcekml] [-v]
               input_file [output_dir]
-title : le titre pour les metadata xml, les pages web et le KML
-publishurl : URL de publication du répertoire contenant les tuiles
-nogooglemaps : pas de génération de page GoogleMaps
-noopenlayers : pas de génération de page OpenLayers
-nokml : pas de génération de KML
-googlemapskey : votre clé GM pour l'utilisation de la page html GoogleMaps
-forcekml : forcer la génération du KML
-v : mode verbeux.
input_file : fichier à traiter
output_dir : répertoire de création des tuiles</pre>
<p>Il faut bien noter que gdal2tiles.py est un module Python, et que GDAL doit donc avoir été compilé avec l&#8217;option &#8211;enable-python.</p>
<p>Source : gdal-dev mailing list</p>
]]></content:encoded>
			<wfw:commentRss>http://www.neogeo-online.net/blog/archives/114/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Optimisation de TileCache</title>
		<link>http://www.neogeo-online.net/blog/archives/84/</link>
		<comments>http://www.neogeo-online.net/blog/archives/84/#comments</comments>
		<pubDate>Sat, 16 Feb 2008 17:59:14 +0000</pubDate>
		<dc:creator>Guillaume</dc:creator>
				<category><![CDATA[GeoHacks]]></category>
		<category><![CDATA[Optimisation & performances]]></category>
		<category><![CDATA[Web mapping]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[Mapserver]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[TileCache]]></category>
		<category><![CDATA[WMS]]></category>

		<guid isPermaLink="false">http://www.neogeo-online.net/archives/84/</guid>
		<description><![CDATA[TileCache est un logiciel qui permet de créer un cache local d&#8217;une ressource WMS locale ou distante (du point de vue d&#8217;un serveur), afin d&#8217;en optimiser l&#8217;accès. Il est d&#8217;une simplicité déconcertante et d&#8217;une efficacité redoutable. Si l&#8217;installation et la mise en route sont faciles, il faut quand-même faire quelques réglages pour obtenir des performances [...]]]></description>
			<content:encoded><![CDATA[<p><strong> </strong><a title="Le site de tileCache" href="http://www.tilecache.org/" target="_blank"><strong>TileCache</strong></a> est un logiciel qui permet de créer un cache local d&#8217;une ressource WMS locale ou distante (du point de vue d&#8217;un serveur), afin d&#8217;en optimiser l&#8217;accès. Il est d&#8217;une simplicité déconcertante et d&#8217;une efficacité redoutable. Si l&#8217;installation et la mise en route sont faciles, il faut quand-même faire quelques réglages pour obtenir des performances optimales. Je vous propose donc un petit résumé de ces étapes, inspiré d&#8217;un <a title="Tutoriel TileCache" href="http://docs.codehaus.org/display/GEOSDOC/TileCache+Tutorial" target="_blank">tutoriel</a> en anglais et de mon expérience personnelle.</p>
<ol type="I">
<li>
<p style="margin-bottom: 0cm" align="justify"><strong>L&#8217;installation</strong></p>
</li>
</ol>
<p align="justify">Simplissime ! Récupérez une archive des sources sur le site  de tilecache (<a href="http://www.tilecache.org/">http://www.tilecache.org/</a>), et décompressez-la dans un répertoire publié sur le web (/tilecache dans ce qui suit).</p>
<p style="margin-bottom: 0cm" align="justify">Autorisez l&#8217;exécution des cgi pour ce répertoire :</p>
<p style="margin-left: 2.01cm; margin-bottom: 0cm" align="justify">&lt;Directory /usr/local/apache2/htdocs/tilecache&gt;<br />
AddHandler cgi-script .cgi<br />
Options +ExecCGI<br />
&lt;/Directory&gt;</p>
<p style="margin-bottom: 0cm" align="justify">
<p style="margin-bottom: 0cm" align="justify">Editez le fichier tilecache.cfg et spécifiez un répertoire de stockage des dalles, par exemple :</p>
<p style="margin-bottom: 0cm" align="justify">base=/usr/local/apache2/htdocs/tileFolder</p>
<p style="margin-bottom: 0cm" align="justify">(NB : ce répertoire doit exister et être accessible en écriture à l&#8217;utilisateur apache).</p>
<p style="margin-bottom: 0cm" align="justify">Vous pouvez déjà tester en chargeant la page http://nom_du_serveur/tilecache/. Vous devriez voir apparaître une interface OpenLayers avec une carte du monde. Vérifiez le contenu de votre répertoire de stockage, vous devriez y voir un sous-répertoire « basic », nom de la couche WMS chargée par défaut, contenant des sous-répertoires numérotés.</p>
<p style="margin-bottom: 0cm" align="justify">Arrivé là, vous êtes déjà en train de mettre en cache les couches WMS que vous exploitez. Le reste n&#8217;est donc plus qu&#8217;une question d&#8217;optimisation.</p>
<p style="margin-bottom: 0cm" align="justify">
<ol type="I">
<li>
<p style="margin-bottom: 0cm" align="justify"><strong>La configuration des ressources WMS.</strong></p>
</li>
</ol>
<p style="margin-bottom: 0cm" align="justify">Vous avez sans doute d&#8217;autres données à exploiter que les données proposées par défaut. Pour cela, il faut rajouter ces entrées dans le fichier tilecache.cfg, en commençant par le nom de la ressource (layername) entre crochets. A noter que le nom que vous donnez à la ressource est complètement libre, mais que c&#8217;est lui que vous devrez utiliser lors des appels à TileCache, depuis OpenLayers par exemple. Voici un exemple complet de configuration d&#8217;une ressource :</p>
<p style="margin-bottom: 0cm" align="justify"><span><span style="font-size: x-small;">[geosignal]<br />
type=WMS<br />
url=http://www.geosignal.org/cgi-bin/wmsmap<br />
bbox=-50000,1200000,1400000,2700000<br />
extent_type=loose<br />
extension=png<br />
layers=RASTER4000K,RASTER1000K,RASTER500K,RASTER250K,\<br />
RASTER100K,RASTER50K,RASTER25K,RASTER5K<br />
resolutions=2116.666666667,1058.333333333,529.166666667,\<br />
264.583333333,132.291666667,66.145833333,26.458333333,\<br />
13.229166668,6.614583334,2.645833334,1.322916667<br />
levels=11<br />
srs=EPSG:27572</span></span></p>
<p style="margin-bottom: 0cm" align="justify">La pluplart des paramètres sont facilement compréhensibles. Après la bbox cependant, on trouve un extent_type=loose. Il sert à autoriser la création de dalles en dehors de la bbox. Pratique pour éviter les dalles roses dans OpenLayers, quand l&#8217;étendue de la carte est plus grande que celle de votre ressource. L&#8217;omettre pour forcer les requêtes à se situer dans la bbox. Quant aux résolutions, c&#8217;est une manière d&#8217;exprimer les échelles. On peut les calculer assez facilement (hmmm&#8230;) : les dalles par défaut font 256&#215;256 px. Si les images issues du serveur WMS sont en 96 dpi, chaque dalle fera donc (256/96) = 2,666666667 pouces, soit 2,666666667 x 2.54 = 6,773333333 cm. Au 100000e, cela représente donc  6773,333333 mètres, ce qui ramène à  (6773,333333/256) = 26,458333333 m/pixel. La résolution pour le 100000e est donc de 26,45833333, et on peut alors facilement calculer les autres par simple péréquation.</p>
<p style="margin-bottom: 0cm" align="justify">Une autre option peut s&#8217;avérer utile, c&#8217;est metaTile=true. Elle permet d&#8217;envoyer des requêtes sur de larges extents, qui sont ensuite redécoupées en 256 x 256. C&#8217;est pratique à plus d&#8217;un titre. D&#8217;une part c&#8217;est souvent plus rapide de faire une requête que 25 (la metaTile fait 5 x 5 dalles de base par défaut), même si l&#8217;image est plus grosse. D&#8217;autre part ça diminue le problème du chevauchement des labels entre dalles contigües, puisque cet effet de bord n&#8217;apparaît plus désormais qu&#8217;en frontières des grandes tuiles, donc 5 fois moins souvent (20 faces externes au lieu de 100). Elle nécessite cependant l&#8217;installation (si ce n&#8217;est pas déjà le cas) de la librairie Image de Python (<a href="http://www.pythonware.com/products/pil/">http://www.pythonware.com/products/pil/</a>) qui fait le travail de découpe. Malheureusement, elle ne gère pas les PNG entrelacés, et cette option ne pourra donc pas fonctionner si la ressource WMS diffuse ses images dans ce format. Pour <a href="http://mapserver.gis.umn.edu/docs/faq/faqsection_view?section=Map%20Output" target="_blank">MapServer</a>, il faut ajouter un FORMATOPTION &laquo;&nbsp;INTERLACE=OFF&nbsp;&raquo; dans la définition de l&#8217;outputformat PNG.</p>
<ol type="I">
<li>
<p style="margin-bottom: 0cm" align="justify"><strong>Optimisation 	1, utiliser mod_python.</strong></p>
</li>
</ol>
<p style="margin-bottom: 0cm" align="justify">TileCache est un programme en python, configuré par défaut pour être exécuté en mode cgi, c&#8217;est-à-dire qu&#8217;Apache charge à chaque requête l&#8217;exécutable python qui traite le fichier tilecache.cgi. C&#8217;est un peu lent. Il vaut mieux charger python dans Apache avec mod_python (à activer dans la liste des modules du httpd.conf, ou à compiler et installer directement) car le fichier est alors directement interprété par l&#8217;extension python d&#8217;Apache, résidente en mémoire.</p>
<p style="margin-bottom: 0cm" align="left">Donc ajoutez à votre fichier httpd.conf :</p>
<p style="margin-bottom: 0cm" align="left">LoadModule python_module        modules/mod_python.so</p>
<p style="margin-bottom: 0cm" align="justify">Pas de tilecache.py dans votre répertoire tilecache ? Il suffit en fait de renommer le fichier tilecache.cgi en .py . Il faut par contre aussi adapter votre httpd.conf. La configuration du répertoire tilecache devient :</p>
<p style="margin-bottom: 0cm" align="justify">&lt;Directory /usr/local/apache2/htdocs/tilecache&gt;<br />
AddHandler python-program .py<br />
PythonHandler TileCache.Service<br />
PythonOption TileCacheConfig /usr/local/apache2/htdocs/tilecache/tilecache.cfg<br />
&lt;/Directory&gt;</p>
<p style="margin-bottom: 0cm" align="justify">Petite précaution : maintenant que python et tilecache.py sont résidents en mémoire, il vous faudra redémarrer Apache à chaque modification du fichier de configuration de TileCache, qui est devenu une sorte de prolongement d&#8217;Apache&#8230; Il vaut donc mieux avoir bien configuré toutes ses ressources avant cette étape.</p>
<p style="margin-bottom: 0cm" align="justify">Comparez à présent le fonctionnement de votre TileCache, les performances devraient être sensiblement supérieures.</p>
<p style="margin-bottom: 0cm" align="justify">
<ol type="I">
<li>
<p style="margin-bottom: 0cm" align="justify"><strong>Optimisation 	2, pré-remplir le cache.</strong></p>
</li>
</ol>
<p style="margin-bottom: 0cm" align="justify">L&#8217;intérêt de cette étape dépend du nombre d&#8217;échelles de vos données WMS, ainsi que de leur utilisation. Inutile de pré-générer la France au 5000e si peu d&#8217;utilisateurs s&#8217;en servent. Mais il est souvent agréable d&#8217;avoir les 2-3 premiers niveaux pré-générés. Pour ce faire, utilisez le petit programme tilecache_seed.py ainsi :</p>
<p style="margin-bottom: 0cm" align="justify">python tilecache_seed.py &#8216;url_du_serveur_WMS&#8217; nom_de_la_ressource niveau_de_depart niveau_de_fin</p>
<p style="margin-bottom: 0cm" align="justify">ce qui donne pour notre ressource définie plus haut :</p>
<p style="margin-bottom: 0cm" align="justify">python tilecache_seed.py &#8216;http://www.geosignal.org/cgi-bin/wmsmap&#8217; geosignal 0 2</p>
<p style="margin-bottom: 0cm" align="justify">Cela générera toutes les dalles pour les niveaux 0,1 et 2 de la ressource « geosignal », soit les trois premières résolutions décrites dans le fichier tilecache.cfg. Il faut bien veiller à utliser le même nom de ressource que dans le  tilecache.cfg.</p>
<p style="margin-bottom: 0cm" align="justify">Une fois la pré-génération réalisée, l&#8217;affichage sur ces premiers niveaux devrait être beaucoup plus fluide.</p>
<p style="margin-bottom: 0cm" align="justify">
<ol type="I">
<li>
<p style="margin-bottom: 0cm" align="justify"><strong>Optimisation 	3, forcer le cache client.</strong></p>
</li>
</ol>
<p style="margin-bottom: 0cm" align="justify">Vous remarquerez toutefois qu&#8217;en revenant sur un niveau de zoom déjà consulté, les images sont le plus souvent rechargées depuis le serveur. Dommage puisqu&#8217;elles sont déjà dans le cache client.     Mais celui-ci (le navigateur) ne sait pas qu&#8217;elles sont encore valides. Il faut donc l&#8217;aider à le savoir. Pour ce faire, il faut utiliser le module Apache mod_expires. Il n&#8217;est pas chargé par défaut, mais peut l&#8217;être facilement en dé-commentant ou ajoutant un LoadModule mod_expires dans le httpd.conf si vous avez un version packagée. Par contre, si vous avez compilé Apache vous-même, il faudra le recompiler avec les options &#8211;enable-headers &#8211;enable-expires. Oui, j&#8217;aurais pu le dire avant&#8230; Mais Apache est votre ami, lors d&#8217;une réinstallation, le make install n&#8217;écrase que les exécutables et préserve le fichier de configuration, les modules et le contenu de cgi-bin. Donc tout va bien.</p>
<p style="margin-bottom: 0cm" align="justify">Une fois l&#8217;installation réalisée, il faut régler la durée de mise en cache dans la configuration Apache du répertoire tilecache. Rééditez donc à nouveau le httpd.conf et ajoutez dans la section Directory concernant tilecache :</p>
<p style="margin-bottom: 0cm" align="justify">ExpiresActive on<br />
ExpiresDefault &laquo;&nbsp;access plus 6 months&nbsp;&raquo;</p>
<p style="margin-bottom: 0cm" align="justify">La durée de mise en cache peut se régler finement. Voir la documentation du module Expires pour cela. Tout dépend de la durée de vie des données sources. Si elles sont soumises à une mise à jour quotidienne, on pourra se contenter d&#8217;un ExpiresDefault &laquo;&nbsp;access plus 6 hours&nbsp;&raquo; . A noter que ceci n&#8217;a aucune incidence sur le contenu du cache serveur. Donc si les données sont mises à jour quotidiennement, il faut également purger le cache serveur tous les jours !</p>
<p style="margin-bottom: 0cm" align="justify">A l&#8217;issue de cette dernière étape, comment dire, après quelques allers-retours entre niveaux de zooms différents, l&#8217;affichage devient quasi-instantané !</p>
<ol type="I">
<li>
<p style="margin-bottom: 0cm" align="justify"><strong>Optimisation 	4, simuler plusieurs serveurs.</strong></p>
</li>
</ol>
<p style="margin-bottom: 0cm" align="justify">La plupart des navigateurs n&#8217;effectuent pas plus de deux requêtes simultanées sur un même serveur, mais peuvent par contre en effectuer beaucoup plus vers plusieurs serveurs. En déclarant auprès de votre hébergeur de nouveaux noms de domaines (data1.myserveur.com, data2.myserveur.com, data3.myserveur.com&#8230;) pointant tous vers la même IP, les navigateurs pourront alors charger les dalles beaucoup plus vite, pour peu que l&#8217;application web que vous utilisez prenne en charge ce genre de requête. Avec OpenLayers il suffit de déclarer non plus une URL, mais un tableau d&#8217;URL :</p>
<pre style="text-align: justify">wms_sigma = new OpenLayers.Layer.WMS( "TIGER",
["http://sigma4.openplans.org/tilecache-1.3/tilecache.py?",
"http://sigma3.openplans.org/tilecache-1.3/tilecache.py?",
"http://sigma2.openplans.org/tilecache-1.3/tilecache.py?",
"http://sigma1.openplans.org/tilecache-1.3/tilecache.py?"],
{layers: 'sigma' }, {numZoomLevels: 17});</pre>
<p style="margin-bottom: 0cm" align="justify">Si avec tout ça vous allez encore moins vite que GoogleMaps, il ne vous reste plus qu&#8217;à acheter un serveur avec 36 Go de RAM et charger votre cache directement dedans. Car TileCache en est également capable !</p>
<p style="margin-bottom: 0cm" align="justify"><a title="Version PDF" href="http://www.neogeo-online.net/blog/wp-content/uploads/2008/tilecache.pdf" target="_blank">Version PDF.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.neogeo-online.net/blog/archives/84/feed/</wfw:commentRss>
		<slash:comments>30</slash:comments>
		</item>
		<item>
		<title>WorldMill, pour donner des ailes à OGR</title>
		<link>http://www.neogeo-online.net/blog/archives/61/</link>
		<comments>http://www.neogeo-online.net/blog/archives/61/#comments</comments>
		<pubDate>Mon, 19 Nov 2007 22:07:26 +0000</pubDate>
		<dc:creator>Guillaume</dc:creator>
				<category><![CDATA[GeoHacks]]></category>
		<category><![CDATA[OGR]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://www.neogeo-online.net/archives/61/</guid>
		<description><![CDATA[Sean Gillies n&#8217;est pas un plaisantin. Quand il s&#8217;attaque à un sujet, ce n&#8217;est pas pour faire un truc qui clignote en vous donnant l&#8217;heure. Alors quand il s&#8217;est penché sur l&#8217;implémentation d&#8217;OGR en Python, qu&#8217;il trouvait médiocre dans sa version native, il a déjà réfléchi plusieurs jours, savoir s&#8217;il vallait mieux utiliser CTypes ou [...]]]></description>
			<content:encoded><![CDATA[<p><a title="Le blog de Sean" href="http://zcologia.com/news/" target="_blank">Sean Gillies</a> n&#8217;est pas un plaisantin. Quand il s&#8217;attaque à un sujet, ce n&#8217;est pas pour faire un truc qui clignote en vous donnant l&#8217;heure. Alors quand il s&#8217;est penché sur l&#8217;implémentation d&#8217;OGR en Python, qu&#8217;il trouvait médiocre dans sa version native, il a déjà <a href="http://zcologia.com/news/607/ogr-ctypes-cython/" target="_blank">réfléchi</a> plusieurs jours, savoir s&#8217;il vallait mieux utiliser CTypes ou Cython pour lier la librairie C native. Le genre de sujet qu&#8217;on lui laisse avec soulagement. Mais quand il teste l&#8217;ami Sean, il ne se contente pas de dire &laquo;&nbsp;Ctypes sucks dude&#8230;&nbsp;&raquo;, il sort des statistiques :</p>
<pre class="literal-block">Refinery (with ctypes): 4972288.61 usec/pass</pre>
<pre class="literal-block">Ogre (Cython/Pyrex) : 682301.81 usec/pass</pre>
<pre class="literal-block">ogr.py (old-school bindings) : 9183181.72 usec/pass</pre>
<p>Le coup du old-school bindings en a énervé quelques-uns, qui ont fait remarquer qu&#8217;il avait utilisé une vieille version d&#8217;OGR. Trop facile ! Mais avec la nouvelle, même si celle-ci est 15 fois plus rapide que la précédente (bravo <a href="http://hobu.biz/2007/11/16/gdals-python-bindings-arent-dead-yet-and-neither-is-this-weblog/" target="_blank">Howard</a>), Cython garde le dessus :</p>
<pre class="literal-block">Refinery (with ctypes)
4994133.40 usec/pass

Ogre (Cython/Pyrex)
593522.91 usec/pass

ogr.py (next generation bindings)
594103.50 usec/pass</pre>
<p>De cette implémentation efficace avec Cython, Sean a fait un premier prototype, <a href="http://trac.gispython.org/projects/PCL/wiki/WorldMill" target="_blank">WordMill.</a> Quelques <a href="http://trac.gispython.org/projects/PCL/wiki/WorldMill" target="_blank">exemples</a> permettent de se rendre compte de la souplesse du programme. La définition d&#8217;un workspace (répertoire de données) suffit à permettre l&#8217;accès à toutes les sources de données supportées par OGR qui s&#8217;y trouvent, et de parcourir ainsi les fichiers et leur contenu de manière transparente quant à leur format, sans appel à un driver particulier et à travers des structures simples. On peut ainsi accéder aux données, les interroger, les filtrer très efficacement. De la belle ouvrage, doublée d&#8217;une installation simplissime. Chapeau Sean !</p>
]]></content:encoded>
			<wfw:commentRss>http://www.neogeo-online.net/blog/archives/61/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Il est pas beau mon MapFish ?</title>
		<link>http://www.neogeo-online.net/blog/archives/55/</link>
		<comments>http://www.neogeo-online.net/blog/archives/55/#comments</comments>
		<pubDate>Tue, 30 Oct 2007 18:02:48 +0000</pubDate>
		<dc:creator>Guillaume</dc:creator>
				<category><![CDATA[News of the GeoWorld]]></category>
		<category><![CDATA[MapFish]]></category>
		<category><![CDATA[OpenLayers]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://www.neogeo-online.net/archives/55/</guid>
		<description><![CDATA[Depuis ce matin sur les étals du geoweb frétille un nouveau specimen dénommé MapFish. Avec pour emblème une magnifique croquette de poisson pané (!) c&#8217;est sous ce nom que CartoWeb4, présenté en septembre au FOSS4G, se présente désormais, Cartoweb restant le nom de la branche 3, toujours maintenue depuis la sortie de la version 3.4 [...]]]></description>
			<content:encoded><![CDATA[<p>Depuis ce matin sur les étals du geoweb frétille un nouveau specimen dénommé <a title="le site de MapFish" href="http://www.mapfish.org/" target="_blank">MapFish.</a> Avec pour emblème une magnifique croquette de poisson pané (!) c&#8217;est sous ce nom que CartoWeb4, présenté en septembre au FOSS4G, se présente désormais, <a href="http://www.cartoweb.org/" target="_blank">Cartoweb</a> restant le nom de la branche 3, toujours maintenue depuis la sortie de la version 3.4 fin septembre.</p>
<p>Egalement sponsorisé par <a href="http://www.camptocamp.com/" target="_blank">CampToCamp,</a> il est vrai que MapFish n&#8217;a pas grand&#8217;chose à voir technologiquement avec Cartoweb, même si la finalité reste la mise en oeuvre rapide d&#8217;applications cartographiques. De fait, MapFish se veut être le chaînon manquant entre la qualité d&#8217;un client carto comme OpenLayers et la puissance de traitement qui fait une vraie application de cartographie en ligne. Ceci se fait en deux temps :</p>
<p>- d&#8217;une part un client web qui s&#8217;appuie sur OpenLayers tout en y juxtaposant des widgets graphiques issus du fascinant framework javascript <a href="http://www.extjs.com" target="_blank">extjs.</a> On peut ainsi avoir une <a href="http://demo.mapfish.org/stable/examples/tree/tree_user_model.html" target="_blank">légende</a> un peu plus raffinée que la simple liste des couches d&#8217;OpenLayers, même si le composant à encore des progrès à réaliser (distinction des types de géométries dans les cartouches par exemple). Parmi les widgets on trouve encore un controle de zooms prédéfinis, ou un outil de recherche. Plus complexe, un composant geostatistique permet de réaliser des <a href="http://demo.mapfish.org/stable/demos/world_factbk/geostat.html" target="_blank">discrétisations</a> à la volée à partir d&#8217;un flux GeoJSON. Ou encore de réaliser des calculs d&#8217;itinéraires en se basant sur les fonctions <a href="http://pgrouting.postlbs.org/" target="_blank">PgRouting</a> de PostGIS développée conjointement par CampToCamp et <a href="http://www.orkney.co.jp/english/" target="_blank">Orkney.</a> Voilà pour la partie cliente.</p>
<p>- d&#8217;autre part, une architecture serveur basée sur le framework python <a href="http://pylonshq.com/" target="_blank">Pylons</a> qui implémente des modules nécessaires au bon fonctionnement des widgets clients, ainsi que le reste de l&#8217;application web si nécessaire.</p>
<p>La version présentée aujourd&#8217;hui, et annoncée sur la liste openlayers-dev, est une alpha-release. Certes cela se voit, et le récent remplacement du framework js Dojo par Extjs a laissé quelques traces. Mais comment ne pas saluer une initiative qui :</p>
<p>- rappelle qu&#8217;une application cartographique sur le web ce n&#8217;est pas qu&#8217;un tuilage rapide, c&#8217;est aussi des données, l&#8217;accès à leurs attributs et à la modification de leur représentation.<br />
- s&#8217;appuie sur des bibliothèques existantes qui ont fait leurs preuves dans leur domaine (OL, extJs, Pylons), sans chercher à réinventer la roue. C&#8217;est du <a href="http://en.wikipedia.org/wiki/KISS_principle" target="_blank">KISS</a> très <a href="http://en.wikipedia.org/wiki/Don't_repeat_yourself" target="_blank">DRY</a> !<br />
- s&#8217;ingénie à fédérer les énergies, non pas en proposant un environnement complet et fermé, mais plutôt une démarche, une dynamique et une boîte à outils.</p>
<p>Voici donc un petit poisson qui a toutes ses chances de devenir grand.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.neogeo-online.net/blog/archives/55/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Sortie officielle de QGis 0.9.0</title>
		<link>http://www.neogeo-online.net/blog/archives/50/</link>
		<comments>http://www.neogeo-online.net/blog/archives/50/#comments</comments>
		<pubDate>Fri, 26 Oct 2007 20:32:35 +0000</pubDate>
		<dc:creator>Guillaume</dc:creator>
				<category><![CDATA[News of the GeoWorld]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[QGis]]></category>

		<guid isPermaLink="false">http://www.neogeo-online.net/archives/50/</guid>
		<description><![CDATA[C&#8217;est avec un certain retard sur le planning initial que l&#8217;équipe de QGis vient d&#8217;annoncer la sortie de la nouvelle version 0.9.0., nom de code Ganymède, avec, entre autres, au menu : - L&#8217;intégration de python qui permet d&#8217;écrire des plugins dans ce langage mais aussi d&#8217;utiliser les modules Qgis dans un programme Python - [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center"><img src="http://www.neogeo-online.net/blog/wp-content/uploads/2007/10/qgis.jpg" border="0" alt="Qgis 0.9.0. Ganymède" /></p>
<p>C&#8217;est avec un certain retard sur le planning initial que l&#8217;équipe de QGis vient d&#8217;annoncer la sortie de la <a title="L'annonce officielle" href="http://blog.qgis.org/?q=node/91" target="_blank">nouvelle version 0.9.0.</a>, nom de code Ganymède, avec, entre autres, au menu :</p>
<p>- L&#8217;intégration de python qui permet d&#8217;écrire des plugins dans ce langage mais aussi d&#8217;utiliser les modules Qgis dans un programme Python<br />
- L&#8217;ajout de nouveaux outils Grass<br />
- Une amélioration des possibilités de rendu des cartes, avec notamment la possibilité de faire des classifications par quantile, plus utile que les seules amplitudes jusqu&#8217;alors disponibles. Pour les autres méthode (Standard, Moyennes emboîtées, Lognormale, Géométrique, toutes bien pratiques pour classifier des données statistiques), on attendra encore un peu&#8230;<br />
- Une refonte des librairies principales, qui  améliore sensiblement les performances, notamment dans la manipulation de lourdes couches de données.</p>
<p>Côté installation, de nombreux paquetages sont déjà prêts (Ubuntu, Debian, OpenSuse, Mac OS X et Windows), disponibles <a href="http://gisalaska.com/qgis/downloads.rhtml" target="_blank">ici.</a></p>
<p>J&#8217;ai réalisé l&#8217;installation à partir des sources, sans pouvoir intégrer le support Python du fait d&#8217;une erreur à la compilation. Le cmake, qui remplace le configure, recherche les installations de python, postgresql, grass et autres. Si le compte-rendu du cmake indique qu&#8217;il n&#8217;a pas trouvé un composant que vous savez être installé sur le système, un petit tour du côté des fichiers du répertoire cmake peut vous aider : FindGEOS, FindGRASS, FindPostgres, FindProj peuvent être édités manuellement de manière à aider le cmake à retrouver les librairies nécessaires. Au final, l&#8217;install est très propre, de même que le uninstall. Par contre, le module Grass n&#8217;a pas été installé, malgré la prise en compte des librairies grass-dev pour le make.</p>
<p>Après quelques tests, la véritable plus-value de cette édition se situe du côté des performances, nettement améliorées dans la manipulation de gros fichiers, pour peu qu&#8217;on bâtisse un index spatial de la couche en question. Le module de géoréférencement gagne aussi en ergonomie.</p>
<p>Bravo à toute l&#8217;équipe de Qgis pour cette nouvelle version.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.neogeo-online.net/blog/archives/50/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Qu&#039;est-ce qu&#039;on parle au FOSS4G ?</title>
		<link>http://www.neogeo-online.net/blog/archives/41/</link>
		<comments>http://www.neogeo-online.net/blog/archives/41/#comments</comments>
		<pubDate>Sun, 30 Sep 2007 00:43:11 +0000</pubDate>
		<dc:creator>Guillaume</dc:creator>
				<category><![CDATA[News of the GeoWorld]]></category>
		<category><![CDATA[Django]]></category>
		<category><![CDATA[FOSS4G]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://www.neogeo-online.net/archives/41/</guid>
		<description><![CDATA[Après une semaine fort excitante passée à suivre les conférences et ateliers du FOSS4G2007, je profite du temps épouvantable qui m&#8217;oblige à rester cloîtré dans la salle commune du Whalers on the Point Guesthouse de Tofino et m&#8217;empêche de sortir ma planche de surf pour livrer quelques réflexions sur ce que j&#8217;ai pu apprendre ces [...]]]></description>
			<content:encoded><![CDATA[<p>Après une semaine fort excitante passée à suivre les conférences et ateliers du <a href="http://www.foss4g2007.org/" target="_blank">FOSS4G2007</a>, je profite du temps épouvantable qui m&#8217;oblige à rester cloîtré dans la salle commune du <a href="http://www.tofinohostel.com/" target="_blank">Whalers on the Point Guesthouse </a>de <a title="Découvrir Tofino" href="http://www.my-tofino.com/" target="_blank">Tofino</a> et m&#8217;empêche de sortir ma planche de surf pour livrer quelques réflexions sur ce que j&#8217;ai pu apprendre ces derniers jours.</p>
<p>Premièrement, concernant les langages de développement, Python fait réellement l&#8217;événement puisque c&#8217;est le langage utilisé dans les applications les plus pointues et récentes présentées au FOSS. Citons <a href="http://tilecache.org/" target="_blank">TileCache</a>, <a href="http://featureserver.org/" target="_blank">FeatureServer</a>, <a href="http://www.foss4g2007.org/presentations/view.php?abstract_id=216" target="_blank">Cartoweb 4</a>, <a href="http://pypi.python.org/pypi/Shapely/" target="_blank">Shapely</a>, <a href="http://code.djangoproject.com/wiki/GeoDjango" target="_blank">GeoDjango</a>, tous ces projets ont privilégié le python en raison de sa stabilité et de son extraordinaire versatilité (au sens anglo-saxon du terme). Java est toujours là, structurant des projets déjà reconnus (uDIG) ou en devenir (un <a href="http://www.foss4g2007.org/presentations/view.php?abstract_id=227">ETL OpenSource </a>présenté par Talend et CampToCamp). Par contre le PHP ne fait plus partie des langages en vue. Encore utilisé largement, s&#8217;il apparaît notamment dans des retours d&#8217;expérience il n&#8217;est plus le fer de lance du développement en WebMapping, dont l&#8217;architecture s&#8217;oriente vers des bibliothèques puissantes écrites en C, intégrées dans des wrappers python. Cela a été rendu possible par l&#8217;intégration de Ctypes dans python 2.5 qui permet l&#8217;appel direct de bibliothèques C sans passer par une fastidieuse interface SWIG.<br />
Du côté des geeks, <a href="http://cfis.savagexi.com/articles/2007/09/19/mapping-with-ruby-and-rails" target="_blank">Charlie Savage </a>met désormais en oeuvre du GeoRuby pour faire tourner son <a href="http://www.mapbuzz.com/" target="_blank">MapBuzz</a>, et à créé une <a href="http://groups.google.com/group/georuby" target="_blank">liste </a>dédiée au webmapping dans RubyOnRails, que rien ne semble arrêter !</p>
<p>Tout ceci produit des applications plus puissantes, plus stables et plus robustes, notamment dans la gestion de la mémoire et de la montée en charge. Des bibliothèques aussi cruciales que Geos, Gdal, Ogr, Proj peuvent ainsi être utilisées au coeur même d&#8217;une application web dont les scripts python constituent une double interface entre les requêtes utilisateurs d&#8217;un côté et la manipulation des données à un bas niveau de l&#8217;autre. Ceci devrait faire émerger des frameworks cartographiques avec de véritables fonctions d&#8217;administration des données, qui sont encore des aspects trop négligés par le monde OpenSource.</p>
<p>GeoDjango devrait montrer la voie puisque ses concepteurs ont montré un vif intérêt à l&#8217;idée d&#8217;intégrer des notions de règles de topologies à la gestion des tables.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.neogeo-online.net/blog/archives/41/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Utilisation de AtomPub</title>
		<link>http://www.neogeo-online.net/blog/archives/22/</link>
		<comments>http://www.neogeo-online.net/blog/archives/22/#comments</comments>
		<pubDate>Fri, 07 Sep 2007 15:48:13 +0000</pubDate>
		<dc:creator>Guillaume</dc:creator>
				<category><![CDATA[GeoHacks]]></category>
		<category><![CDATA[Atom]]></category>
		<category><![CDATA[GeoJSON]]></category>
		<category><![CDATA[KML]]></category>
		<category><![CDATA[OSM]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://www.neogeo-online.net/?p=22</guid>
		<description><![CDATA[En complément du précédent article, j&#8217;ai trouvé deux applications cartographiques utilisant le format AtomPub dans un contexte géographique (avec des balises georss décrivant les géométries) : Le déjà célèbre MapBuzz, dans lequel les objets créés par les utilisateurs et affichés en mode vectoriel sont issus d&#8217;un flux AtomPub. Il a l&#8217;avantage d&#8217;illustrer mon précédent propos [...]]]></description>
			<content:encoded><![CDATA[<p>En complément du précédent <a href="http://www.neogeo-online.net/?p=21">article</a>, j&#8217;ai trouvé deux applications cartographiques utilisant le format AtomPub dans un contexte géographique (avec des balises georss décrivant les géométries) :</p>
<p>Le déjà célèbre <a title="Le site MapBuzz" href="http://www.mapbuzz.com" target="_blank">MapBuzz</a>, dans lequel les objets créés par les utilisateurs et affichés en mode vectoriel sont issus d&#8217;un flux AtomPub. Il a l&#8217;avantage d&#8217;illustrer mon précédent propos sur l&#8217;architecture REST : les trois modes d&#8217;affichages différents des objets saisis par les utilisateurs (géométries sur les cartes, info-bulle au survol, fichier complète au clic) sont trois représentations différentes (chacune avec plus ou moins d&#8217;attributs) d&#8217;une même ressource.</p>
<p>Et un <a title="Numérisation dans OL avec AtomPub" href="http://labs.metacarta.com/atompub/app-demo.html" target="_blank">prototype </a>fait par <a title="le site web de metacarta" href="http://labs.metacarta.com/" target="_blank">Metacarta </a>intégrant la prise en charge de AtomPub dans OpenLayers et s&#8217;appuyant sur <a href="http://featureserver.org/" target="_blank">FeatureServer</a>, sorte de serveur WFS en Python à la différence que les formats de sortie sont variés (JSON, GeoRSS, KML, GML, HTML ou OSM, le format OpenStreetMap). C&#8217;est à l&#8217;heure actuelle ce que j&#8217;ai pu trouver de plus avancé sur la question.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.neogeo-online.net/blog/archives/22/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Heureuse initiative</title>
		<link>http://www.neogeo-online.net/blog/archives/17/</link>
		<comments>http://www.neogeo-online.net/blog/archives/17/#comments</comments>
		<pubDate>Fri, 27 Jul 2007 09:51:44 +0000</pubDate>
		<dc:creator>Guillaume</dc:creator>
				<category><![CDATA[GeoHacks]]></category>
		<category><![CDATA[Django]]></category>
		<category><![CDATA[Proj]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Rest]]></category>

		<guid isPermaLink="false">http://www.neogeo-online.net/?p=17</guid>
		<description><![CDATA[Chris Schmidt et Howard Butler viennent de mettre en ligne un petit site web qui référence les projections EPSG et des projections personnelles, chargées par les utilisateurs du site. Rien de bien excitant ? Et bien si, car ils mettent aussi à disposition des webservices de publication des définitions des projections, aux formats GML, Proj4, [...]]]></description>
			<content:encoded><![CDATA[<p>Chris Schmidt et Howard Butler viennent de mettre en ligne un petit <a title="Spatial reference" href="http://spatialreference.org/" target="_blank">site web </a>qui référence les projections EPSG et des projections personnelles, chargées par les utilisateurs du site. Rien de bien excitant ? Et bien si, car ils mettent aussi à disposition des webservices de publication des définitions des projections, aux formats GML, Proj4, EsriWKT, OGC WKT, USGS et JSON. Grâce à une architecture <a title="Pour enfin comprendre REST" href="http://pompage.net/pompe/comment-j-ai-explique-rest-a-ma-femme/" target="_blank">RESTFull</a>, les définitions (ou les ressources, pour utiliser la terminologie REST) sont accessibles par un simple appel d&#8217;URL :</p>
<p><a title="Définition du Lambert II en norme Proj4" href="http://spatialreference.org/ref/epsg/27572/Proj4/" target="_blank">http://spatialreference.org/ref/epsg/27572/Proj4 </a> renvoie ainsi un flux texte correspondant au Lambert II structuré selon la norme Proj4.</p>
<p>L&#8217;intérêt ? Pouvoir à terme intégrer ces URL en lieu et place des définitions elles-mêmes dans l&#8217;utilisation de GDAL ou de MapServer par exemple. Donc un moyen simple d&#8217;accéder à des définitions maintenues à jour, sans avoir à mettre les mains dans les fichiers EPSG de la librairie proj, ainsi que de créer ou d&#8217;utiliser des projections non définies par l&#8217;EPSG.</p>
<p>Autre intérêt du site : bâti autour du framework <a title="Le framework Django" href="http://www.djangoproject.com/" target="_blank">Django</a>, donc écrit en Python,  avec une architecture REST, il montre ce que ces technologies peuvent apporter en termes de simplicité et de flexibilité dans la mise en oeuvre de webservices cartographiques.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.neogeo-online.net/blog/archives/17/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

