Fußballfelder im Deutschen Mapnik-Style

…Ich konnte noch kein Fußballfeld in Brasilien finden, wo das mit den Linien geklappt hat. :frowning:

Der Farbe nach zu urteilen wird bei dem im Eingangspost verlinkten Stadion dem Tag surface=grass der Vorrang gegeben. Darum erscheint das Spielfeld als grüne Grasfläche und nicht als Fußballplatz.

Ich kann es mir nicht verkneifen: wahrscheinlich hat es in Brasilien weniger Nebel und die finden sich auf dem Fussballfeld auch ohne auf dem Navi eingezeichnete Linien zurecht.
Oder: In Brasilien ist sowieso jeder Platz ausreichender Grösse ein Fussballfeld, braucht also gar nicht als solches gekennzeichnet zu werden.

Etwas ernsthafter: Zu was dienen Karten: 1. Zum sich orientieren, 2. Um etwas (z.B. Eigentumsverhältnisse) zu registrieren. Bei beidem helfen die Linien des Fussballfeldes nicht, sie sind deshalb höchstens ein etwas zu gross geratenes Symbol für ein Fussballfeld und man kann durchaus der Meinung sein, dass die Linien verzichtbar sind.

Am surface=grass scheint es nicht zu liegen: Andere Fußballplätze mit surface=grass haben Linien…

Surface=grass ist sogar Vorraussetzung dafür, dass die Linien dargestellt werden.

Edit: Ah sorry hatte es falsch in Erinnerung… ja da ging es nur um die Farbe unter den linien. Aber grass verhindert auf jedenfall nicht die linien.

Also im deutschen Stil spielen noch die Innenwinkel, die Längen der Seiten und die Gesamtfläche eine Rolle, alles in bestimmten Toleranzintervallen.
Wer es genauer wissen will kann ja im dt. Stil nach sports-soccer suchen. Die Vorlage dafür stammt aus dem französischen Stil, der schon in cartocss vorliegt.

“Profi”-Tipp: am besten einen Platz bei dem es funktioniert per Copy und Paste an den Zielort verfrachten (sofern passend natürlich!) :sunglasses:

Es reicht sogar ein einfaches leisure=pitch. Mehr braucht es überhaupt nicht.

Ohne sport=* oder auf was spielst du an? Das würde mich sehr wundern, da pitch ja für sehr viele verschiedene Felder/Plätze steht. Tennis hat ja z.B. auch einen eigenen style.

sport=soccer oder tennis muss sein

Meine geometrische Vorstellungsfähigkeit ist gerade blockiert…

Könnte bitte jemand ohne Blockade mal im Stil ganz unten die Berechnung der Winkel dahingehend überprüfen, ob die auch mit negativen Breitengraden funktioniert?

Alternativ: Kennt jemand ein bemaltes Fußballfeld in Südafrika oder Australien? Vielleicht ist der Gegenbeweis leichter :wink:

Grüße, Max

Zumindest in Erlensee wird ein einfaches leisure=pitch ohne nichts bereits als Fußballfeld gerendet. Es sei denn ich übersehe etwas.

Da liegt noch ein leisure=stadium mit sport=soccer drunter oder drüber.

In Brasilien ist aber lat und lon negativ, in Australien nur lat. :sunglasses:

Man müsste also mal alle Quadanten checken:


lat  lon  Linien 
 +   +     yes
 +   -     yes
 -   +     yes
 -   -     yes

Hier ein Platz in Südamerika mit Linien:
http://openstreetmap.de/karte.html?zoom=17&lat=-33.39574&lon=-70.49996&layers=B000TT

Danke. Ich glaube, das war ein Holzweg…

Habs durchprobiert, 2 Felder, einmal links- und einmal rechtsdrehend in jedem Quadranten: Da werden 2 Winkel berechnet, angle_diff und angle. “angle_diff” ist richtig, damit wird ermittelt, ob das Ding ungefähr ein Rechteck ist. “angle” nimmt auf der Südhalbkugel merkwürdige Werte an, 270 z.B. Damit werden aber nur die Linien in die Ausrichtung des Spielfeldes gedreht, und ich kann mir nicht vorstellen, dass Mapnik mit “290° nach links drehen” Schwierigkeiten hätte.

Grüße, Max

Edit: Auch in Brasilien gibt es welche

Das scheint mir eher ein Zufallstreffer zu sein… :confused:
Gibt es auch ein recheckiges Spielfeld mit Linien in Brasilien?

Ich hab ein hübsch und ein weniger hübsch gerendertes gefunden. Allerdings geschätzt 20-30 unmarkierte. Hab allerdings nicht nachgesehen, ob da überall auch sport=* eingetragen ist.

Ihr könnt ja noch etwas mit Overpass Turbo rumspielen. Bei den Einstellungen unter Karte gilt es


http://{s}.tile.openstreetmap.de/tiles/osmde/{z}/{x}/{y}.png

als Kachelserver einzustellen. Abfrage mit:


(way({{bbox}})[leisure=pitch][sport=soccer][name];>;);out meta;

oder für “Name egal” einfach das [name] rauswerfen.

Da findet man recht fix einige Beispiele:

http://www.openstreetmap.org/way/231001446
http://www.openstreetmap.org/way/230996845
http://www.openstreetmap.org/way/197101255
http://www.openstreetmap.org/way/273618870
http://www.openstreetmap.org/way/231005583

Die Winkel lassen mir doch keine Ruhe…

Der Stil erkennt Fussballfelder unter anderem daran, dass der Winkel zwischen der ersten und der zweiten Linie ca. 90° beträgt. Dazu rechnet er mit st_azimuth die Winkel (a12 und a23) der beiden Linien gegen die Senkrechte aus, bildet die Differenz und nimmt dann den Betrag.

Bei einem Polygon aus (-2 -3) (-3 -2) (-2 -1) (-1 -2) geht das schief…

Die Winkel:

osm=> select degrees(st_azimuth(st_pointn(way2,1),st_pointn(way2,2))) as a12 , degrees(st_azimuth(st_pointn(way2,2),st_pointn(way2,3))) as a23 
           from (select ST_ExteriorRing('POLYGON((-2 -3,-3 -2,-2 -1,-1 -2,-2 -3))') as way2) as foo1;
 a12 | a23 
-----+-----
 315 |  45

Der Betrag (die Codestücke hier sind so ziemlich das gleiche wie im deutschen Stil)

osm=> select abs(a12-a23) as angle_diff,(a12+a23+90)/2 as angle  
                    from (select degrees(st_azimuth(st_pointn(way2,1),st_pointn(way2,2))) as a12 , degrees(st_azimuth(st_pointn(way2,2),st_pointn(way2,3))) as a23
                             from (select ST_ExteriorRing('POLYGON((-2 -3,-3 -2,-2 -1,-1 -2,-2 -3))') as way2) as foo1) as foo2;
 angle_diff | angle 
------------+-------
        270 |   225

Als Bild:

Allerdings ist dieser Fehler überall drin, wenn man irgendwo anfängt, wo die beiden Linien links und rechts der Senkrechten liegen, auch auf der Nordhalbkugel. Gibt es irgendeinen Grund, warum die Linien in Südamerika häufiger so liegen als in Europa? Z.B. weil ST_ExteriorRing() immer näher bei der Nulllinie anfängt, oder weil osm2pgsql Flächen so importiert? Falls das nicht so ist, ist zwar ein potentieller Fehler, aber keine Erklärung gefunden :wink:

Grüße, Max

Mit einem angle_diff von 270 wird da erstmal nichts angezeigt, der Winkel muss lt. Bedingung im Stil im Wertebereich 86 bis 94 (einschl.) liegen. Vielleicht müsste man für Werte x > 180° entsprechend mit 360° - x rechnen?

Auf jeden Fall hört sich das nach einem neuen Trac-Ticket (http://trac.openstreetmap.fr) für Komponente “style osmfr” und später auch für den deutschen Stil an.

Edit: Github-Ticket für den frz. Cartocss-Stil an: https://github.com/cquest/osmfr-cartocss