<?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; OSM</title>
	<atom:link href="http://www.neogeo-online.net/blog/archives/tag/osm/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>Mapserver et GDAL, duo magique</title>
		<link>http://www.neogeo-online.net/blog/archives/283/</link>
		<comments>http://www.neogeo-online.net/blog/archives/283/#comments</comments>
		<pubDate>Tue, 20 Apr 2010 11:26:29 +0000</pubDate>
		<dc:creator>Guillaume</dc:creator>
				<category><![CDATA[GeoHacks]]></category>
		<category><![CDATA[Web mapping]]></category>
		<category><![CDATA[GDAL]]></category>
		<category><![CDATA[Mapserver]]></category>
		<category><![CDATA[OSM]]></category>
		<category><![CDATA[TileCache]]></category>
		<category><![CDATA[WMS]]></category>

		<guid isPermaLink="false">http://www.neogeo-online.net/?p=283</guid>
		<description><![CDATA[La dernière version de GDAL, la 1.7.1, améliore encore l&#8217;utilisation de sources de données distantes de type WMS. La documentation reste toutefois succinte et ne dévoile pas les possibilités offertes par les &#171;&#160;minidrivers&#160;&#187;. Rappelons le principe de base : il s&#8217;agit de pouvoir considérer une ressource distante (WMS, TMS) comme une source de données GDAL [...]]]></description>
			<content:encoded><![CDATA[<p>La dernière version de GDAL, la 1.7.1, améliore encore l&#8217;utilisation de sources de données distantes de type WMS. La <a href="http://www.gdal.org/frmt_wms.html" target="_blank">documentation</a> reste toutefois succinte et ne dévoile pas les possibilités offertes par les &laquo;&nbsp;minidrivers&nbsp;&raquo;. Rappelons le principe de base : il s&#8217;agit de pouvoir considérer une ressource distante (WMS, TMS) comme une source de données GDAL standard et de pouvoir la manipuler comme s&#8217;il s&#8217;agissait d&#8217;un raster en local. Ca peut déjà rendre service avec le WMS. Mais l&#8217;intérêt principal réside en sa capacité à exploiter des ressources tuilées. Qui n&#8217;a jamais été frustré de ne pas pouvoir exploiter un service WMS-C ou TMS car la projection proposée ne correspondait pas à son besoin ? Les &laquo;&nbsp;minidrivers&nbsp;&raquo; permettent de contourner cet obstacle. Comment ? Assez simplement en fait. GDAL va considérer le résultat que vous lui demandez (étendue géographique, projection&#8230;), récupérer les tuiles correspondantes, en découper le superflu,  les assembler en une seule image et reprojeter le tout dans ce que vous aurez demandé.  La configuration de l&#8217;accès au service se fait via un petit fichier XML <span style="text-decoration: line-through;">simple</span> à renseigner :</p>
<pre>&lt;GDAL_WMS&gt;
  &lt;Service name="WMS"&gt; --&gt; Description du type de service (WMS, TMS...)
    &lt;Version&gt;1.1.1&lt;/Version&gt; --&gt; Version du service
    &lt;ServerUrl&gt;http://labs.metacarta.com/wms-c/Basic.py?&lt;/ServerUrl&gt;
                    --&gt; Url d'accès au service
      &lt;Layers&gt;basic&lt;/Layers&gt; --&gt; Couches à récupérer
  &lt;/Service&gt;
  &lt;DataWindow&gt; --&gt; Configuration plus générale de la données distante
    &lt;UpperLeftX&gt;-180.0&lt;/UpperLeftX&gt; --&gt; Sur ces quatres lignes, la bbox
    &lt;UpperLeftY&gt;90.0&lt;/UpperLeftY&gt;
    &lt;LowerRightX&gt;180.0&lt;/LowerRightX&gt;
    &lt;LowerRightY&gt;-90.0&lt;/LowerRightY&gt;
    &lt;TileLevel&gt;19&lt;/TileLevel&gt; --&gt; Le nombre de niveaux dans le cache
    &lt;TileCountX&gt;2&lt;/TileCountX&gt; --&gt; Le nombre de tuiles en X à la plus
                                   faible résolution (niveau 0)
    &lt;TileCountY&gt;1&lt;/TileCountY&gt; --&gt; Le nombre de tuiles en Y à la plus
                                   faible résolution (niveau 0)
  &lt;/DataWindow&gt;
  &lt;Projection&gt;EPSG:4326&lt;/Projection&gt; --&gt; Projection de la source de données
  &lt;BlockSizeX&gt;256&lt;/BlockSizeX&gt; --&gt; Largeur des tuiles
  &lt;BlockSizeY&gt;256&lt;/BlockSizeY&gt; --&gt; Hauteur des tuiles
  &lt;BandsCount&gt;3&lt;/BandsCount&gt; --&gt; Canaux de couleur dans l'image
                                 (ici, 3 pour RGB)
&lt;/GDAL_WMS&gt;</pre>
<p>Avec ces informations, GDAL se retrouve capable de traiter la ressource distante comme une donnée locale. Mais ce n&#8217;est pas tout. MapServer pouvant utiliser un tel fichier de configuration XML comme source de données d&#8217;un LAYER, on peut connecter le service distant à un contexte MapServer particulier, et créer un service WMS non tuilé exploitant des données distantes tuilées. Pratique pour les outils SIG bureautiques par exemple, qui restent incapables d&#8217;exploiter le WMS-C !</p>
<p>La configuration d&#8217;un tel LAYER dans MapServer est assez basique :</p>
<pre>LAYER
 NAME test_wms_c
 DATA "wms_c.xml"
 METADATA
   "ows_title"    "Couche WMS-C réassemblée"
 END
 TYPE raster
 PROCESSING "OVERSAMPLE_RATIO=1" --&gt; Ne pas récupérer
                                     plus de tuiles que
                                     nécessaire (directive pour GDAL)
 PROCESSING "RESAMPLE=BILINEAR" --&gt; rééchantillonner l'image
 STATUS ON
 PROJECTION
 "init=epsg:4326"
 END
END</pre>
<p>On peut alors reprojeter la ressource initiale, ainsi que l&#8217;exploiter sur des échelles intermédiaires non prévues dans le tuilage. Attention quand-même à ne pas trop en faire, car les tuiles reprojetées et rééchantillonnées ne seront pas forcément très belles à voir. L&#8217;idéal reste quand-même de conserver au moins la projection initiale.</p>
<p>En résumé nous avons donc :</p>
<pre>  ressource distante tuilée, définie sur certaines échelles
                             et une projection spécifique
     |
     |
  GDAL : calcule les requêtes à effectuer,
         récupère les tuiles, les assemble,
         reprojette si demandé,
         découpe si nécessaire
     |
     |
  MapServer : publie la nouvelle ressource pseudo-locale
              en toute liberté (projection, échelles...) mais
              avec une qualité du rendu potentiellement
              dégradée (en fonction des transformations effectuées).</pre>
<p>Pour les obsessionnels, oui, on peut aussi mettre en cache la ressource MapServer locale. Mais pas besoin de TileCache pour cela. Les &laquo;&nbsp;minidrivers&nbsp;&raquo; intègrent un mécanisme de cache qui permet à GDAL de stocker localement les tuiles récupèrées et ainsi de pouvoir les réutiliser plus tard. Pour ce faire, il suffit de rajouter un bloc &laquo;&nbsp;cache&nbsp;&raquo; dans le fichier XML (voir la doc pour cela).</p>
<p>Mais je sens déjà la question venir chez tous les habitués des caches&#8230; Comment GDAL fait-il pour déterminer les résolutions et la grille à utiliser ? Ah, bonne question. Pour les résolutions, autant le dire tout de suite, il suppose unilatéralement que chaque niveau vaut la moitié du précédent, ou que chaque tuile se subdivise en quatre si vous préférez. C&#8217;est l&#8217;approche standard, mais si on vous demande du 25k, 20k,15k,10k,5k, ça ne va pas être possible.</p>
<p>Pour les limites de la grille, l&#8217;exemple plus haut se base sur une grille standard WGS sur le monde entier, et le TileCount permet de calculer l&#8217;emprise des tuiles du premier niveau, puis des niveaux suivants. Pour des emprises plus spécifiques, on peut aussi utiliser TileX et TileY, qui représentent des valeurs à ajouter pour gérer un décalage de la grille sans toucher à l&#8217;extent globale.</p>
<p>Les domaines d&#8217;application sont nombreux. On peut citer d&#8217;emblée :</p>
<ul>
<li>L&#8217;intégration de données tuilées dans des clients non prévus pour cela</li>
<li>La reprojection de données tuilées</li>
<li>L&#8217;utilisation de données tuilées à des zooms spécifiques non disponibles</li>
<li>L&#8217;alignement des grilles de deux ressources tuilées configurées différemment</li>
<li>L&#8217;exploitation en pur WMS de données lourdes à générer (Open Street Map par exemple)</li>
<li>Et sans doute bien d&#8217;autres problèmes d&#8217;exploitation que l&#8217;on rencontre.</li>
</ul>
<p>Ainsi, ce petit exemple illustre bien, une fois de plus, les étonnantes possiblités offertes par MapServer et GDAL quand ils sont utilisés de concert. Plus que le strict respect des normes, c&#8217;est la liberté qu&#8217;ils donnent aux utilisateurs pour résoudre leurs problèmes qui est précieuse.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.neogeo-online.net/blog/archives/283/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Cartes à la carte</title>
		<link>http://www.neogeo-online.net/blog/archives/199/</link>
		<comments>http://www.neogeo-online.net/blog/archives/199/#comments</comments>
		<pubDate>Thu, 10 Sep 2009 09:23:16 +0000</pubDate>
		<dc:creator>Guillaume</dc:creator>
				<category><![CDATA[News of the GeoWorld]]></category>
		<category><![CDATA[Django]]></category>
		<category><![CDATA[Mapnik]]></category>
		<category><![CDATA[OSM]]></category>

		<guid isPermaLink="false">http://www.neogeo-online.net/?p=199</guid>
		<description><![CDATA[Une petite équipe de contributeurs OpenStreetMap vient de mettre en ligne une killer-app cartographique nommée MapOSMatic. Il s&#8217;agit d&#8217;une application écrite en Django permettant de générer un plan de ville de son choix à partir des données OSM dont le rendu est effectué par Mapnik. Le résultat comprend également un index des noms de rues [...]]]></description>
			<content:encoded><![CDATA[<p><a title="A propos du projet" href="http://www.maposmatic.org/about/" target="_blank">Une petite équipe de contributeurs</a> OpenStreetMap vient de mettre en ligne <a title="MapOsMatic" href="http://www.maposmatic.org/" target="_blank">une killer-app cartographique</a> nommée MapOSMatic. Il s&#8217;agit d&#8217;une application écrite en Django permettant de générer un plan de ville de son choix à partir des données OSM dont le rendu est effectué par Mapnik.</p>
<div class="wp-caption aligncenter" style="width: 210px"><img title="Carte de Marseille" src="http://maposmatic.org/rendered//003121_2009-09-29_10-46_MarseilleCentreVille_small.png" alt="Carte de Marseille" width="200" height="127" /><p class="wp-caption-text">Carte de Marseille</p></div>
<p>Le résultat comprend également un index des noms de rues et est disponible aux formats PNG, SVG et PDF. La taille de la carte sera fonction de l&#8217;étendue de la commune puisque le tirage se fait à résolution constante, de l&#8217;ordre du 1/5000e.  La qualité dépend évidemment du contenu de la base OSM sur la ville demandée :</p>
<p style="text-align: center;"><img class=" aligncenter" title="Carte de passy" src="http://maposmatic.org/rendered//003102_2009-09-28_22-11_Moissac_small.png" alt="Carte de Moissac" /></p>
<p>ce qui ne peut qu&#8217;inciter de nouveaux contributeurs à participer, à l&#8217;aide du nouveau<a href="http://geotribu.net/node/155" target="_blank"> plug-in OSM de QGis 1.2</a> par exemple !</p>
<p>A titre personnel je trouve le quadrillage un peu épais, mais l&#8217;ensemble est très convaincant et rend accessible au plus grand nombre les données OSM. Bravo à toute l&#8217;équipe !</p>
]]></content:encoded>
			<wfw:commentRss>http://www.neogeo-online.net/blog/archives/199/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Le monde selon OSM</title>
		<link>http://www.neogeo-online.net/blog/archives/76/</link>
		<comments>http://www.neogeo-online.net/blog/archives/76/#comments</comments>
		<pubDate>Fri, 25 Jan 2008 11:29:28 +0000</pubDate>
		<dc:creator>Guillaume</dc:creator>
				<category><![CDATA[News of the GeoWorld]]></category>
		<category><![CDATA[OSM]]></category>

		<guid isPermaLink="false">http://www.neogeo-online.net/archives/76/</guid>
		<description><![CDATA[Une élégante animation multi-temporelle permet de constater les progrès accomplis par la couverture d&#8217;OpenStreetMap depuis 2005. Si certaines régions, notamment extrême-orientales, ont encore l&#8217;apparence nébuleuse et mystérieuse des Terrae Incognitae des anciens portulans, on notera la densité d&#8217;informations disponibles aux Etats-Unis et en Europe. La France cependant reste relativement peu couverte. Si quelque éditeur de [...]]]></description>
			<content:encoded><![CDATA[<p>Une élégante <a href="http://www.jabberworld.org/osm/" target="_blank">animation</a> multi-temporelle permet de constater les progrès accomplis par la couverture d&#8217;OpenStreetMap depuis 2005. Si certaines régions, notamment extrême-orientales, ont encore l&#8217;apparence nébuleuse et mystérieuse des Terrae Incognitae des anciens portulans, on notera la densité d&#8217;informations disponibles aux Etats-Unis et en Europe. La France cependant reste relativement peu couverte. Si quelque éditeur de données cartographiques françaises avait la bonne idée de faire un don à OSM, la situation pourrait évoluer rapidement. Le WMS c&#8217;est bien, mais OSM, c&#8217;est encore mieux !</p>
]]></content:encoded>
			<wfw:commentRss>http://www.neogeo-online.net/blog/archives/76/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>
	</channel>
</rss>

