<?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; PostGIS</title>
	<atom:link href="http://www.neogeo-online.net/blog/archives/tag/postgis/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.neogeo-online.net</link>
	<description>SIG, OpenSource et Web 2.0</description>
	<lastBuildDate>Wed, 08 Feb 2012 11:54:59 +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>Capacité d&#8217;ingurgitation de GeoNetwork</title>
		<link>http://www.neogeo-online.net/blog/archives/428/</link>
		<comments>http://www.neogeo-online.net/blog/archives/428/#comments</comments>
		<pubDate>Thu, 07 Oct 2010 21:08:19 +0000</pubDate>
		<dc:creator>François-Xavier Prunayre</dc:creator>
				<category><![CDATA[Catalogage]]></category>
		<category><![CDATA[Optimisation & performances]]></category>
		<category><![CDATA[GeoNetwork]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[PostGIS]]></category>

		<guid isPermaLink="false">http://www.neogeo-online.net/?p=428</guid>
		<description><![CDATA[Lors du dernier atelier &#171;&#160;GeoNetwork for dummies, or how to setup an SDI in 3 hours&#160;&#187; réalisé à Barcelone au FOSS4G, certains &#171;&#160;étudiants&#160;&#187; m&#8217;ont interpellé concernant les performances de l&#8217;application. En effet, en ces temps inspirés, des catalogues avec parfois des tonnes de fiches voient ou veulent voir le jour. J&#8217;ai pu apercevoir quelques graphiques ici [...]]]></description>
			<content:encoded><![CDATA[<p>Lors du dernier atelier <a href="http://2010.foss4g.org/workshop12.php">&laquo;&nbsp;GeoNetwork for dummies, or how to setup an SDI in 3 hours&nbsp;&raquo;</a> réalisé à Barcelone au FOSS4G, certains &laquo;&nbsp;étudiants&nbsp;&raquo; m&#8217;ont interpellé concernant les performances de l&#8217;application. En effet, en ces temps inspirés, des catalogues avec parfois des tonnes de fiches voient ou veulent voir le jour.</p>
<p>J&#8217;ai pu apercevoir quelques graphiques ici ou là mais rien de disponible en ligne. J&#8217;ai réalisé mes propres tests dont voici les résultats (ils confirment les <a href="http://www.neogeo-online.net/blog/archives/294/">tendances décrites dans les billets précédents</a>).</p>
<p>Les tests ont été réalisés sur des opérations d&#8217;ajout de métadonnées avec une dizaine d&#8217;utilisateurs en parallèle. L&#8217;ajout consiste en l&#8217;envoi d&#8217;un fichier,  son insertion dans la base de données et son indexation (non spatiale et spatiale).</p>
<p><strong>10 ou 10000 ?</strong></p>
<p>Tout d&#8217;abord, si l&#8217;objectif est de mettre en place un catalogue avec plus de 10000 métadonnées, ne pas utiliser la version 2.4. En effet, depuis la version 2.5, les performances d&#8217;insertion et mise à jour des métadonnées sont bien meilleures. Les graphiques ci-dessous illustrent les gains obtenus dans ce domaine entre les versions 2.4.3 et 2.6.0.</p>
<p><img class="alignnone size-medium wp-image-429" title="geonetwork243_insert_10users" src="http://www.neogeo-online.net/blog/wp-content/uploads/2010/10/geonetwork243-260_insert_10users.png" alt="" /></p>
<table>
<tr>
<td>
<a href="http://www.neogeo-online.net/blog/wp-content/uploads/2010/10/geonetwork243_insert_10users.png"><img src="http://www.neogeo-online.net/blog/wp-content/uploads/2010/10/geonetwork243_insert_10users-150x150.png" alt="" title="geonetwork243_insert_10users" width="205" height="200" class="alignleft size-thumbnail wp-image-462" /></a>
</td>
<td>
<a href="http://www.neogeo-online.net/blog/wp-content/uploads/2010/10/geonetwork260_insert_10users.png"><img src="http://www.neogeo-online.net/blog/wp-content/uploads/2010/10/geonetwork260_insert_10users-150x150.png" alt="" title="geonetwork260_insert_10users" width="205" height="200" class="alignright size-thumbnail wp-image-462" /></a>
</td>
</tr>
</table>
<p>En 55 min, 30 000 fiches insérées dans <a href="http://geonetwork-opensource.org/downloads.html">la version 2.6.0</a> contre 18 000 en 255 minutes pour la version 2.4.3. Par ailleurs, il est important de noter qu&#8217;avec la version 2.6.0 le temps d&#8217;insertion ne se dégrade presque plus lorsque le nombre de métadonnées dans le catalogue augmente. Ceci est un point critique lorsqu&#8217;il est envisagé de moissonner la terre entière&nbsp;!</p>
<p><strong>PostgreSQL+Shapefile ou PostGIS ?</strong></p>
<p>Prenons un jeu de données réel composé de 3700 fiches issues d&#8217;un géoportail national voisin comprenant de <a href="http://www.neogeo-online.net/blog/wp-content/uploads/2010/10/geonetwork_spatialindex.png">nombreuses étendues géographiques</a> de type emprise simple ou polygone englobant afin de voir l&#8217;impact de l&#8217;utilisation d&#8217;un index spatial de type ESRI Shapefile ou PostGIS.</p>
<p><img class="alignnone size-medium wp-image-431" title="geonetwork260_insert_10users_postgrespostgis" src="http://www.neogeo-online.net/blog/wp-content/uploads/2010/10/geonetwork260_insert_10users_postgrespostgis.png" alt="" /></p>
<p>Un petit avantage pour PostGIS dans ce cas.</p>
<p>Il serait intéressant d&#8217;analyser la partie recherche, une fois toutes ces fiches saisies et insérées !</p>
]]></content:encoded>
			<wfw:commentRss>http://www.neogeo-online.net/blog/archives/428/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Retour sur le sprint</title>
		<link>http://www.neogeo-online.net/blog/archives/280/</link>
		<comments>http://www.neogeo-online.net/blog/archives/280/#comments</comments>
		<pubDate>Mon, 01 Mar 2010 12:05:50 +0000</pubDate>
		<dc:creator>Guillaume</dc:creator>
				<category><![CDATA[Bases de données]]></category>
		<category><![CDATA[Mapserver]]></category>
		<category><![CDATA[PostGIS]]></category>

		<guid isPermaLink="false">http://www.neogeo-online.net/?p=280</guid>
		<description><![CDATA[Olivier Courtin nous propose un joli résumé du New York Sprint 2010. Deux posts plus techniques vont bientôt apparaître, quand la fatigue du voyage se sera estompée sans doute&#8230; On devrait aimerait alors en savoir plus sur les roadmaps de PostGIS et MapServer quant à leurs versions respectives 2.0 et 6.0. Pour Microsoft Word, ça [...]]]></description>
			<content:encoded><![CDATA[<p>Olivier Courtin nous propose un<a href="http://www.oslandia.com/tech/?p=624"> joli résumé</a> du <a href="http://wiki.osgeo.org/wiki/New_York_Code_Sprint_2010" target="_blank">New York Sprint 2010</a>. Deux posts plus techniques vont bientôt apparaître, quand la fatigue du voyage se sera estompée sans doute&#8230; On <span style="text-decoration: line-through;">devrait</span> aimerait alors en savoir plus sur les roadmaps de PostGIS et MapServer quant à leurs versions respectives 2.0 et 6.0. Pour Microsoft Word, ça avait été des évolutions majeures&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.neogeo-online.net/blog/archives/280/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fresh meat</title>
		<link>http://www.neogeo-online.net/blog/archives/170/</link>
		<comments>http://www.neogeo-online.net/blog/archives/170/#comments</comments>
		<pubDate>Sat, 25 Apr 2009 13:36:42 +0000</pubDate>
		<dc:creator>Guillaume</dc:creator>
				<category><![CDATA[GeoHacks]]></category>
		<category><![CDATA[AGG]]></category>
		<category><![CDATA[Mapserver]]></category>
		<category><![CDATA[OpenJump]]></category>
		<category><![CDATA[PostGIS]]></category>

		<guid isPermaLink="false">http://www.neogeo-online.net/?p=170</guid>
		<description><![CDATA[Deux sorties dignes d&#8217;intérêt ces derniers jours : OpenJump 1.3 et MapServer 5.4. Concernant le premier, on note l&#8217;arrivée de nouvelles méthodes de discrétisation (moyenne, seuils naturels et Jenks notamment) et d&#8217;informations statistiques sur les couches (min, max, moyenne&#8230;), ainsi que de nouvelles fonctions d&#8217;édition des géométries (auto-complétion des polygones sur tracé existant, simplification de [...]]]></description>
			<content:encoded><![CDATA[<p>Deux sorties dignes d&#8217;intérêt ces derniers jours : <a href="http://www.openjump.org/wiki/show/New+OpenJUMP+Release" target="_blank">OpenJump 1.3</a> et <a href="http://mapserver.org/" target="_blank">MapServer 5.4.</a></p>
<p>Concernant le premier, on note l&#8217;arrivée de nouvelles méthodes de discrétisation (moyenne, seuils naturels et Jenks notamment) et d&#8217;informations statistiques sur les couches (min, max, moyenne&#8230;), ainsi que de nouvelles fonctions d&#8217;édition des géométries (auto-complétion des polygones sur tracé existant, simplification de polygones sans incohérence, double fenêtrage synchrone&#8230;) qui en font un outil de choix pour tout ce qui touche à la manipulation des données.</p>
<p><a href="http://trac.osgeo.org/mapserver/browser/tags/rel-5-4-0/mapserver/HISTORY.TXT">MapServer</a> voit quant à lui intégrées les <a href="http://research.dmsolutions.ca/?p=299" target="_blank">améliorations promises</a> par le <a href="http://wiki.osgeo.org/wiki/Toronto_Code_Sprint_2009">Toronto Code Sprint</a>. J&#8217;ai fait quelques tests habituels sur des extraits de larges couches PostGIS et Shapefile, et les résultats sont assez troublants. Voici un comparatif avec la version 5.2 pour la génération d&#8217;une image de 600 x 600 pixels comprenant deux couches, communes et ROUTE250 sur une zone couvrant à peu près la Gironde :</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-171" title="image générée avec le driver AGG" src="http://www.neogeo-online.net/blog/wp-content/uploads/2009/04/test.png" alt="image générée avec le driver AGG" width="360" height="360" /></p>
<table style="text-align: center;" border="1">
<tbody>
<tr>
<th colspan="2"></th>
<th>5.2</th>
<th>5.4</th>
</tr>
<tr>
<td>Postgis</td>
<td>GIF</td>
<td>0.142</td>
<td>0.159</td>
</tr>
<tr>
<td></td>
<td>PNG</td>
<td>0.388</td>
<td>0.386</td>
</tr>
<tr>
<td></td>
<td>AGG</td>
<td>0.920</td>
<td>0.707</td>
</tr>
<tr>
<td>Shapefile</td>
<td>GIF</td>
<td>0.101</td>
<td>0.101</td>
</tr>
<tr>
<td></td>
<td>PNG</td>
<td>0.297</td>
<td>0.318</td>
</tr>
<tr>
<td></td>
<td>AGG</td>
<td>0.920</td>
<td>0.842</td>
</tr>
<tr>
<td>SHP + QIX</td>
<td>GIF</td>
<td>0.058</td>
<td>0.060</td>
</tr>
<tr>
<td></td>
<td>PNG</td>
<td>0.315</td>
<td>0.284</td>
</tr>
<tr>
<td></td>
<td>AGG</td>
<td>0.834</td>
<td>0.606</td>
</tr>
</tbody>
</table>
<p>Il y a à mon avis quelques informations utiles à tirer de ces résultats, qui n&#8217;ont pas vocation à présenter des index de performance pure, mais bien à comparer les deux versions dans des situations analogues. Considérons le format GIF comme celui de référence car impactant le moins de temps final de création de l&#8217;image.</p>
<p>Premièrement, on note une perte de performances légère (moins de 10 %) entre la version 5.2 et la nouvelle version 5.4 en GIF. <a href="http://n2.nabble.com/mapserver-5.4-beta-performance-test-tt2563067.html#a2563758" target="_blank">Paul Ramsey m&#8217;a expliqué</a> que c&#8217;est dû au passage à un curseur texte pour parcourir la base de données en lieu et place du précédent curseur binaire, plus performant certes, mais beaucoup plus difficile à maintenir et à utiliser dans le code car devant être manipulé au sein de transactions (et je veux bien le croire&#8230;).</p>
<p>Deuxièmement, on note toujours l&#8217;avantage significatif du shapefile, a fortiori quand il est indexé. Les modifications indiquées ci-dessus portent le ratio à 1.5 avec un Shapefile standard et à plus de 2 avec un fichier .qix. On peut en conclure que pour obtenir les meilleures performances, c&#8217;est cette association SHP + QIX + GIF qu&#8217;il faut choisir.</p>
<p>Cependant le rapport s&#8217;inverse avec les autres formats, comme si le nouvel handicap de l&#8217;accès à Postgis était compensé par une meilleure prise en charge du PNG et de l&#8217;AGG/PNG. C&#8217;est avec ce dernier choix, l&#8217;anticrénelage AGG, que l&#8217;amélioration est la plus significative, preuve s&#8217;il en fallait que Thomas Bonfort (créateur et mainteneur de l&#8217;intégration AGG dans MapServer) n&#8217;aura pas fait le déplacement à Toronto pour rien. Mais ce que je ne comprends pas, c&#8217;est qu&#8217;une image PNG ou AGG semble mieux bénéficier des données indexées (Postgis ou qix) que d&#8217;un simple shapefile. Thomas, si tu lis ces lignes&#8230;<br />
In fine, 20 % de mieux pour le couple le plus sexy (PostGIS + AGG), c&#8217;est une vraie bonne nouvelle.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.neogeo-online.net/blog/archives/170/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>En français s&#039;il vous plaît</title>
		<link>http://www.neogeo-online.net/blog/archives/156/</link>
		<comments>http://www.neogeo-online.net/blog/archives/156/#comments</comments>
		<pubDate>Mon, 16 Mar 2009 22:05:04 +0000</pubDate>
		<dc:creator>Guillaume</dc:creator>
				<category><![CDATA[News of the GeoWorld]]></category>
		<category><![CDATA[Mapserver]]></category>
		<category><![CDATA[PostGIS]]></category>

		<guid isPermaLink="false">http://www.neogeo-online.net/?p=156</guid>
		<description><![CDATA[Une fois n&#8217;est pas coutume, la parole de l&#8217;oracle de Victoria nous est délivrée directement dans notre langue, ce qui nous permet de savourer un peu mieux la pertinence de ses analyses&#8230; Et il y en aura encore la semaine prochaine.]]></description>
			<content:encoded><![CDATA[<p>Une fois n&#8217;est pas coutume, la parole de <a title="Le blog de Paul Ramsey" href="http://blog.cleverelephant.ca/" target="_blank">l&#8217;oracle de Victoria</a> nous est délivrée directement dans notre langue, ce qui nous permet de savourer un peu mieux <a href="http://francais.directionsmag.com/articles.php?article_id=3068" target="_blank">la pertinence de ses analyses</a>&#8230; Et il y en aura encore la semaine prochaine.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.neogeo-online.net/blog/archives/156/feed/</wfw:commentRss>
		<slash:comments>0</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>des trous dans vos index GiST ?</title>
		<link>http://www.neogeo-online.net/blog/archives/125/</link>
		<comments>http://www.neogeo-online.net/blog/archives/125/#comments</comments>
		<pubDate>Sun, 16 Nov 2008 14:52:30 +0000</pubDate>
		<dc:creator>Guillaume</dc:creator>
				<category><![CDATA[Bases de données]]></category>
		<category><![CDATA[PostGIS]]></category>

		<guid isPermaLink="false">http://www.neogeo-online.net/?p=125</guid>
		<description><![CDATA[Paul Ramsey nous fait part d&#8217;un bug affectant les implémentations GiST des dernières versions de PostgreSQL (8.1.14, 8.2.10 et 8.3.4). Lors de la suppression d&#8217;un enregistrement, la suppression de son entrée dans l&#8217;index affecte en fait un autre item, ce qui, sans supprimer la donnée, la rend invisible pour toute requête effectuée sur la base [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.cleverelephant.ca/2008/11/postgresql-835-important-upgrade.html" target="_blank">Paul Ramsey nous fait part</a> d&#8217;un bug affectant les implémentations GiST des dernières versions de PostgreSQL (8.1.14, 8.2.10 et 8.3.4). Lors de la suppression d&#8217;un enregistrement, la suppression de son entrée dans l&#8217;index affecte en fait un autre item, ce qui, sans supprimer la donnée, la rend invisible pour toute requête effectuée sur la base de l&#8217;index GiST. GiST est l&#8217;index spatial utilisé notamment sur les colonnes géométriques, pour préalablement filtrer les objets à requêter en fonction de leur bounding box. Ce bug peut donc fortement affecter les résultats de requêtes géographiques. Il est corrigé dans la toute dernière version <a href="http://www.postgresql.org/download/" target="_blank">8.3.5</a> (c&#8217;est bien de PostgreSQL qu&#8217;il s&#8217;agit, et non de PostGIS qui ne fait qu&#8217;exploiter ce type d&#8217;index).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.neogeo-online.net/blog/archives/125/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gdal et Proj compatibles Lambert 93</title>
		<link>http://www.neogeo-online.net/blog/archives/119/</link>
		<comments>http://www.neogeo-online.net/blog/archives/119/#comments</comments>
		<pubDate>Mon, 13 Oct 2008 11:05:08 +0000</pubDate>
		<dc:creator>Guillaume</dc:creator>
				<category><![CDATA[News of the GeoWorld]]></category>
		<category><![CDATA[GDAL]]></category>
		<category><![CDATA[GeoPortail]]></category>
		<category><![CDATA[PostGIS]]></category>
		<category><![CDATA[Proj]]></category>

		<guid isPermaLink="false">http://www.neogeo-online.net/?p=119</guid>
		<description><![CDATA[Les récents efforts de l&#8217;IGN dans la mise à niveau des bibliothèques OpenSource Proj et GDAL permettent d&#8217;utiliser ces outils pour passer de NTF à Lambert 93. L&#8217;IGN a notamment intégré une grille de transformation NTF -&#62; RGF93 utilisable avec Proj, un script de reprojection de dalles raster pour GDAL et surtout un référentiel complet [...]]]></description>
			<content:encoded><![CDATA[<p>Les <a href="http://lambert93.ign.fr/index.php?id=30#c130" target="_blank">récents efforts</a> de l&#8217;IGN dans la mise à niveau des bibliothèques OpenSource Proj et GDAL permettent d&#8217;utiliser ces outils pour passer de NTF à Lambert 93. L&#8217;IGN a notamment intégré une grille de transformation NTF -&gt; RGF93 utilisable avec Proj, un <a href="http://lambert93.ign.fr/fileadmin/files/script_tile_orthos.zip" target="_blank">script de reprojection de dalles raster pour GDAL</a> et surtout un <a title="Le référentiel IGN" href="http://lambert93.ign.fr/fileadmin/files/IGNF" target="_blank">référentiel complet</a> des systèmes de coordonnées qu&#8217;on peut croiser dans nos régions.</p>
<p>Ce référentiel utilise un nouveau namespace, c&#8217;est-à-dire qu&#8217;il se situe au même niveau que celui de l&#8217;EPSG. Cela pose quelques problèmes, puisque MapServer par exemple ne prévoit que de rechercher le namespace epsg. Une projection définie par &laquo;&nbsp;+init=IGNF:LAMBE&nbsp;&raquo; ne sera donc pas interprétée comme du Lambert Etendu, mais fera planter MapServer. Pour pallier ce manque, et en attendant qu&#8217;une prochaine version de MapServer intègre cette modification, une <a title="MapServer 5.0.0. IGN" href="http://lambert93.ign.fr/fileadmin/files/mapserver-5.0.0-ign.tar.gz" target="_blank">version custom IGN de MapServer 5.0.0. est disponible</a>. On peut lui parler en IGNF sans la vexer. Comme me le rappelait Gilles Martinoty, chef de projet Lambert 93 à l&#8217;IGN, ce nouveau registre garantit traçabilité et fiabilité des paramètres puisqu&#8217;il est fourni par le Service de Géodésie de l&#8217;IGN, responsable des systèmes géodésiques français.</p>
<p>En outre, ce registre comporte aussi la description des projections utilisées par le Géoportail, ce qui peut permettre d&#8217;intégrer ses propres couches ainsi reprojetées à une application utilisant l&#8217;API Géoportail (en 800 x 600, et à raison de 10000 tuiles par jour et par clé selon les <a href="http://lambert93.ign.fr/fileadmin/files/mapserver-5.0.0-ign.tar.gz" target="_blank">nouvelles conditions d&#8217;utilisation</a>). On y apprend que la projection utilisée est une <a href="http://fr.wikipedia.org/wiki/Projection_cylindrique_%C3%A9quidistante" target="_blank">projection équirectangulaire</a>, dont seul le parallèle de référence change pour les diverses zones représentées (Métropole, DOM, TOM et autres&#8230;)</p>
<p>A noter que le registre IGNF existe aussi pour <a href="http://lambert93.ign.fr/fileadmin/files/IGNF-spatial_ref_sys.sql" target="_blank">PostGIS</a> (469 injectées dans la table spatial_ref_sys) et pour <a href="http://lambert93.ign.fr/fileadmin/files/IGNF-qgis.sql">QGis</a>. On dit merci qui ?</p>
<pre>
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.neogeo-online.net/blog/archives/119/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Comparatif de bases de données spatiales.</title>
		<link>http://www.neogeo-online.net/blog/archives/110/</link>
		<comments>http://www.neogeo-online.net/blog/archives/110/#comments</comments>
		<pubDate>Sun, 20 Jul 2008 16:37:31 +0000</pubDate>
		<dc:creator>Guillaume</dc:creator>
				<category><![CDATA[Bases de données]]></category>
		<category><![CDATA[PostGIS]]></category>

		<guid isPermaLink="false">http://www.neogeo-online.net/?p=110</guid>
		<description><![CDATA[BostonGIS propose une petite synthèse sur les fonctionnalités de SQL Server, MySQL et PostGIS. On y voit que seul PostGIS permet de réaliser du référencement linéaire, pourtant bien utile dans les applications de localisation. via Planet Geospatial]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.bostongis.com/" target="_blank">BostonGIS</a> propose une <a href="http://www.bostongis.com/PrinterFriendly.aspx?content_name=sqlserver2008_postgis_mysql_compare" target="_self">petite synthèse sur les fonctionnalités de SQL Server, MySQL et PostGIS</a>. On y voit que seul PostGIS permet de réaliser du référencement linéaire, pourtant bien utile dans les applications de localisation.</p>
<p>via <a href="http://www.planetgs.com/" target="_blank">Planet Geospatial</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.neogeo-online.net/blog/archives/110/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Une brève histoire de PostGIS</title>
		<link>http://www.neogeo-online.net/blog/archives/82/</link>
		<comments>http://www.neogeo-online.net/blog/archives/82/#comments</comments>
		<pubDate>Sun, 10 Feb 2008 14:50:29 +0000</pubDate>
		<dc:creator>Guillaume</dc:creator>
				<category><![CDATA[Bases de données]]></category>
		<category><![CDATA[PostGIS]]></category>

		<guid isPermaLink="false">http://www.neogeo-online.net/archives/82/</guid>
		<description><![CDATA[Paul Ramsey, de Refractions Research, profite de la mise à jour du site web consacré à PostGIS pour nous livrer une brève histoire de PostGIS. Intéressant et enrichissant de constater le succès de cette solution phare de l&#8217;OpenSource geospatial en si peu de temps. Les prémices du projet datent de mai 2001 (version 0.1 le [...]]]></description>
			<content:encoded><![CDATA[<p>Paul Ramsey, de <a href="http://postgis.refractions.net/" target="_blank">Refractions Research</a>, profite de la mise à jour du site web consacré à <a href="http://postgis.refractions.net/" target="_blank">PostGIS</a> pour nous livrer une <a href="http://www.refractions.net/products/postgis/history/" target="_blank">brève histoire de PostGIS</a>.  Intéressant et enrichissant de constater le succès de cette solution phare de l&#8217;OpenSource geospatial en si peu de temps. Les prémices du projet datent de mai 2001 (version 0.1 le 31 Mai), mais il faut attendre la version 0.8, début 2004, pour voir intégrées les projections, l&#8217;indexation GIST (déjà dans la 0.7) et surtout les fameuses JTS (Java Topology Suite) dans leur version C++ dénommée GEOS, ce qui en fait enfin un SGBD spatial totalement opérationnel. Depuis ? PostGIS est devenue la référence dans le monde des bases de données spatiales, du fait de son coût et de sa formidable interopérabilité. L&#8217;industrie SIG ne s&#8217;y est pas trompée puisque les &laquo;&nbsp;passerelles&nbsp;&raquo; vers PostGIS ont fleuri ces dernières années  (dans FME, Geoconcept 6, et même ESRI, qui a pourtant son propre SGBD spatial). Belle performance pour un produit de moins de 7 ans d&#8217;âge (même pas le temps de faire un bon whisky ça !).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.neogeo-online.net/blog/archives/82/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>shp2pgsql vs ogr2ogr</title>
		<link>http://www.neogeo-online.net/blog/archives/74/</link>
		<comments>http://www.neogeo-online.net/blog/archives/74/#comments</comments>
		<pubDate>Mon, 14 Jan 2008 15:49:56 +0000</pubDate>
		<dc:creator>Guillaume</dc:creator>
				<category><![CDATA[Bases de données]]></category>
		<category><![CDATA[GeoHacks]]></category>
		<category><![CDATA[OGR]]></category>
		<category><![CDATA[PostGIS]]></category>

		<guid isPermaLink="false">http://www.neogeo-online.net/archives/74/</guid>
		<description><![CDATA[Quand on veut intégrer un jeu de données à PostGis, on peut soit utiliser le module de conversion de shape intégré à postgis (shp2pgsql), soit passer par l&#8217;excellent utilitaire ogr2ogr qui fait partie de GDAL. Si chacun des deux logiciels génère correctement les tables demandées, on peut privilégier l&#8217;un ou l&#8217;autre en fonction du contexte [...]]]></description>
			<content:encoded><![CDATA[<p>Quand on veut intégrer un jeu de données à PostGis, on peut soit utiliser le module de conversion de shape intégré à postgis (shp2pgsql), soit passer par l&#8217;excellent utilitaire ogr2ogr qui fait partie de GDAL. Si chacun des deux logiciels génère correctement les tables demandées, on peut privilégier l&#8217;un ou l&#8217;autre en fonction du contexte d&#8217;utilisation :</p>
<ul>
<li>Si les données sources ne sont pas en shapefile, mais en .TAB par exemple, préférer ogr2ogr à  un passage par un shapefile intermédiaire, car cela permettra de préserver les noms de champs longs, systématiquement tronqués à 10 caractères lors d&#8217;un passage en DBF (avec un shapefile donc).</li>
<li>Si l&#8217;identifiant de la table à créer DOIT être &laquo;&nbsp;gid&nbsp;&raquo; pour correspondre à des requêtes existantes, prendre shp2pgsql car la modification du nom de la clé primaire par défaut dans ogr (nommée ogc_fid) passe par des variables d&#8217;environnement de postgresql, pas très pratiques.</li>
<li> pour transcrire directement des données 3D en 2D, utiliser ogr2ogr avec l&#8217;option -lco DIM=2</li>
<li>pour spécifier la projection de la nouvelle table, les deux logiciels sont équivalents, mais pour PROJETER les données à la volée (les stocker dans un autre système de projection que celui du fichier source) ogr2ogr est la seule solution.</li>
<li>chacun propose aussi les options nécessaires pour le mode de &laquo;&nbsp;création&nbsp;&raquo; : création réelle, remplacement, mise à jour. A noter que l&#8217;option spécifique d&#8217;ogr pour postgresql (-lco OVERWRITE=yes) ne fonctionne pas sans l&#8217;option générale -overwrite</li>
<li>Seul shp2pgsql permet de spécifier facilement l&#8217;encodage de la donnée source (ASCII par défaut) à l&#8217;aide de l&#8217;option -W. Ogr utilise la variable d&#8217;environnement PG_CLIENT_ENCODING, et c&#8217;est donc par là qu&#8217;il faut passer pour intégrer des données particulières. Ca marche mais c&#8217;est moins pratique.</li>
<li>Création d&#8217;un index spatial : seul shp2pgsql propose cette option. L&#8217;utilisation d&#8217;ogr doit donc être suivie d&#8217;une requête SQL spécifique pour le créer. A ne pas négliger car la présence d&#8217;un tel index optimise toutes les requêtes exploitant le champ géométrique.</li>
<li>Conversion des champs : par défaut, ogr2ogr crée des champs à l&#8217;identique du DBF. Donc si vous aviez un champ type caractère de taille 10, il en résultera un CHAR(10) dans Postgresql, rempli de blancs quand le contenu du champ n&#8217;est pas suffisamment long. Ca peut créer de mauvaises surprises lors de requêtes&#8230; Donc ajouter l&#8217;option -lco PRECISION=NO si c&#8217;est le cas.</li>
</ul>
<p>Pour compléter ce bref comparatif, voici des requêtes types pour chacun des logiciels :</p>
<p>shp2pgsql -s 27572 -c -D -i -I nom_du_shape nom_de_la_table &gt; nom_fichier.sql</p>
<p>A noter que shp2pgsql est en fait un transcripteur de shape en SQL. Il faut donc ensuite faire lire ce résultat  à postgresql : psql -d nom_de_la_base -f nom_fichier.sql<br />
Sous linux, les deux commandes peuvent se piper facilement :  shp2pgsql -s 27572 -c -D -i -I nom_du_shape nom_de_la_table | psql -d nom_de_la_base<br />
Dans cet exemple, il est demandé de créer une table en Lambert II étendu (SRID 27572), en mode création (option -c), en mode COPY (-D) nettement plus rapide que des INSERT, mais qui pose parfois problème avec des caractères spéciaux, de mettre les champs de type integer en mode INT4 (option -i, à ne pas utiliser si les données dépassent cette capacité), et enfin de créer un index spatial (-I) ce qui s&#8217;avère souvent indispensable. A noter aussi une option intéressante (-S) pour intégrer les géométries en mode simple et non multiple (pour un shapefile contenant des lignes, un table de MULTILINESTRING est sinon créée par défaut). Il faut cependant s&#8217;assurer auparavant que tous les objets du shapefile ont bien des géométries simples.</p>
<p>La syntaxe d&#8217;ogr2ogr est un peu plus verbeuse, rebutante même de prime abord.  L&#8217;équivalent de la requête précédente donne en effet :</p>
<p>ogr2ogr -overwrite -a_srs &laquo;&nbsp;EPSG:27572&#8243; -f PostgreSQL PG:&nbsp;&raquo;host=serveur user=postgres password=postgres dbname=nom_base&nbsp;&raquo; fichier_shape.shp -lco LAUNDER=yes -lco DIM=2 -lco GEOMETRY_NAME=the_geom -lco PRECISION=NO -nln nom_table<br />
dans laquelle il est spécifié :<br />
-overwrite pour remplacer la table si elle existe<br />
-a_srs &laquo;&nbsp;EPSG:27572&#8243; : pour indiquer que la table est en Lambert II étendu<br />
-f PostgreSQL + chaîne de connexion pour spécifier la base cible<br />
ensuite viennent les options spécifiques à l&#8217;exportation vers postgreSQL :<br />
-lco LAUNDER=yes : permet de corriger les noms des champs pour les rendre compatibles avec postgresql sans utilisation de  guillemets dans les requêtes<br />
-lco DIM=2 : nombre de dimensions (x,y,z,m, donc 4 maximum pour un shapefile. Mais ogr ne gère que les trois premières). En spécifiant 2 on contraint la table cible à être en 2D.<br />
-lco GEOMETRY_NAME = the_geom : indique le nom à donner à la colonne géométrique<br />
-lco PRECISION=NO pour avoir des VARCHAR plutôt que des CHAR dans la table cible<br />
-nln nom_table: option New Layer Name (nln) pour spécifier le nom à donner à la table cible, si celui-ci est différent du nom du fichier shape.</p>
<p>Les valeurs par défaut des deux logiciels (pour le nom du champ géométrique par exemple : the_geom dans shp2pgsql, wkb_geometry dans ogr2ogr) impose la plus grande vigilance dans leur manipulation conjointe pour alimenter une base de données. Sans oublier de faire suivre tout import ogr par la création d&#8217;un index spatial sur la nouvelle table.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.neogeo-online.net/blog/archives/74/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>

