[OSM-talk-fr] Faire son plan statique
yvecai
yvecai at gmail.com
Dim 21 Nov 08:10:13 UTC 2010
> C'est à dire que faire un rendu statique style Mapnik/OSM à partir
> d'un fichier .osm, ça ne va pas marcher?
>
Si tu regarde bien comment est fait la feuille de stylée de la slippy
map, par exemple pour les barrères:
<Style name="barriers">
<Rule>
<Filter>*(([natural]='hedge') or ([barrier]='hedge'))*</Filter>
<MaxScaleDenominator>12500</MaxScaleDenominator>
<LineSymbolizer>
<CssParameter name="stroke">rgb(174,209,160)</CssParameter>
<CssParameter name="stroke-width">3</CssParameter>
</LineSymbolizer>
</Rule>
Et plus loin:
<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">
<StyleName>cliffs</StyleName>
<StyleName>*barriers*</StyleName>
<Datasource>
<Parameter name="dbname">gis</Parameter>
<Parameter name="estimate_extent">false</Parameter>
<Parameter name="extent">-20037508,-19929239,20037508,19929239</Parameter>
<Parameter name="host">localhost</Parameter>
<Parameter name="password">mapnik</Parameter>
<Parameter name="port">5432</Parameter>
<Parameter name="table">
* (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*
</Parameter>
<Parameter name="type">*postgis*</Parameter>
<Parameter name="user">mapnik</Parameter>
</Datasource>
</Layer>
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 à :* (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*.*
*Puis, pour ces éléments, pour ceux qui obeissent au filtre
*(([natural]='hedge') or ([barrier]='hedge'))*, 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).
Dans ce cas là, pour utiliser un fichier osm plutot qu'une base de
donnée, celà devrait marcher.
Celà donnerai:
<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">
<StyleName>cliffs</StyleName>
<StyleName>*barriers*</StyleName>
<Datasource>
<Parameter name="file">monfichier.osm</Parameter>
<Parameter name="type">*osm*</Parameter>
</Datasource>
</Layer>
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'
En revanche, pour le style Power_tower, cela ne marche pas car il n'y a
pas de section <Filter> dans le style.
<Style name="power_towers">
<Rule>
<MaxScaleDenominator>50000</MaxScaleDenominator>
<PointSymbolizer
file="/home/yves/mapnik/svn2010-09-06/symbols/power_tower.png"
type="png" width="7" height="7"></PointSymbolizer>
</Rule>
</Style>
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.
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">.
A moins de tout ré-écrire, pas de solution facile. Mettre en place une
base donnée postgres c'est bien plus facile !
Yves
-------------- section suivante --------------
Une pièce jointe HTML a été nettoyée...
URL: <http://lists.openstreetmap.org/pipermail/talk-fr/attachments/20101121/25e3c796/attachment.htm>
Plus d'informations sur la liste de diffusion Talk-fr