<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xml:base="http://prev.openstreetmap.fr"  xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
 <title>OpenStreetMap France - postgis</title>
 <link>http://prev.openstreetmap.fr/tags/postgis</link>
 <description>  </description>
 <language>fr</language>
<item>
 <title>Limites administratives simplifiées</title>
 <link>http://prev.openstreetmap.fr/blogs/cquest/limites-administratives-simplifiees</link>
 <description>&lt;div class=&quot;field field-name-body field-type-text-with-summary field-label-hidden&quot;&gt;&lt;div class=&quot;field-items&quot;&gt;&lt;div class=&quot;field-item even&quot; property=&quot;content:encoded&quot;&gt; &lt;p&gt;Depuis que l&#039;ensemble des limites administratives des communes françaises ont été tracées dans OpenStreetMap, un besoin d&#039;une version simplifiée de ces limites s&#039;est fait sentir.&lt;/p&gt;&lt;p&gt;En effet, le tracé fait par les contributeurs OpenStreetMap approche la précision du cadastre or pour de nombreux usages, ces tracés s&#039;avèrent trop lourds à manipuler.&lt;/p&gt;&lt;p&gt;Il n&#039;y a pas moins de 9 millions et demi de points dans ces 36680 polygones, ce qui représente un jeu de données de plus de 250Mo de data bien difficile à manipuler pour des besoins cartographiques à petite ou moyenne échelle.&lt;/p&gt;&lt;p&gt;Mais comment simplifier plus de 36000 polygones tout en gardant une cohérente topologique entre eux ?&lt;/p&gt;&lt;p&gt;postGIS possède bien une commande ST_SimplifyPreserveTopology, mais c&#039;est la topologie de chaque polygone qui est conservée sans cohérence entre 2 polygones ayant une frontière commune.&lt;/p&gt;&lt;p&gt;Du coup cela donne un résultat de ce type:&lt;/p&gt;&lt;p&gt;&lt;img style=&quot;display: block; margin-left: auto; margin-right: auto;&quot; src=&quot;/f/u62/SPT_no_topo_0.png&quot; alt=&quot;&quot; width=&quot;365&quot; height=&quot;358&quot; /&gt;&lt;/p&gt;&lt;p&gt;Ou voit que les polygones ne sont pas jointifs, ce qui bien sûr n&#039;est pas le but recherché, l&#039;objectif étant celui-ci:&lt;/p&gt;&lt;p&gt;&lt;img style=&quot;display: block; margin-left: auto; margin-right: auto;&quot; src=&quot;/f/u62/SPT_dept_sim.png&quot; alt=&quot;&quot; width=&quot;344&quot; height=&quot;332&quot; /&gt;&lt;/p&gt;&lt;p&gt;Il existe des outils en ligne comme mapshaper, mais je doute qu&#039;il puisse traiter autant de données d&#039;un coup (j&#039;avoue ne pas avoir testé).&lt;/p&gt;&lt;p&gt;Je voulais aussi produire un autre jeu de données, celui non pas des polygones des communes, mais des linéaires des frontières, afin à terme de les dessiner plus proprement dans le rendu &quot;FR&quot; car actuellement ces limites sont tracées polygone par polygone et donc tracées 2 fois dans la majorité des cas, ce qui empêche d&#039;avoir un pointillé cohérent, voire d&#039;autres tracés plus utiles qu&#039;un simple pointillé.&lt;/p&gt;&lt;p&gt;L&#039;objectif aussi est de faire tout ça avec postGIS... pour pouvoir l&#039;intégrer à la base osm2pgsql utilisée par le rendu FR.&lt;/p&gt;&lt;p&gt;Donc l&#039;idée est de :&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;font-size: 1em; line-height: 1.5385;&quot;&gt;recréer les linéaires des frontières&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-size: 1em; line-height: 1.5385;&quot;&gt;simplifier ces linéaires en vérifiant qu&#039;il n&#039;y a pas d&#039;intersection dûe à la simplification&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-size: 1em; line-height: 1.5385;&quot;&gt;moins simplifier ceux qui se croisent&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-size: 1em; line-height: 1.5385;&quot;&gt;recréer les polygones&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Après avoir démarré initialement en pur postgis, j&#039;ai voulu utiliser les extensions topologiques de postgis qui permettent de gérer ce genre de choses, mais les temps de traitement semblent bien trop long et inadaptés à un tel volume de géométries à simplifier. Retour donc à du pur postgis...&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;Je vous passe (pour l&#039;instant) &lt;a href=&quot;https://gist.github.com/cquest/66797473e5663bb4ba43&quot;&gt;les détails&lt;/a&gt;, mais ça y est, le résultat est atteint après un long week-end passé sur le sujet à fouiller la doc de postGIS, celle de postgres et aussi à corriger des limites de communes qui n&#039;étaient pas correctes (chevauchements sur des intersections, îles mises dans 2 communes différentes, etc).&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;Le résultat ce sont 3 fichiers shapefile contenant les polygones simplifiés des communes françaises avec 3 niveaux de simplification différents (10, 100 et 250) qui correspondent grosso-modo à une simplification à 5m, 50m et 100m (voir &lt;a href=&quot;http://osm13.openstreetmap.fr/~cquest/openfla/export/&quot;&gt;ici&lt;/a&gt;).&lt;/div&gt;&lt;div&gt;Du coup, on passe d&#039;un shapefile de 250Mo à 85, 22 et 12Mo.&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;Sur la todo list:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;extraction des limites linéaires&lt;/li&gt;&lt;li&gt;utilisation de ces limites linéaires dans le rendu FR&lt;/li&gt;&lt;li&gt;scripter le processus pour produire ces fichiers remis à jour quotidiennement&lt;/li&gt;&lt;li&gt;le généraliser pour d&#039;autres découpages...&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Ces fichiers simplifiés sont référencés sur data.gouv.fr: &lt;a href=&quot;http://www.data.gouv.fr/fr/dataset/decoupage-administratif-communal-francais-issu-d-openstreetmap&quot;&gt;http://www.data.gouv.fr/fr/dataset/decoupage-administratif-communal-fran...&lt;/a&gt;&lt;/p&gt;&lt;/div&gt; &lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;field field-name-field-tags field-type-taxonomy-term-reference field-label-above&quot;&gt;&lt;div class=&quot;field-label&quot;&gt;Tags:&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;field-items&quot;&gt;&lt;div class=&quot;field-item even&quot;&gt;&lt;a href=&quot;/tags/postgis&quot; typeof=&quot;skos:Concept&quot; property=&quot;rdfs:label skos:prefLabel&quot; datatype=&quot;&quot;&gt;postgis&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</description>
 <pubDate>Wed, 18 Dec 2013 11:22:55 +0000</pubDate>
 <dc:creator>cquest</dc:creator>
 <guid isPermaLink="false">18543 at http://prev.openstreetmap.fr</guid>
 <comments>http://prev.openstreetmap.fr/blogs/cquest/limites-administratives-simplifiees#comments</comments>
</item>
</channel>
</rss>
