Hallo,
wie ich ja in letzter Zeit schon geschrieben habe bin ich gerade dabei eine spezielle Hydrantenkarte für eine Feuerwehr zu erstellen. Ich habe dafür Mapnik2 auf einem Ubuntu-Server laufen.
Ich habe die OpenFireMap-Quellen erhalten und angefangen den Kartenstil etwas zu modifizieren bzw. zu erweitern (in Zoomstufe 18 soll außerdem der Druck und die Durchflussrate angegeben werden), aber irgendwie funktioniert es nicht so wirklich. Hier ein Auszug des Inhalts meiner osm.xml:
[...]
<Style name="hydrants">
[...]
<Rule>
&maxscale_zoom18;
&minscale_zoom18;
<Filter>[fh_t] = 'underground'</Filter>
<PointSymbolizer file="&symbols;/hydrant_u_17.png" allow-overlap="true"/>
<TextSymbolizer allow-overlap="true" fontset-name="bold-fonts" size="9" fill="#ff0000" dy="9" halo-radius="1" wrap-width="0">H[fh_d] \n [fh_p] bar \n [fh_f]</TextSymbolizer>
</Rule>
</Style>
<Layer name="hydrants" status="on" srs="&osm2pgsql_projection;">
<StyleName>hydrants</StyleName>
<Datasource>
<Parameter name="table">
(select way,name,emergency,amenity,ref,
coalesce("fire_hydrant:type",'_') as fh_t,replace(replace("fire_hydrant:diameter",'fixme',' '),'FIXME',' ') as fh_d,
"fire_hydrant:pressure" as fh_p,
case when "fire_hydrant:flow_capacity" similar to '[[:digit:]]+' then
round(cast("fire_hydrant:flow_capacity" as numeric)*60) || ' l/min' else null end as fh_f
from &prefix;_point
where ( emergency='fire_hydrant' or amenity='fire_hydrant' )
) as hydrants
</Parameter>
&datasource-settings;
</Datasource>
</Layer>
[...]
Das \n erzeugt laut Dokumentation einen Zeilenumbruch (wie auch in “richtigen” Programmiersprachen). Ich habe es auch schon ohne probiert, aber auch da funktioniert es nicht.
Wenn ich renderd mit der Option -f starte bekomme ich folgenden Fehler ausgegeben:
renderd[29494]: An error occurred while loading the map layer 'default': Failed to parse expression: "H[fh_d]" in TextSymbolizer in style 'hydrants' in map '/etc/mapnik-osm-data/osm.xml'
Anscheinend kann ich also bei nur eine Variable angeben, z.B. [fh_d] (so war es auch in der ursprünglichen OpenFireMap-Datei).
Kann mir jemand einen Tipp geben wo ich ansetzen muss damit ich die Sache zum Laufen kriege?
Vielen Dank schonmal,
Christoph