<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
<title></title>
</head>
<body text="#000000" bgcolor="#ffffff">
<blockquote cite="mid:4CE810E8.4040501@eric.sibert.fr" type="cite">C'est
à dire que faire un rendu statique style Mapnik/OSM à partir d'un
fichier .osm, ça ne va pas marcher? <br>
<br>
</blockquote>
Si tu regarde bien comment est fait la feuille de stylée de la slippy
map, par exemple pour les barrères:<br>
<tt> <Style name="barriers"><br>
<Rule><br>
<Filter><b>(([natural]='hedge') or
([barrier]='hedge'))</b></Filter><br>
<MaxScaleDenominator>12500</MaxScaleDenominator><br>
<LineSymbolizer><br>
<CssParameter
name="stroke">rgb(174,209,160)</CssParameter><br>
<CssParameter
name="stroke-width">3</CssParameter><br>
</LineSymbolizer><br>
</Rule></tt><br>
<br>
Et plus loin:<br>
<tt><br>
<Layer name="line features" srs="+proj=merc +a=6378137
+b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m
+nadgrids=@null +no_defs +over"><br>
<StyleName>cliffs</StyleName><br>
<StyleName><b>barriers</b></StyleName><br>
<Datasource><br>
<Parameter name="dbname">gis</Parameter><br>
<Parameter
name="estimate_extent">false</Parameter><br>
<Parameter
name="extent">-20037508,-19929239,20037508,19929239</Parameter><br>
<Parameter name="host">localhost</Parameter><br>
<Parameter name="password">mapnik</Parameter><br>
<Parameter name="port">5432</Parameter><br>
<Parameter name="table"><br>
<b> (select way,barrier,"natural",man_made from planet_osm_line
where barrier is not null or "natural" in ('hedge','cliff') or
man_made='embankment') as roads</b><br>
</Parameter><br>
<Parameter name="type"><b>postgis</b></Parameter><br>
<Parameter name="user">mapnik</Parameter><br>
</Datasource><br>
</Layer></tt><br>
<br>
Mapnik va faire le rendu du calque (layer) "line features". Pour celà,
il va sélectionner dans une base de donnée Postgres les élements
concernés grâce à :<b> (select way,barrier,"natural",man_made from
planet_osm_line where
barrier is not null or "natural" in ('hedge','cliff') or
man_made='embankment') as roads</b>.<b><br>
</b>Puis, pour ces éléments, pour ceux qui obeissent au filtre <b>(([natural]='hedge')
or ([barrier]='hedge'))</b>, mapnik leur applique le style "barriers"
et le style "cliff" déclaré plus haut, à savoir une ligne de 3 pixels
de couleur rgb(174,209,160).<br>
<br>
Dans ce cas là, pour utiliser un fichier osm plutot qu'une base de
donnée, celà devrait marcher.<br>
Celà donnerai:<br>
<br>
<tt> <Layer name="line features" srs="+proj=merc +a=6378137
+b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m
+nadgrids=@null +no_defs +over"><br>
<StyleName>cliffs</StyleName><br>
<StyleName><b>barriers</b></StyleName><br>
<Datasource>
<br>
<Parameter name="file">monfichier.osm</Parameter>
<br>
<Parameter name="type"><b>osm</b></Parameter>
<br>
</Datasource>
<br>
</Layer>
</tt><br>
<br>
Avec une Datasource de type 'osm', tu n'a pas de moyen de sélectionner
des éléments particuliers comme pour une datasource de type 'Postgis'<br>
<br>
En revanche, pour le style Power_tower, cela ne marche pas car il n'y a
pas de section <Filter> dans le style.<br>
<br>
<tt> <Style name="power_towers"><br>
<Rule><br>
<MaxScaleDenominator>50000</MaxScaleDenominator><br>
<PointSymbolizer
file="/home/yves/mapnik/svn2010-09-06/symbols/power_tower.png"
type="png" width="7" height="7"></PointSymbolizer><br>
</Rule><br>
</Style></tt><br>
<br>
Celà signifie que quelqu'ils soient, tout les points de ton fichier osm
seront rendu avec la petite croix symbolisant les pylones électriques,
car c'est dans la requete à la base de donner que le filtrage est fait:
(select way from planet_osm_point where power='tower') as power_towers.<br>
<br>
Le style s'appliquant à un élément donné est déterminé par la feuille
de style par le fitre <filter> de la section <style> ET par
la requête à la base de donnée postgres <Parameter name="table">.<br>
<br>
A moins de tout ré-écrire, pas de solution facile. Mettre en place une
base donnée postgres c'est bien plus facile !<br>
<br>
Yves<br>
<br>
</body>
</html>