Mapnik - ein Nachruf

Nachdem ich extrem schlechte Erfahrungen mit Mapnik3 gemacht habe (es ist recht fehlerhaft), habe ich mal mit ein paar Leuten erörtert, was da wohl los ist.

Problem wohl, dass Mapbox die klassischen kacheln nicht weiter haben möchte, sondern das Rendering in den Browser verlagern will. Ein andere Punkt ist, dass die C++ Codebasis einfach nicht mehr so gut tragbar ist, wie moderne Javascript-Strukturen. Mapnik wird sich also erstmal nicht erholen.

Für das Labeling ist Version 3 nicht mehr nutzbar. Durch die Umstellung der Polygonzug-Richtung ist der Offset-Algorithmus kaputt gegangen. Texte, die über mehrere Zeilen gehen (Zeilenumbruch usw.) funktionieren jetzt nicht mehr und werden total chaotisch dargestellt (verschoben). Da sich der Offset-Algorithmus wohl im AGG-Rendering-Teil versteckt, kann den niemand ohne AGG-Vertix-Kenntnisse korrigieren. Die Leute, die es können, arbeiten bei Mapbox, sind anderweitig beschäftigt oder siehe unten.

Mapserver hängt leider noch in vielen Teilen dahinter. Hoffentlich können die Entwickler aufholen. Solange muss ich meinen Mapnik2-Harfbuzz-Fork weiter verwenden.

Achja, der Grund, wieso man es im AGG macht ist übrigens Performance. Ein Entwickler HAT wohl einen neuen Offset-Algorithmus, aber dieser ist für Tiles wohl nicht schnell genug. Man möchte wohl nicht in Benchmarks schlecht abschneiden und lässt das Ganze daher lieber Broken drin, damit es aus den Tests rausfällt.

Schade, schade. Mapnik war mal richtig toll.

Wo ist da der Zusammenhang zur Qualität von Mapnik3?

Gruß Klaus

Off-Topic: Ein Rendering im Client hat prinzipiell den Vorteil, dass die angelieferten Daten über sehr unterschiedliche Kartenstile dargestellt werden können.

Wieso seine Mitarbeiter für ein altes Projekt einsetzen, wenn das neue viel besser ist?

Soweit ich die Sache Verfolge geht das immer mehr Richtung “Vector Tiles”. Dabei holt sich der Client die Vektor-Daten einer Kachel und erledigt den Rest selber. Ist eigentlich das, was manche Android- und Mac-Apps bereits immer so machen.

Die Übertragungsraten und auch die Rechenleistung der Clients ist inzwischen so hoch, dass sowas zu verkraften ist.

Vorteile:

  • eigene Renderstyles auf dem Endgerät
  • eine lokale DB (im Extremfall der volle Planet) ist nicht notwendig
  • on the fly-rendering incl Rotationen
  • bei 2.5/3-D beliebige Blickwinkel aus verschiedenen Ansichten bis hin zu “Flügen”

Wenn die Doku nicht so lückenhaft wäre, hätte ich das längst schon mal ausprobiert.

In Endeffekt wird die Darstellung auf dem Endgerät dynamisch anstelle der statischen Mapnik-Tiles.

Daher verstehe und begrüsse ich diesen Schritt.

Gruss
walter

Tobias kommt halt stärker aus der “ich will schöne gedruckte Karten machen”-Ecke - da ist einem egal, ob irgendwelche Android-Apps irgendwas schön dynamisch je nach Tageszeit rendern können und ob man alles so drehen kann, dass die Fahrrichtung oben ist. Er will, dass es möglichst schön aussieht, egal ob es ne Stunde rechnet :wink: und fairerweise muss man sagen, ja, diese Art der Nutzung wird bei uns leider sehr stiefmütterlich behandelt (“was, Dir gefällt das nicht, dann änder doch die Farbe” oder “was, Du willst mehr Detail sehen, dann zoom halt rein”).

Aber Tobias soll sich nicht so aufregen und mal das Label-Placement von Mapbox-GL ausprobieren, dann wird er ich Mapnik3 zurückwünschen.

Bye
Frederik

Für Kontext:
https://github.com/mapnik/mapnik/issues/2937
https://github.com/mapnik/mapnik/issues/2952
https://github.com/mapnik/mapnik/issues/3149

Diffamier’ das nicht :slight_smile: Denn ich finde auch Webapping kann man schön gestalten. Ich habe meine Methode zur Abkürzung von Straßen edlich mal außerhalb von ArcGIS implementiert. Derzeit arbeite ich am “Spreizen” von Beschriftungen, funktioniert schon, leider halt nicht über mehrere Zeilen:

Das können Google und Bing nicht. Zur Erklärung: die grüne Schrift zeigt eine automatische Abkürzung des Labels, ohne die Schriftgröße oder den Buchstabenabstand zu ändern, obwohl der Maßstab geändert wurde. Normalerweise wäre das grüne Label überhaupt nicht mehr dargestellt worden.

Sehr schön! Das wäre übrigens auch ein tolles Argument, Mapper zu überzeugen, Abkürzungen tatsächlich (wie gewünscht) auszuschreiben … das Abkürzen könnte dann ja so, wo nötig, der Renderer übernehmen.

Der Sven (Geggus) hat einige Abkürzungen ja auch schon in den deutschen Stil eingebaut, z.B. Bgm für Bürgermeister und so. Durch ein vergangenes Projekt habe ich da schon ein wenig Gehirn reingesteckt und bastle mir das jetzt für Mapnik und Mapserver von der Seele. Leider mit leerem Magen, da die Mensa (heute ist Fisch-Tag), nichts mehr da hatte. Spitze.

Der deutsche Stil ist in dieser Hinsicht recht einfach gestrickt: “Wenn Länge>16 Buchstaben, ersetze Straße, Gasse, Platz, Sankt, Bürgermeister, Professor und Doktor”. Das läuft so nebenbei bei der Auswahl des Namens und Motivation dafür war auch, dass die “name:de (name)”-Labels häufig einfach zu lang wurden, um in kleine Altstadtgassen zu passen.

Deiner kann ja anscheinend statt “Länge>16?” nach “passt das in den gerenderten Weg?” fragen.
Ist das so? Patcht du dafür Mapnik und Mapserver?

Sowas wie “Ersetze Wilhelm-Dilthey-Straße durch W.-Dilthey-Str.” fände ich als generelle Regel schlecht, aber viel besser als gar nichts zu rendern. Und eine Abstufung “Probiere das erst ungekürzt, dann mit Wilhelm-Dilthey-Str., dann mit W.-Dilthey-Str.” ist schon nett.

Grüße, Max

Für einen Kunden habe ich 2012/2013 ein komplexes Regelschema für eine Printkarte entwickelt und halte seitdem Vorträge zu dem Thema kreuz und quer durch Deutschland (auch einen Kurzvortrag auf der letzten FOSSGIS). Einige Dinger davon stehen im Netz, aber ich bin jetzt ert dabei, das vernünftig umzusetzen. Der größte Teil passiert im Pre-Processing mit Python. Ist natürlich auch möglich, alles in Echtzeit zu machen.

Da ein neuer Kunde eine Implementation in Mapnik und Mapserver wünscht, arbeite ich gerade daran. Sobald das fertig ist, veröffentliche ich alles. Aber wie gesagt: Mapnik3 macht vieles davon kaputt. Ich werde daher auf einem Mapnik2.5-Fork arbeiten.

Bin auf diesen etwas angestaubten Thread bei meiner Suche zum Thema Mapnik gestoßen.

Ich möchte gerne angepasste Tiles (PNG o. JPG) auf der Basis des deutschen Mapnik-Stils rendern.

Meine Intention wäre, dass sie mögl. “schön” aussehen.

Verstehe ich das richtig, dass Mapnik 3.x dafür nicht mehr so brauchbar ist?

Welche Version ist denn für sowas am besten geeignet?

Wenn du schon einen Stil hast, den du abändern willst, solltest du dich an den Renderer halten, für den er geschrieben wurde. Sonst musst du den Stil an den eigenen Geschmack anpassen und zusätzlich an den neuen Renderer (selbst wenns “kompatibel” auf der Packung stünde, irgendwas is ja immer…). Der deutsche Stil ist für Mapnik 2.

Ah, danke! Wenn ich das richtig sehe, ist das jetzt 2.2.0.

Werde dann mal versuchen, das in einer VirtualBox mit Ubuntu zum Laufen zu kriegen.

Habe hier https://github.com/mapnik/mapnik/wiki/UbuntuInstallation eine Anleitung gefunden.

Dort ist allerdings die Rede von “Ubuntu >= (11.10) and < (14.04)”. Darf es dann max. 13.10 sein?

Ohne es selbst ausprobiert zu haben… Da switch2osm auch eine Gebrauchsanleitung für 14.04 hat, wird es damit auch laufen. Ich denke auch mit neueren Versionen, hier reden Leute über 15.10 vielleicht steht was nützliches drin.

Der Tileserver für den deutschen Stil hat Mapnik 2.1.0. Aber ich glaube auf die Nachkommastellen kommts nicht so an.

Mit welcher Mapnik-Version wird denn die Standard-Karte auf openstreetmap.org gerendert?

Aber wenn jetzt Mapnik nur noch vectordaten liefern will und die daten der Client Renderd muss das ja auch ein Stück Software machen egal wo. Händy, Rechner Client. Und genau dafür habe ich Mapnik ja aus gesucht. Ich gebe zu mit Mapnik 3 habe ich auch so meiner Problem aber das hier zu lesen ist interessant.

Also mit was mache ich die Karten sichtbar als Bild ?

Hinweis: der Thread ist schon 3 Monate alt

ist mir neu - aber woher hast du die Info denn?

Für Vektordaten von MapBox gibt es auch die passende Client-Library.

Mapnik Vector Tiles gibt es schon länger, der Service dafür stirbt Ende Juli 2016: https://openstreetmap.us/~migurski/vector-datasource/
Den kannst du doch wohl nicht gemeint haben, oder?

Indem du zuerst mehr Infos lieferst.

Gruss
walter

Die Hauptkritikpunkte sind (aus Zeitgründen bzw. Auftragslage der Programmierer) leider noch nicht behoben.

Mapnik ist ja nun integraler Bestandteil von MapboxGL und Mapbox Studio. Dort verarbeitet es Vektordateien (TileJSON oder wie das von Mapbox auch heißt) zu SVG-Dateien, daher sind’s Vektoren. Natürlich kann man bei Mapbox aber weiterhin Rasterkacheln berechnen lassen, daher können wir weiterhin auf eine Pflege von Mapnik hoffen. Allerdings hat Mapserver sich in den letzten Versionen extrem gesteigert und dank einiger Tools, wie z.B. von Omniscale, lässt sich dieser auch einfacher ansprechen.

Ich verwende weiterhin Mapnik2 bzw. meinen Mapnik3-Fork und hoffe, dass die Probleme irgendwann aus der Welt sind.