Neue Version 0.82 von OSM Composer

Hallo!

Der OSM Composer ist in der Version 0.82 verfügbar. Diese Version bringt einige grundlegende Features:

  • Es wird Kosmos als Renderer unterstützt. Damit kann für kleinere Gebiete eine Karte in ähnlichem Design zur Garminkarte als Bitmap erzeugt werden. Composer generiert die Renderregeln und stellt die OSM-Daten bereit. Kosmos rendert die Karte und kann u.a. ein schattiertes Relief hinzufügen.
  • Die Engine wurde wieder mal umgeschrieben. Ein neuer Caching-Mechanismus beschleunigt die Verarbeitung der OSM-Daten deutlich und erlaubt die Erstellung nahezu beliebig großer Karten ohne Verwendung einer Datenbank. Die Datenbankanbindung wurde deshalb auch gleich wieder ausgebaut. Alles was dafür nötig ist, ist Platz auf der Festplatte.
  • Der API-Download erkennt jetzt Segmente mit zu vielen Nodes, die vom Server abgelehnt werden, und teilt sie automatisch in kleinere auf. Dadurch kommt es bei zu großen Abschnitten nicht mehr zu Löchern in den Daten

Insgesamt enthält die Version über 30 Erweiterungen und Fixes. Die komplette Historie und den Download Link findet Ihr wie gewohnt im Wiki.
http://wiki.openstreetmap.org/wiki/DE:OSM_Composer#Download

Die Überarbeitung der Anleitung ist noch im Gang.

viel Spaß damit

            Nop

Danke!!!

Gruß
tippeltappel

Super Sache Nop, gehe ich recht in der Annahme, dass der Composer erst den RAM nutzt und erst wenn dieser nicht mehr reicht mit dem Cachen anfängt?

Noch eine Anmerkung. Evtl. wäre ein kleines Update-Tool sinnvoll, dass die alten Einstellungsdateien konvertiert. Bei mir sind bei dem Update alle Garmin-Namen weggefallen und auch der Katalog ist leer.

Dann hätte ich noch eine weitere Frage/Bitte. Hat es einen Grund, dass das Typ-File erst nach dem mkgmap-Aufruf erstellt wird bzw. wäre es möglich dies vor dem Aufruf von mkgmap zutun? Oder gibt es Abhängigkeiten, die das verhindern?

Nein. Composer legt den Cache immer auf der Platte ab und liest die benötigten Teile von dort wieder ein. Das hat den Vorteil, daß er ihn bei einem zweiten Lauf wiederverwenden und einen Arbeitsschritt überspringen kann.

Composer enthält bereits seit Version 0.75 solche Funktionen. Wenn Du das bisher nicht bemerkt hast, haben sie gut funktioniert :slight_smile:

Wenn der Katalog leer ist, muß Du noch die entsprechende Datei zusätzlich zu den jars mit reinkopieren. Ich habe die INstallationshinweise entsprechend ergänzt.

Die Garmin Namen sollte er in ein anderes Textfeld rüberretten. Hat bei mir im Test auch einwandfrei funktioniert. Sicher daß die nicht mehr da sind?

Nö, das liegt einfach daran, daß es erst im letzten Arbeitsschritt gebraucht wird und man es sich sparen kann, wenn bei mkgmap schon ein Problem auftaucht. Ließe sich vorziehen.

bye
Nop

Hallo,
Super jetzt wird beim API Download auch wieder die Routen erstellt. :slight_smile:
Leider werden jetzt aber die User/Benutzer nicht mehr angezeigt bzw. sie werden nur ab und an eingeblendet, konnte aber nicht nachvollziehen wann das genau ist. Jedenfalls stehen manchmal die User in der Liste und dann wieder nicht. :roll_eyes:
Als API URL nutze ich im Moment http://osmxapi.hypercube.telascience.org das geht bei mir bestens. :slight_smile:
Gruß und schönes WE Jörg

Ja sie sind weg. Allerdings sind sie in der Sicherung vor dem Update auch nciht mehr da. Bei der Instanz auf meinem Laptop aht alles wunderbar funktioniert. Warum aber alle Garmin-Namen verschwunden sind, kann ich mir allerdings nicht erklären. Allerdings läuft es auch ohne erstmal…dann muss ich bei Zeiten mal wieder die Versionen synchronisieren.

Ich hatte ja auch schonmal nach einer Deaktivierbarkeit von mkgmap gefragt. Eines von beiden würde mir sehr helfen. Derzeit hab ich mir eine leere jar-Datei erstellt, die ich den Composer aufrufen lassen. Dann wird logischerweise ein Fehler gemeldet und ein TYP-File wird nicht erstellt. Der Composer startet aber die bat und wird aber beendet. Im Prinzip ist das schon recht gut, allerdings brauch ich einen Extra-Job, der mir bei einer Veränderung das TYP-File neu erstellt.

Dabei kommt mir gerade eine andere Idee, welche Rückgabe erwartet der Composer von mkgmap, dass er es als erfolgreich anerkennt. Dann könnte man ja eine Dummy-Datei erstellen. Dann wäre das Problem auch gelöst.

Hallo,
eine Frage zum Composer kann man die Routen an und abschalten.
Also ich hab den Composer jetzt so eingerichtet das er mir eine Karte erzeugt wo die Wandermarkierungen angezeigt werden, also in MapSource sehe ich jetzt die Wegsymbole.
Nun hab ich mir endlich ein Garmin Dakota 20 angeschafft und muss dort wieder feststellen das diese Wandermarkierungen nur als weißes Kästchen zu sehen sind.
Nun möchte ich einfach mal so auf die schnelle eine Karte erzeugen ohne das die Wandermarkierungen erstellt werden, dazu müsste man doch einfach die Routentabelle deaktivieren oder auf Null setzen.
Gibt es dafür einen Schalter, oder muss ich das manuell machen in dem ich im Verzeichnis die Route.tbl lösche und später dann wieder einfüge wenn ich wieder Markierungen brauche.
Gruß Jörg

Benenn die Route.tbl doch einfach um…schneller gehts nicht.

@Nop:
Ich hab da ein kleines Problem und weiß nicht, ob der Composer es lösen kann. Die Wasser-Erzeugung in mkgmap ist mittlerweile so gut, dass ich diese gerne Nutzen möchte. Allerdings fehlen ihm im Randbereich, da wo das Planetfile keine Daten mehr liefert, die Wasserflächen. Die triviale Lösung wäre das Europa-File zu laden und den Bereich ausschneiden zu lassen. Das dauert aber ewig. Ich hab mir also eine osm-Datei mit alles coastlines von Europa erstellt.
Jetzt bleibt noch das Problem, dass ich gerne nur meine coastlines aus dem Composer spucken möchte, aber nicht die aus dem Planet-File. Da du am besten weißt, wie die extra-Dateien behandelt werden, hoffe ich, dass dir eine Lösung einfällt.

Hallo,
@aighes
Jo hab ich gemacht, und dann ne neue Karte erstellt.
Muss jetzt auch erst mal schauen was sonst noch auf dem Dakota nicht geht und dann neue ID Nummern suchen und probieren. Hab auch von Dir schon einige Daten genommen die du irgendwo mal zum Download angeboten hast. Irgend woher hatte ich Deine ganzen *.tbl (ReiseRadKarte_Einstellungen.zip). Davon hab ich schon einiges eingebaut, Danke. :slight_smile:
Auch hab ich gesehen das Du an den “GPX anzeigen auf Webseite” weitergearbeitet hast und jetzt die Höhe auch integriert hast, muss ich mir mal in Ruhe anschauen. Hab das bis jetzt bei mir ein wenig anders gelöst h**p://altersachse.de/021-touren/tour14/dreilaenderpunkt.php

@an Alle
Gibt es eine Möglichkeit eine Adresse zu einer Firma mit zu hinterlegen.
Also ich hab jetzt in JOSM eine Industriefläche erstellt und dann eine Firma, nun fände ich es nicht schlecht wenn man noch die Adresse mit dazu geben könnte. Geht das?
Hab bis jetzt das hier
man_made=works
name=Eckartsberger Papierverarbeitung GmbH
andere Schlüssel hab ich bis jetzt nicht gefunden, gibt es noch mehr?

Gruß Jörg

Hallo Jörg

Da gibt es noch die Tags addr:= für eine vollständige Erfassung einer Adresse.
(Suche nach dem Stichwort Karlsruher Adress-Schema.)

Das kann man an Punkte (nur Hausnummer, Eingang, POI, …) hängen
oder an Gebäude / Grundstücke, also zB. ein komplettes Firmengelände.
Der häufigste Fall ist ein Gebäude oder sein Eingang. Aber es spricht
nichts dagegen, das auch an das komplette Firmengelände zu hängen,
soweit die Adresse eindeutig bleibt.

HTH
Edbert (EvanE)

Hallo Nop,

deine neue Version ist nun schon 2 Wochen alt und ich komme erst jetzt dazu, sie einzusetzen.
Ich muß schon sagen, einfach Klasse, was du da an Innovationen eingebaut hast.
Vor allem, dass jetzt keine Datenbank mehr notwendig ist, kommt für mich wie gerufen.
Dafür ist mein letzter Platz auf der Festplatte nun aufgebraucht, da ist wohl eine neue notwendig.

Dass die Reihenfolge der Ersetzungsregeln nun gewählt werden kann, ist prima. Das muss ich gleich umsetzen.
Die direkte Erstellung der gmapsupp mit mkgmap ist auch von großem Vorteil. Mein Batch-Script brauche ich nun nicht mehr.

Für einige Parameter wäre es optimal, diese nicht in der Options Datei sondern direkt im Composer angeben zu können.
(country-name, country-abbr und description)
Dann wäre es möglich, mit einer einzigen Options-Datei Pläne für viele verschiedene Länder zu erzeugen.
Als Workaround geht es natürlich auch mit einer Datei je Plan, ist also nichts wirklich dringendes.

In diesem Zusammenhang eine Frage:
Wie kann ich ein Polygon für die Umrißdatei mit beliebiger Form erzeugen, um an Ländergrenzen exakt zu schneiden.
Ich möchte aus dem Europa.osm File jeweils jene Länder gemeinsam ausschneiden, die den gleichen Zeichensatz benötigen.
Mit rechteckig überlappenden Bereichen habe ich nicht die besten Erfahrungen gemacht, und transparente Karten haben auch so ihre Nachteile.

Was sind eigentlich Unterkarten, die ich bei der Parameter-Einstellung definieren kann. Ist das neu?

Mein aktuelles Problem hat nichts mit diesem Versions-Step zu tun.
Seen mit Multi-Polygon werden bei mir nicht dargestellt (prominentes Beispiel ist der Neusiedlersee)

Für das Osterwochenende habe ich mal genug an Karten erstellt.
Schöne Ostern und vielen Dank für den neuen Composer.

Walter

Hallo Walter!

Danke für die Rückmeldung, freut mich wenn Composer auch bei Dir anständig funktioniert.

Das ist halt der Kompromiß. mkgmap hat einfach zu viele Parameter um sie alle abzubilden und für den Kartenneuling sind es eh schon verdammt viele Einträge in Composer. Von daher werden diese Einträge wohl erst mal außen vor bleiben müssen.

Nimm Dir eine beliebige Umrißdatei im Format für osmosis, kopier sie ins Input-Verzeichnis und trage sie im Job ein.

Ja. Damit kann man alle Garmin-Kacheln, die eine angegebene Umrißdatei berühren, in ein eigenes gmapsupp.img packen. Das benutze ich, um die Kacheln für D-A-CH-IT nur einmal zu erzeugen, aber in 3 überlappenden Unterkarten zum Download anzubieten.

Das ist ein reines mkgmap Problem, würde ich sagen. In der 0.82 ergänzt Composer noch die Tags von der Relation an den einzelnen Teilen, was aber theoretisch nichts ausmachen sollte. Das Handling werde ich in 0.83 stillegen, dann bleiben die Multipolys komplett unverändert.

bye
Nop

Hallo Nop,

vielen Dank für die Infos, ich werde mich nach Ostern weiter mit größeren Karten beschäftigen.
Ich möchte alle Länder zusammenfassen, die mit dem Standardzeichensatz 1252 erzeugt werden können.
Ebenso alle Länder, die einen anderen (z.B. 1250) benötigen, usw.
Überlappende Unterkarten werde ich für diese Anforderung vermutlich nicht benötigen.
Nur die Umrisse sollten dabei recht exakt sein, da rechteckig überlappende Karten die Polygone verdecken können.

Das mit den MP-Seen ist schade, es konnte dazu bisher überhaupt keine Lösung in einem Forum finden.

Ich habe im Logfile gesehen, dass du mkgmap mit dem Parameter --gmapsupp extra aufrufst.
Wäre es nicht einfacher, zuerst das TYP-File zu erstellen, und mkgmap nur einmal aufzurufen?

Falls der getrennte Aufruf von Vorteil ist, hätte ich noch eine kleine Verbesserung.
Der Parameter description definiert bei manchen Geräten in der Planauswahl einen zusätzlichen Namenseintrag.
Ohne Angabe dieses Parameters generiert mkgmap nur den Default-Untertitel “OSM street map”.
Falls du aber vorhast, die beiden Aufrufe zusammenzuziehen, dann ist dieser Parameter ohnehin in osmc_options bereits gesetzt.

Zum Thema “Routing über Kachelgrenzen” habe ich beim Splitter einen Parameter gefunden, der die gesuchte Lösung darstellen könnte.
http://www.mkgmap.org.uk/page/tile-splitter

–overlap=2000
The splitter includes nodes outside the bounding box, so that mkgmap can neatly crop exactly at the border.
This parameter controls the size of that overlap. It is in map units, the default of 2000 is about 0.04 degrees of latitude or longitude.

Das bedeutet wohl, dass ein overlap=1 nicht genügt, damit mkgmap die Kacheln routinggerecht wieder zusammenfügt.
Ich habe keine Ahnung, warum das Zusammenfügen ohne Überlappung nicht möglich sein soll.
Wäre es möglich, diesen Parameter beim Composer-Splitter einzubauen, und im Falle des gesetzten Routingflags entsprechend aufzurufen?
Ich hoffe, dass damit der Composer dann ebenfalls voll routingfähig wäre.

Ich freue mich schon riesig auf die Erstellung richtig großer Karten. (mein Maximum liegt derzeit bei 2 kleinen Ländern)
Keine Ahnung, ob mein Computer ganz Europa schafft. Das ist aber auch nicht wirklich notwendig, meine Reisen sind meist deutlich begrenzter.
Mit Charactersets muß ich mich jedenfalls noch näher beschäftigen, und Meerespolygone möchte ich auch irgendwann einmal einbauen.
Weiters einen abschaltbaren Layer mit Höhenlinien - die Ideen gehen mir jedenfalls noch lange nicht aus.

Walter

Der gmapsupp-Aufruf bleibt extra, weil er abschaltbar ist und er je nach Anwendungsfall unterschiedlich oft gebraucht wird.

Das mit der description war mir nicht klar, das wird gleich eingebaut.

Ich fürchte das hast Du mißverstanden. Bei mkgmap ist es so, daß der Splitter immer einen Rand stehen läßt, und hofft daß alle wichtigen Features in diesem Rand liegen. Mkgmap schneidet das dann weg und clippt dann exakt auf Kachelgrenzen und tut irgendwas für das Routing.

Composer dagegen verarbeitet die Daten am Stück, exakt, und teilt sie erst dann auf. Und müßte für das Routing vermutlich noch irgendwas tun.

Halt mich auf dem Laufenden. Theoretisch gibt es keine Grenze, ist nur eine Frage der erzielbaren Geschwindigkeit. Für den gesamten deutschsprachigen Raum brauche ich noch ungefähr 3 Stunden für alles.

bye
Nop

Hallo Nop,

was noch schön wäre, wenn man Relationen verarbeiten könnte. Es würde mMn bereits ausreichen, wenn man Relationen durchlassen kann für das Routing, also Abbiegerelationen beispielsweise und das man Ersetzungen machen kann. Nach dem Schema: Wenn in Relation key_1=value_1, dann setze an alle Wege/Nodes der Relation das Tag key_2=value_2.

Das mit der Ersetzung könnte man im bisherigen Ersetzungsdialog unterbringen. Man bräuchte nur neben Weg und POI eine dritte Kategorie Relation.

Das mit dem Relationen durchlassen verstehe ich, das steht schon auf meiner Todo-Liste.

Aber wozu würde man den Ersetzungsmechanismus brauchen?

bye
Nop

Der Ersetzungsmechanismus ist in meinen Augen wichtig, um Informationen, die nur in Relationenen eingetragen werden auszulesen und mit dem Composer zu verarbeiten. Vorallem bei zusammengehörenden Objekten, wo der Objekt-Verband gleiche Eigenschaften hat.

Du meinst also Vererbung von Tags von Relationen auf Ways/Nodes? Damit gibt es das Problem, daß so ein Mechanismus nicht vernünftig definiert ist und einiges an Problemen mit sich bringt, da Ways/Nodes in beliebig vielen Relationen sein können und dann nicht mehr klar ist, was von wo geerbt wird. Es gibt einige Leute mit der Ansicht, das sei ja alles ganz einfach und ich tu mein Bestes, ihnen zu erklären, daß das alles andere als einfach ist sondern daß dieses Problem der Grund ist, warum das Konzept der Mehrfachvererbung aus allen modernen Programmiersprachen wieder verschwunden ist. Und daß es auch kein Mensch mehr blicken wird, was mit dem Tagging mal gemeint war. Ich hab’ nur für Multipolygone mal eine Prüfung der Tags eingebaut und allein in Deutschland schon mehrere 100 Konflikte von widersprüchlichen Tags gefunden.

Eine längere Erklärung des Themas findet sich hier:
http://wiki.openstreetmap.org/wiki/Talk:Relations/Proposed/Collected_Ways#Problems_to_solve_when_inheriting_tags_from_parent_relations

Kurz gesagt: Hier muß erst mal das Bewußtsein für die echte Tragweite des Problems geweckt und danach sinnvolle Regeln für eine Lösung festgelegt werden. Eine saubere technische Lösung ist nach heutigem Stand nicht möglich und dementsprechend werde ich auch nix halbherziges und nur scheinbar einfaches in Composer einbauen.

Wenn ich dich richtig verstehe meinst du folgendes:
Ein Weg gehört zu 2 Relationen A-Wanderweg und B-Wanderweg. In der jeweiligen Relation ist ein x-TAG. Die sind logischerweise unterschiedlich. Wenn ich nun den x-TAG von der Relation auf den Weg übertrage ist ungewiss, welcher Wert im x-TAG später stehen wird.

Das könnte man lösen, in dem man prüft, ob der TAG vorhanden ist und dann den Wert mit ; getrennt anhängt.

Bei TAG’s wie xyz=yes sehe ich aber keine Probleme bei der Vererbung. Sollte das Objekt zu zwei Relationen gehören, wovon eine yes liefert und eine andere no liegt ein tagging-Fehler vor, der dann behoben werden muss.

Die Situation meine ich. Allerdings noch komplizierter. Sagen wir ein Weg gehört zu einer Straßenrelation, zwei Wanderwegen, zwei Buslinien und noch irgendeiner anderen Relation, die wir nicht kennen.

Deine Lösungsansätze funktionieren leider nicht:

  • Aneinanderhängen mit “;” ist genauso gut wie Löschen, es wird von den meisten Programmen nicht ausgewertet. Für die meisten Konflikte ist es auch nicht sinnvoll. (xyz=yes;no :slight_smile: und Kombinationen von mehreren Tags, die am Ursprungsobjekt Sinn gemacht haben, gehen dabei verloren oder ändern die Bedeutung.
  • Man kann nicht sagen, daß ein Tagging-Fehler vorliegt wenn es keinerlei Regeln gibt, wie sowas auszuwerten ist
  • Solche Fehler sind irrsinnig schwer zu finden und noch schwerer aufzulösen.

Von daher bin ich vehement der Ansicht: Erst mal Gedanken machen wie es funktionieren soll, dann losrennen und es benutzen. :slight_smile: