Re: [Talk-de] Mapnik Hilfe

2012-01-27 Diskussionsfäden Sven Anders

Am 26.01.2012 20:56, schrieb Lars Lingner:

On 26.01.2012 20:23, Sven Anders wrote:
[...]


Das ist zwar bei 95% der Straßen der Fall, aber leider nicht immer.

Kann ich irgendwie eine Regel machen, die dann greift, wenn der Text
nicht geschrieben werden konnte.



Mir ist keine Möglichkeit in Mapnik bekannt, die das kann. Ich würde
versuchen das mit SQL abzufangen:

SELECT id
FROM planet_osm_line
WHERE way.length  $SCHWELLWERT_LAENGE AND character_length(name)
$SCHWELLWERT_NAME

Das kannst Du auch im Mapnik-Style verwenden und eine eigene Styleklasse
zuweisen die dann die reduzierte Schriftgröße benutzt.


Danke, das ist schon ein Ansatz, der aber vermutlich auch nicht 100%ig 
greift. Z.B. wenn dort unter der Straße eine U-Bahnlinie / Bahnstation 
geht und die Beschriftung wichtiger als der Straßenname ist und 
deshalb der Straßenname dort nicht hinpasst.





Oder gibt es zumindest die Möglichkeit sowas irgendwie in ein Logfile
zu schreiben, das ich weiß, welche Straßen fehlen?


Gute Frage. Ich kenne keine Möglichkeit Mapnik diese Info zu entlocken.



Ich werde mir mal den Mapnik Source Code genauer ansehen.

Schade ich hatte gehofft, es gäbe zu dem Thema schon eine Lösung.

Sven

___
Talk-de mailing list
Talk-de@openstreetmap.org
http://lists.openstreetmap.org/listinfo/talk-de


[Talk-de] Mapnik Hilfe

2012-01-26 Diskussionsfäden Sven Anders

Moin,
ich bin gerade dabei eine Landkarte von Hamburg für einen Ausdruck 
vorzubereiten (ca. 1x1m Papierkarte 300 dpi oder 400 dpi).


Als Grundlage habe ich den deutschen Style genommen[1]. Diese nach mit 
dem Script von Holger Schöner[2] den Scale angepasst,  so das die 
Schrift jetzt auch für den Ausdruck halbwegs okay ist, nach Mapnik2 
gewandelt (upgrade_map_xml.py), und ein paar Attribute rausgeworfen/ergänzt.


Mir ist klar, das es ein Spezialthema ist und ich werde sicherlich auch 
in der Mapnik-ML nach Lösungen fragen, wenn ich hier nicht weiter komme, 
aber ich denke das Ziel eine Papierkarte zu machen, haben ja 
wahrscheinlich doch einige Mapper.


== Problem 1: Straßennamen sind ein MUST ==

Ich möchte gerne, alle Hamburger Straßen auf der Landkarte lesbar haben.

Wenn ich nun eine Regel wie diese hier habe:

TextSymbolizer fill=rgb(0,0,0) fontset-name=book-fonts 
halo-radius=2 placement=line size=16 
spacing=300[name]/TextSymbolizer


Dann wird der Name nur dann geschrieben, wenn die Straße lang genug ist, 
das der Name dort auch rein passt.


Das ist zwar bei 95% der Straßen der Fall, aber leider nicht immer.

Kann ich irgendwie eine Regel machen, die dann greift, wenn der Text 
nicht geschrieben werden konnte.


Ich stell mir sowas vor:

IfOkayTextSymbolizer fill=rgb(0,0,0) fontset-name=book-fonts 
halo-radius=2 placement=line size=16 
spacing=300[name]/TextSymbolizerelse/
TextSymbolizer fill=rgb(0,0,0) fontset-name=book-fonts 
halo-radius=2 placement=line size=10 
spacing=300[name]/TextSymbolizerelse/
TextSymbolizer fill=rgb(0,0,0) fontset-name=bold-fonts 
halo-radius=2 minimum-distance=16 size=10 spacing=750[name]

else/
TextSymbolizer fill=rgb(0,0,0) fontset-name=bold-fonts 
halo-radius=2 placement=line size=10 
spacing=750[num]/TextSymbolizer

/IfOkay

Also, wenn ein Straßenname mit 16pt nicht passt, nimm einen mit 10pt und 
wenn das auch nicht passt, schreibe ihn in 10pt und wenn das auch nicht 
passt, schreibe den Straßennamen in der Nähe mit 16pt, und wenn das auch 
nicht geht, schreibe das Attribut num hin.


Oder gibt es zumindest die Möglichkeit sowas irgendwie in ein Logfile zu 
schreiben, das ich weiß, welche Straßen fehlen?


== Problem 2: Symbole in SVG ==

In Mapnik2 ist es ja anscheind möglich die Symbole in SVG einzubinden.

Das hätte den Vorteil, das sie schön skalieren, wenn man wie ich den 
Scale verändert.


Hat das schon jemand gemacht? Leider liegen im Symbols Verzeichnis, bis 
auf wenige Ausnahmen ja nur PNG Dateien.


Ich habe die eigentliche Quelle zwar schon gefunden [3][4], kapituliere 
aber gerade ein wenig vor der Menge der Symbole und der nicht 
einheitlichen Bennenung.


BTW: Gibt es eine einfache Möglichkeit festzustellen, welche Icons für 
meinen Ausschnitt wirklich genutzt werden?



== Problem 3: Marker ==

In die Landkarte sollen ca. 200 Numerierte Marker eingefügt werden. 
Dabei gibt es sicher den Fall, das ein paar Marker recht dicht 
beieinander liegen. Trotzdem soll möglichst der Punkt genau getroffen 
werden.


Meine Vorstellung wäre, das man den Punkt nur als Punkt einträgt und die 
Nummer dorthin schreibt, wo Platz ist und mit einer Linie verbindet.


Hat da jemand eine Idee, wie man das in Mapnik umsetzen kann?

Die Lage der Marker erfahre ich vermutlich erst recht spät im 
Herstellungsprozess, also wäre mir dort ein automatisches Verfahren hier 
sehr recht (ist fast zwingend).


Viele Grüße

Sven


[1] http://openstreetmap.de/germanstyle.html

[2] http://www.ancalime.de/download
/20100305_FOSSGIS_HolgerSchoener_KartenImDruck_Praesentation.pdf
[3] http://wiki.openstreetmap.org/wiki/Map_Icons
[4] http://www.sjjb.co.uk/mapicons/

___
Talk-de mailing list
Talk-de@openstreetmap.org
http://lists.openstreetmap.org/listinfo/talk-de


Re: [Talk-de] Mapnik Hilfe

2012-01-26 Diskussionsfäden Lars Lingner
On 26.01.2012 20:23, Sven Anders wrote:
[...]
 
 Das ist zwar bei 95% der Straßen der Fall, aber leider nicht immer.
 
 Kann ich irgendwie eine Regel machen, die dann greift, wenn der Text 
 nicht geschrieben werden konnte.
 

Mir ist keine Möglichkeit in Mapnik bekannt, die das kann. Ich würde
versuchen das mit SQL abzufangen:

SELECT id
FROM planet_osm_line
WHERE way.length  $SCHWELLWERT_LAENGE AND character_length(name) 
$SCHWELLWERT_NAME

Das kannst Du auch im Mapnik-Style verwenden und eine eigene Styleklasse
zuweisen die dann die reduzierte Schriftgröße benutzt.

 Oder gibt es zumindest die Möglichkeit sowas irgendwie in ein Logfile
 zu schreiben, das ich weiß, welche Straßen fehlen?

Gute Frage. Ich kenne keine Möglichkeit Mapnik diese Info zu entlocken.


Lars

___
Talk-de mailing list
Talk-de@openstreetmap.org
http://lists.openstreetmap.org/listinfo/talk-de