Mapnik: Erzeugen von kombinierter Beschriftung aus mehreren Feldern
Geschrieben von cziehr (Gast) am 03. Mai 2013 20:46:57: [flux]
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 <TextSymbolizer> 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
Antworten:
- Re: Mapnik: Erzeugen von kombinierter Beschriftung aus mehreren Feldern · wambacher (Gast) · 03.05.2013 20:57 [flux]
- Re: Mapnik: Erzeugen von kombinierter Beschriftung aus mehreren Feldern · cziehr (Gast) · 05.05.2013 16:47 [flux]
- Re: Mapnik: Erzeugen von kombinierter Beschriftung aus mehreren Feldern · wambacher (Gast) · 05.05.2013 18:09 [flux]
- Re: Mapnik: Erzeugen von kombinierter Beschriftung aus mehreren Feldern · cziehr (Gast) · 05.05.2013 19:11 [flux]
- Re: Mapnik: Erzeugen von kombinierter Beschriftung aus mehreren Feldern · wambacher (Gast) · 05.05.2013 20:06 [flux]
- Re: Mapnik: Erzeugen von kombinierter Beschriftung aus mehreren Feldern · cziehr (Gast) · 05.05.2013 20:09 [flux]
- Re: Mapnik: Erzeugen von kombinierter Beschriftung aus mehreren Feldern · wambacher (Gast) · 05.05.2013 20:16 [flux]