GUI für osmconvert

Ich weiß nicht ob bekannt ist wie groß die Datei ist. Wieviel davon bearbeitet ist läßt sich ja durch einen Zähler problemlos auswerten. Ich vermute aber das du C++ typisch die Datei immer Brocken für Brocken einliest und dann auf EOF wartest. Das Betriebssystem kennt aber die Größe auf jeden Fall schon und vielleicht kann man auch irgendwie erst ans Ende springen und weiß dann wie groß die Datei ist, ohne das einmal komplett durchgelesen zu haben.

Ja, wenn nur EINE Eingabedatei verwendet wird und diese nicht per Pipe oder stdin eingelesen wird (also nicht per “|” und nicht per “<”), dann kann das Programm die Dateigröße abfragen. Bei mehreren Dateien brauchst du dann schon die Summe, und sobald du eine Region extrahierst, kommen noch temporäre Dateien ins Spiel, das heißt, das Einlesen der Original-Datei wird unterbrochen und nach unbestimmter Zeit wieder fortgesetzt.

Ein schlauer User hat den Balken mal per Programm pv (“pipe view”) realisiert. Das hat dann auch nicht in allen Fällen geklappt, aber die Idee fand ich pfiffig.

Das geht dann über meine C++ Kenntnisse hinaus.

pv ist ein Linux-Programm, das du unter Windows eigentlich auch per Cygwin installieren kannst.
http://linux.die.net/man/1/pv

Alternativ kannst du natürlich auch gleich Linux installieren. :wink:

Der Unterschied hat sich heute aufgeklärt: osmconvert hielt so genannte “leere Relationen” für nicht plausibel und hat sie beim Lesen von .pbf-Dateien verworfen. Ich hab das mit Version 0.4J geändert. Zwar wird vermutlich keiner was mit leeren Relationen anfangen können, aber das Programm soll sich beim sturen Umwandeln von Dateien transparent verhalten. Alles andere verwirrt nur.

http://wiki.openstreetmap.org/wiki/Empty_relations

Moin moin,

hab’ mal spasseshalber osmconvert mit clang compiliert. Selbst mit “-std=c99” waren die Fehlermeldugen die gleichen:


$ clang -o osmconvert osmconvert.c -lz -O3 -std=c99
osmconvert.c:2145:3: warning: implicit declaration of function 'gmtime_r' is invalid in C99 [-Wimplicit-function-declaration]
  gmtime_r(&vtime,&tm);
  ^
osmconvert.c:2264:8: warning: implicit declaration of function 'timegm' is invalid in C99 [-Wimplicit-function-declaration]                    
return timegm(&tm);
       ^
osmconvert.c:8690:29: error: variable has incomplete type 'struct sigaction'                                                                   
    static struct sigaction siga;
                            ^
osmconvert.c:8690:19: note: forward declaration of 'struct sigaction'                                                                          
    static struct sigaction siga;
                  ^
osmconvert.c:8693:5: warning: implicit declaration of function 'sigemptyset' is invalid in C99 [-Wimplicit-function-declaration]               
    sigemptyset(&siga.sa_mask);
    ^
osmconvert.c:8695:5: warning: implicit declaration of function 'sigaction' is invalid in C99 [-Wimplicit-function-declaration]                 
    sigaction(SIGPIPE,&siga,NULL);
    ^
6 diagnostics generated.

Eine Performaceverbesserung gegenüber dem gcc hab’ ich auch nicht festgestellt. Viellecht liegts daran, dass die mit Debian 6 mitgelierferte
Version schon zu alt ist:


$ clang --version
clang version 1.1 (Debian 2.7-3)
Target: x86_64-pc-linux-gnu
Thread model: posix

Einen icc hab’ ich nicht :wink:

Ciao,
Frank

Hi Marqqs
Nachdem ich mir vor längerer Zeit pbftoosm mit kleinen batch-Dateien eingerichtet hatte und mit dem Workaround gut klar komme, hab ich mich bislang vor weiteren Updates “gedrückt”. Nun lese ich hier und in den anderen entsprechenden Threads wieder ein wenig mit und frage mich, welcher Vorteil die Nutzung von osmconvert gegenüber pbftoosm hat, wenn im Prinzip nichts anderes vom Programm erwartet wird, als einenen definierten Kartenausschnitt aus einer europe.osm.pbf auszuschneiden und mit -drophistory etwas einzudampfen. Für die anderen aufwändigereren Projekte ist noch keine Zeit. Aber ich probier es wenigstens mal aus. Bevor ich mich allerdings ans Testen mache, wüßte ich gerne noch, ob osmconvert auch unter win7 im 64-bit-System läuft, obwohl 32-bit dran steht. Und ob ich gegebenenfalls irgendetwas berücksichtigen muß, damit es korrekt funktioniert.

Viele Grüße
tippeltappel

Wahrscheinlich dürfte es keinen Unterschied machen ob man osmconvert bzw. pbftoosm verwendet.

Vorteil von osmconvert das es von osmupdate verwendet wird, dadurch ist mann immer auf dem aktuellen Stand ohne in eine Downloadorgie zu verfallen (Das Europa-File ist da nach 15 min (natürlich je nach aktuallisierungs Intervall) uptodate) statt wieder mal fast 7 GB zu saugen.

Die Programme laufen problemlos auf win7 64bit.
Ich selbst starte osmvonvert (mit win7 und nem 2600er mit 16GB) 8 mal - da hab ich nach ca 4min aus dem Euopa-File 8 Länder ausgeschnitten.

Der Vorteil dürfte eventuell bei der Geschwindigkeit und der Vielfalt der Formate liegen. Dein Anwendungsgebiet hast du jetzt allerdings noch sehr eng gesteckt. Wenn du wie bei Quasilotte beschrieben Europa nicht jedesmal neu laden möchtest sondern lokal updaten ist osmconvert mit osmupdate und das o5m Format sicher die bessere Wahl.
Beide Programme laufen unter Windows7 64 Bit wie bereits bestätigt einwandfrei. Nur osmupdate möchte Administratorrechte haben. Dies ist aber ein Windowsbug und lässt sich durch umbenennen von update in einen beliebigen anderen Namen beheben.
Weiterer Vorteil ist der schnelle Support des Autors. Er kümmert sich einfach um seine Programme und ist Fehlermeldungen hinterher.

Moin Viw

Danke für die Info.

Noch schneller, als pbftoosm?

Das Anwendungsgebiet wird vorerst so eng gesteckt bleiben. Ein Kartenupdate erstelle ich vielleicht alle 1 bis 2 Monate. Manchmal sogar noch seltener. Da lohnt sich die Mühe nicht, ein Update mit Diffs einzurichten.
Das eingerichtete Workaround (Download abrufen, auf dem Desktop verlinkte batch starten und auszuschneidendes Gebiet anwählen, Composer starten und zu berechnende Karte anwählen) funktioniert mit den wenigen Klicks mal eben nebenbei.

Für neue (im Winter anzugehende) Projekte (thematisch ausgerichtete Routen-Overlays) werden vor allem die Filterfunktionen interessant sein. In pbftoosm hatte Marqqs ja schon verschiedene eingebaut. Wenn die jetzt nur noch in osmconvert weiterentwickelt werden, ist es natürlich sinnvoller, die batch-Dateien darauf abzustimmen.

Ja, Marqqs ist immer sehr fleißig! :slight_smile: Daumen hoch

Naja die Frage ist was du unter einrichten verstehst.

osmupdate old_file.o5m new_file.o5m

Alternativ auch mit pbf, wobei letzteres aufgrund der Dateistrucktur langsamer in der Verarbeitung. Auf Anfrage einiger Nutzer hat Marqs auch schon den Zeitstempel in pbf integriert. Das Programm sucht sich also nur beim erstenmal mit der Statistikfunktion den Zeitstempel des letzten Elemnts und lädt ab diesem Zeitpunkt automatisch alle Diffs als Daily Hourly und Minutely herunter.
Beim zweiten Update wird dann nur noch der Zeitstempel verwendet ohne die Datei nochmal komplett zu parsen. Außerdem lassen sich bei dem Update die Filter und Geografischen Bereiche gleich mit anlegen, so dass auch kein zusätzlicher Müll dazu kommt.

Moin Marqqs

Bevor ich abzisch, noch eine kurze Bemerkung zur GUI.
Die Ansprache find ich lustig. :slight_smile:
Aber das nur nebenbei.

Mich stört, daß die Auswahl nur ermöglicht, ein Ausgabeformat der Datei zu wählen, eine Möglichkeit, die Dateigröße zu reduzieren z.B. per -drop history aber nicht angezeigt wird.

Wenn ein Anfänger das Programm startet, kann es sein, daß er als erstes im Kopf hat “ich brauch eine osm-Datei”.
Daß er aber nur einen kleinen Ausschnitt z.B. aus der europe.osm.pbf benötigt, vergißt er in diesem Moment vielleicht, gibt zweimal hintereinander die 1 ein und hat dann eine unnötig große Datei auf dem Rechner.

Daher wäre ein Tipp für die beste Vorgehensweise nicht schlecht:
“Wenn Sie einen Ausschnitt der Datei im *.osm-Format benötigen, schneiden Sie am besten zuerst den gewünschten Kartenbereich aus und convertieren Sie anschließend das Ergebnis in das gewünschte Format. Geben Sie daher zuerst die 4 und dann die 1 ein.”

Bei der Eingabe des Minimum-Längengrades bin ich dann gescheitert, weil eine Antwort wie “Sorry, das hab ich nicht verstanden.” dem Anwender nicht weiterhilft. Da wäre ein Beispiel für das erwartete Eingabeformat nützlich.

Grundsätzlich wäre es schön, wenn der Anwender beim Bedienen der batch-Datei lernen könnte, wie der “Befehlebaukasten” funktioniert.
Kommentare wie “Das geht in Ordnung.” sind eine wichtige Erfolgsmeldung. Mir wäre allerdings lieber, wenn ich sehen könnte, welcher Befehl durch meine Eingabe aktiviert wurde.

Grüße
tippeltappel

Na, das liest sich simpel, setzt allerdings voraus, daß das Update regelmäßig erfolgt. Doch so oft brauch ich das ja nicht.

Mein erster Versuch mit den Diffs ist schon ein paar Monate her. Da hab ich mir von Hand die Diffs von mehreren Tagen heraus gesucht und mit Osmosis herumexperimentiert.
Das bekam ich nicht auf Anhieb auf die Reihe. Mein kleiner Internet-Rechner “verschluckte” sich an den Datenmengen und der Zugriff auf das www war in dieser Zeit total blockiert. Nachdem ich dann viel Freizeit investiert und die Erkenntis gewonnen hatte, daß mit einem sporadischen Download der kompletten europe.osm.pbf das Leben wesentlich leichter ist, hab ich das Diff-Update nicht weiter verfolgt.

Beim Update die Filter und geografischen Bereiche gleich mit anlegen, ist natürlich eine gute Idee. Wenn ich bastele, benötige ich allerdings unterschiedliche Filter und wechselnde geografische Bereiche. Da benötige ich dann doch wieder die komplette europe.osm.pbf.

@ quasilotte
Sorry, hatte Dein Post übersehen.
Nach ca 4 Minuten 8 Länder aus dem Europafile ausgeschnitten ist natürlich ein Wort!
Droppst Du gleichzeitig die History?

Ihr macht mich neugierig. :slight_smile:

Aber jetzt muß ich erst mal los.

Nochmal Es ist so einfach wie es aussieht. Du musst osmupdate nur die alte Datei vorwerfen und sagen schreib mir eine aktuelle daraus. Der Rest wird vom Programm erledigt. Download mergen etc. du hast am Ende nur die fertige Datei. Musst dich also um nichts kümmern.
Osmosis hingegen benötigt jede Menge Steuerungsdateien und lädt dann auch immer nur einen Typ von Diffs herunter.
osmupdate hingegen ist sehr effizent.

Man braucht auch nicht täglich updaten. 1-2 mal die Woche per --daily Option geht prima.

Hallo!

Nein, osmconvert ist eher etwas langsamer als pbftoosm, allerdings nur 1 oder 2 Prozent. Der Grund, warum pbftoosm nicht mehr empfohlen wird, ist ein ganz einfacher: ich habe nicht die Zeit, beide Programme gleichzeitig zu warten und auch noch weiterzuentwickeln. Da osmconvert alles kann, was pbftoosm tut, will ich mich in erster Linie um osmconvert kümmern, das übrigens damals aus dem Quellcode von pbftoosm entstanden ist. osmconvert ist also eine Weiterentwicklung von pbftoosm.

OK, ich werd drüber nachdenken, wie ich das im Dialog unterbringen kann. Grundsätzlich soll “Bert” aber nicht ausufern, er war erstmal nur für diejenigen gedacht, die das Programm mangels Kommandozeilenerfahrung sonst überhaupt nicht nutzen könnten.

Naja, der Nutzer kann ja direkt “14” eingeben. Oder “1,4” oder “1 4” oder “4 1” oder “1 ; 4” - das Programm akzeptiert da vieles.

Stimmt! Welcher Syntaxfehler ist dir passiert? Die Eingabeaufforderung könnte wirklich klarer formuliert werden, richtig.

Ja, gute Idee. Scheiterte bisher daran, dass intern gar kein echter Kommandozeilenbefehl erzeugt wird. Aber man könnte trotzdem einen generieren.

EDIT zum Thema Update:
osmupdate ist sicher ein geschicktes tool, aber wenn du wirklich nur alle 3 oder 6 Monate updaten willst, dann wärs aus meiner Sicht sinnvoller (und einfacher), die Dateien komplett neu runterzuladen. Ich persönlich würde osmupdate dann verwenden, wenn Updates im Abstand von 3 Wochen oder kürzer geplant sind. Das kommt natürlich auch auf die Größe der zu aktualisierenden Region an. Bei europe.pbf rentiert sich das viel eher als z.B. bei bremen.pbf. Im Fall von Bremen sind die täglichen Updates schon größer als die ganze Bremen-Datei - wenn ich mich jetzt nicht verschätzt hab.

Erledigt mit Version 0.4L. :slight_smile:

Feine Sache. Marqqs Programme sind da offensichtlich wesentlich komfortabler, als OSMOSIS. Werde ich bei Gelegenheit mal ausprobieren.

Und wie lange dauert das?
Wenn ich das richtig verstanden habe, muß man sich dann mehrere Dateien herunter laden. Richtig? Aber das organisiert das neue Programm im Gegensatz zu OSMOSIS jetzt selbst. Was natürlich eine große Erleichterung ist.

… probieren geht über studieren :wink: