osmupdate erstellt kein Output wenn OSM up-to-date

osmupdate funktioniert prima und super stabil. Heute hatte ich zufällig mal seit langem das Problem dass osmupdate mir sagt

osmupdate: Your OSM file is already up-to-date.

Danach wurde der output file nicht erstellt. Was ich allerdings als Fehler werte, bei Speicherproblemen oder Bugs etc wäre das ja auch der Fall. Gibt es eine Option wo ich das Erstellen des output files IMMER erzwingen kann, auch falls gar nichts gemacht werden muss?

Mein Befehl aktuell ist:

./osmupdate temp.pbf output.pbf --hour --day --keep-tempfiles --drop-author

Wieso prüfst du nicht einfach, was osmupdate für einen Errorcode bzw. Output zurückliefert. Dann kannst du denn einfach mit einem Shellscript verarbeiten. Wenn output.pbf also nicht geschrieben wurde, dann wird temp.pbf auf output.pbf geschrieben.

Ich habe ein recht komplexes Update-Script, was viele Fehler abfängt und auswertet - das macht aber im Endeffekt genau das gleiche.

Erster Eindruck: die Verarbeitung hört unmittelbar nach dieser Meldung auf, Parameter dazu habe ich keine ausfindig machen können. Ohne weitere Anpassungen am Coding würde sich evtl. anbieten, den Return-Code von osmupdate in einem Shell-Skript zu prüfen und im Fall von RC=21 einfach temp.pbf nach output.pbf zu kopieren.


      else 
        PINFO("Your OSM file is already up-to-date.")
return 21;
      }

Hast du mich auf Ignore stehen? :wink:

Ok, Danke das mit rc=21 klingt gut! Also falls “RC=0 || RC=21” weitermachen und für RC=21 noch vorher ein move?

@TobWen: nein eigentlich nicht, unsere Posts haben sich einfach überschnitten :sunglasses:

@karussell: ich finde zum Return-Code keine Info auf der Wiki-Seite. Zur Sicherheit könntest du den Autor Markus (User:Marqqs) nochmal kontaktieren, ob das so passt.

War doch nur ein Scherz :smiley:

Ich schreibe gerade im Code rum, da ich mich ständig geärgert habe, dass nicht nur die eigentlichen “Tempfiles”, sondern auch alle bereits heruntergeladenen Updates gelöscht wurden :frowning:

So, ich habe osmupdate zwei neue Funktionen verpasst: –keep-downloads und –force-output. Letzteres ist das, was du haben möchtest: wenn kein neues Update zur Verfügung steht, wird die Eingabedatei auf die Ausgabedatei kopiert (cp unter Linux, copy unter Windows). Achtung: es findet derzeit dann keine Formatumwandlung statt. Wenn o5m reingeht, geht auch o5m raus, denn wie gesagt: es wird kopiert :slight_smile:

Hier mein Branch:
https://github.com/TobWen/osmctools/tree/osmupdate_tobwen

Cool, danke!

Sind die Parameternamen und die Hilfetexte so verständlich? :wink:

Ich muss mal gucken, wie ich das nativ unter Windows kompilieren kann… ich muss gestehen, dass ich mittlerweile Windows nur noch als GUI verwendet…

Mag mal jemand die Binaries für Windows testen?

https://github.com/tobwen/osmctools/tree/osmupdate_tobwen/binaries

Habe osmupdate mal wieder eine neue Funktion spendiert: --download-only. Binaries sind auch aktualisiert:
https://github.com/tobwen/osmctools/tree/osmupdate_tobwen

Tja, wenn du die Seite https://github.com/tobwen/osmctools/releases pflegen würdest, könnte ich osmtools in die OSM Software Watchlist aufnehmen und somit die Updates u.A. in der Wochennews erwähnen. So hast du - und wir - halt Pech gehabt. :frowning:

Gruss
walter

Hallo,
solltest du noch auf der Suche nach weiteren Funktionen sein, wäre keep-daily keep-hourly evtl. was interessantes. Wenn ich eine Karte meiner aktuellen Mappingergebnisse brauche, dann lasse ich osmupdate mit minutly durchlaufen. Die muss er aber nicht aufbewahren. Da würde mir das daily vollkommen ausreichen. Kann den Aufwand dafür aber nicht abschätzen. Theoretisch kann man ja auch alles überflüssige per bat nach dem Update entfernen.

Außerdem könte update-only eine Interessante Funktion sein, in der osmupdate nur die vorhandenen Changefiles in das osm-Extrakt integriert.

Die 64bit-Variante probiere ich gerade. Gebe dir Feedback, ob es läuft.

Das Problem ist, dass Markus kein offizielles Repository führt, sondern die Änderungen nur auf seiner eigenen Seite hochlädt. Darum habe ich ja auch extra 'nen eigenen Branch aufgemacht, wo erstmal nur meine Änderungen drin sind. Sobald Markus nämlich ein Update machen würde und meine Änderungen nicht drin sind, müsste ich erstmal alles anpassen. Man müsste natürlich mal gucken, ob das nicht einfach über Patches gehen würde.

Ich bin kein C-Programmierer, daher wird es für mich persönlich sicher schwieriger - jetzt werden die C-Leute hier sicher lachen, aber die Lösung als Batch- oder Shell-Script ist definitiv einfacher :wink:

Ich persönlich stehe kurz vor dem Gedanken, OSM-Update in Python oder sogar direkt als Shell-Script nachzubasteln. Dann würde ich auch die Möglichkeit anbieten, andere Tools wie osmium oder osmosis einzubinden.

Das müsste ich recht einfach hinbekommen.

Danke. Ich frage mich, ob es generell einen Unterschied zwischen der 32-bit und 64-bit Variante gibt.

Ist soweit gut durchgelaufen.

Die 32bit-Variante stürzt ab, wenn die temporöre osc-DAtei größer als ~1,8GB ist. Gerade hab ich aber keine ewig alte OSM-Datei zur Hand, um das mit der 64bit Variante zu testen. Zugegeben, dass ist auch nicht so ganz der normale Usecase.

Danke.

Ich probiere mal, ob man mit MinGW eine “Fat Binary” bauen kann - also 32- und 64-bit. Keine Ahnung, ob das unter Windows überhaupt möglich ist.

UPDATE: Hab die Stelle gefunden. Hab weitere Parameter für cURL ergänzt und jetzt laufen auch wieder daily Updates meiner auf macOS angepassten Version. Falls jemand also osmupdate für Mac sucht, bitte bei mir melden.

Hallo TobWen,

wie ich lese, programmierst Du auch im Quellcode von osmupdate. Da es keine Version für macOS gibt, hab ich aus dem Quellcode der Version 0.4.5 Wget durch cURL ersetzt. Und da ich osmupdate in einer Mac.app paketiert hab und von dort aufrufen muss, hab ich einem Aufruf noch ein ./ vorsetzen müssen. Seitdem hat eigentlich alles immer funktioniert. Dann hab ich lange pausiert und wollte nun wieder was tun. Leider aktualisiert meine osmupdate-Version (0.4.5.mac.curl) nicht --day sondern nur --hour. --minute benötige ich nicht.

Mir würde ein Tipp reichen, an welcher Stelle im Code ich das drehen müsste.

Herzlichen Dank und Gruß
Scotti