JOSM - lokale Datei und OSM gleichzeitig bearbeitbar?

Hallo Leute,

ich beschäftige mich gerade mit der Frage, ob es möglich ist eine eigene lokale OSM-Datei und OSM selbst gleichzeitig zu bearbeiten, also die Änderungen gleichzeitig zu OSM hochladen und lokal in eine bereits bestehende OSM-Datei zu speichern.

Werden in dem Fall von JOSM lediglich meine Veränderungen hochgeladen oder immer die gesamte lokale OSM-Datei. Ein einfaches Beispiel: Ich lade meine lokale, etwas abgeänderte, OSM-Datei in JOSM und füge beispielsweise eine Schutzhütte hinzu. Kann ich jetzt ohne Bedenken meine Datei speichern und gleichzeitig diesen Eintrag auch zu OSM hochladen? Was passiert bei komplizierteren Fällen, z.B. bei Veränderungen von Wegen oder Nodes. Man kann doch nie wissen, ob bestimmte Objekte nach ein paar Tagen noch immer übereinstimmen (lokale “alte” Datei vs. aktuelle OSM-Datenbank)?!

Ich habe an meiner lokalen Datei nämlich gerde ca. 50 Edits vorgenommen und frage mich nun gerade, ob es ungefährlich ist die “Arbeit” gleich noch zu OSM hochzuladen anstatt den ganzen Mist nochmal für OSM einzugeben!
Oder hätte ich lieber zuerst die Daten vom OSM-Server bearbeiten sollen und dann damit meine lokale Datei aktualisieren sollen (Datei → Daten aktualisieren) ?

Ich bedanke mich schon mal im Voraus für die JOSM-Nachhilfe.

Wenn ich erwarte, eine Zeit lang kein IN zu haben, lade ich vorab eine Bereich mit JOSM herunter, speichere ihn als lokale Datei.
Am Zielort editiere ich die lokale Datei mit JOSM. Wenn wieder IN vorhanden, lade ich Datei hoch.
Dabei werden nur alle lokalen Änderungen hochgeladen. Dabei kann es natürlich vorkommen, dass jemand anderes inzw.
in der Gegend editiert hat und es zu Konflikten kommen, die dann mühsam aufgelöst werden müssen.

Upload early, upload often :wink:

Hochgeladen werden immer nur die geänderten oder neu erstellten Objekte.

Um nur die Schutzhütte hochzuladen: diese auswählen und “Auswahl hochladen” statt “Daten hochladen” aus dem Datei-Menü benutzen.

Falls Du etwas zu bearbeiten versuchst, das in der Zwischenzeit schon in der Datenbank geändert wurde, erkennt der Server dies an der Versionsnummer des von JOSM hochgeladenen Objekts und meldet einen Konflikt, den Du dann in JOSM lösen kannst. Letzteres kann aber bei Wegen und Relationen durchaus (sehr) kompliziert werden.

Wähle in JOSM diese geänderten Objekte aus, die Du jetzt hochladen willst, und klicke auf “Geändertes aktualisieren” im Datei-Menü. Dann werden diese Objekte mit ihrem aktuellen Stand auf dem Server abgeglichen und mögliche Konflikte bereits vor dem Hochladen angezeigt. Wenn dabei keine Konflikte gemeldet werden, kannst Du diese Objekte anschließend per “Auswahl hochladen” gefahrlos hochladen.

@ fireball2
Wenn Du eine bereits auf dem Rechner gespeicherte *.osm-Datei weiter bearbeiten und anschließend hochladen möchtest, muß Du zur Vermeidung von Chaos unbedingt vorher updaten.

Also nach dem Öffnen der Datei in JOSM gehe auf

Datei > Daten aktualisieren

JOSM ergänzt dann Deine lokale Datei und zeigt Dir außerdem an, ob Deine Datei Objekte enthält, die auf dem Server gelöscht wurden.

Wenn Du das nicht machst, gibt es später Versionskonflikte und auf dem Server gelöschte Daten werden erneut hochgeladen.
Das dabei entstehende Durcheinander zu beseitigen dauert unter Umständen ziemlich lang.
Wenn Du Deine Arbeit nicht verlieren möchtest, versuche die neu gezeichneten Objekte zu markieren und separat in einer neuen Ebene abzuspeichern. Von dort aus kannst Du sie auch hochladen.
In Deiner großen OSM-Datei würde ich die die neuen Wege löschen. Denn die werden beim nächsten Update nicht erkannt und dann wird die auf dem Server liegende Version darüber gelegt und Du erhältst Fehlermeldungen wegen der Verdoppelung.

Gruß
tippeltappel

P.S. Oli-Wan war schneller.

OK, Eure Antworten sind einleuchtend. Aber als ich jetzt “STRG + Umschalt + U” betätigt habe, dann meint JOSM “600 Objekte werden einem Änderungssatz in einem Vorgang hinzugefügt”. Dies erscheint mir ein bisschen zu viel?! Ich bin mir daher immer noch nicht sicher, ob ich das alles hochladen soll/darf. Um’s nochmal klarzustellen, ich habe an meiner lokalen Datei in den letzten Tagen schon einige Veränderungen vorgenommen, die ich allerdings nicht zu OSM hochladen möchte. Die Bearbeitung von heute soll allerdings in beide Datenbestände (lokale Datei und OSM-Datenbank) einfließen. Ich habe JOSM mit den Edits von heute (Befehlsliste ) noch offen. Es tut mir leid Leute, aber könntet ihr bitte nochmals bestätigen, dass da auch nur das von heute hochgeladen wird, ich möchte nämlich keinen Mist in die OSM-Datenbank pumpen.

Strg+Umschalt+U steht für “Daten hochladen” - also alles, was in der aktuell geöffneten Datei (genauer: Ebene) bearbeitet wurde. Wie gesagt, wenn Du nur bestimmt Objekte hochladen willst, führt der Weg über “Auswahl hochladen” (oder die von tippeltappel skizzierte Alternative mit einer eigenen, bereinigten Ebene).

Ergänzung: Die “Edits von heute” kann JOSM nicht ohne weiteres erkennen, d.h. Du mußt schon selbst die Objekte auswählen, die Du wirklich hochladen willst (Suchfunktion?). JOSM weiß nur: diese (600) Objekte sind seit dem Herunterladen geändert oder neu erstellt worden - und JOSM möchte standardmäßig (“Daten hochladen”) natürlich alle Bearbeitungen in die Datenbank überführen.

Danke Oli-Wan und tippeltappel, ihr wart leider etwas schneller als ich meine Frage forumlieren konnte. Das mit dem Auswählen habe ich wohl verstanden, aber wie macht man dies am effektivsten. Leider kann man in der Befehlsliste nur jeden Punkt einzeln anwählen. Jetzt müßte ich aus dem Gedächtnis alle meine heute erstellten/geänderten Nodes in der Karte mit “STRG gedrückt gehalten” anwählen. Ich glaube kaum, dass ich damit alle erwische, weil ich dann mindestens einen übersehen bzw. vergessen habe. Gibt’s da auch andere Möglichkeiten. Die Suchfunktion findet leider nichts, wenn ich z.B. den folgenden Suchbegriff eingebe: “amenity=shelter timestamp:2011-05-27”. Wie müßte die korrekte Suche aussehen, wenn ich alle heute erstellten bzw. veränderten “amenity=shelter”-Nodes markiert haben möchte?

Edit: OK, der Trick war die Datei zu speichern und neu zu öffnen. Jetzt findet JOSM auch die Veränderungen von heute. Gibts auch die Möglichkeit einen Zeitraum zu suchen, z.B. von 12-21 Uhr? Sonst werde ich wohl jede Stunde einzeln Suchen müssen, “zur Auswahl hinzufügen”.

Meines Wissens ist es in JOSM nicht möglich, nur alle heute bearbeiteten auszuwählen. Mit “modified amenity=shelter” bekommst Du alle geänderten/erstellten Schutzhütten - aber eben nicht nur die von heute.

Falls das nicht praktikabel ist, gäbe es noch einen (leider etwas aufwendigen) Umweg: Wenn Du die Datei heute noch nicht wieder gespeichert hast: speichere die aktuelle Ebene unter einem anderen Dateinamen ab, sodaß Du zwei Versionen (gestern.osm, heute.osm) hast. Die kann man dann mit geeigneten Tools vergleichen, um so die Bearbeitungen von heute auszufiltern. (Frage an die einschlägigen Experten: kann osmosis das?) Notfalls ganz klassisch mit diff.

Edit: Okay, die diff-Idee hat sich durch das zwischenzeitliche Speichern erledigt. Damit bleibt wohl nur noch die manuelle Auswahl. Für mehr Übersicht im Editor kannst Du Dir noch mit der Filter-Funktion behelfen. Einen Inversfilter (Häkchen bei I in der Filterliste) mit “modified amenity=shelter” anlegen. Dann gibts im Editor nur noch bearbeitete/neu erstellte Schutzhütten.

Hi,

ihr müsst nur in die (von JOSM gespeicherte) .osm-Datei schauen:

action=‘modify’ timestamp=‘2011-05-23T15:18:02Z’

d.h. eine Suche im JOSM mittels
modified timestamp=2011-05-27
führt nicht zum Erfolg, da ‘nur’ der timestamp (so wie sie am Server liegt bzw. lag) und dass es geändert wurde,
aber nicht der Zeitpunkt der Änderung.

Ciao,
Frank

@ fireball

Mit dem Filter bist Du vertraut?

Wenn Du den so einstellst, daß nur noch die Hütten angezeigt werden, kannst Du mit dem Befehl “alles markieren” zunächst mal eine Gesamtauswahl vornehmen.
In der Autorenliste werden Dir dann alle Autoren angezeigt, die irgendeines dieser Objekte bearbeitet haben.
Die noch nicht hochgeladenen Objekte werden ohne Autor angezeigt.
Nun kannst Du die Filterfunktion auf die Autoren ausdehnen und dadurch die Anzeige auf die noch nicht hoch geladenen Objekte beschränken.
Den Rest mußt Du von Hand machen.

Ich würde so vorgehen:
Die ausgewählten Objekte markieren, kopieren und in eine neue Ebene übertragen.
Dann aussieben/löschen, was nicht hochgeladen werden soll.

Wenn Deine OSM-Datei Daten enthält, die Du nicht hochladen möchtest, wird die Pflege dieser Datei schwierig.

Ich würde die privaten Daten in einer separaten Ebene sammeln.
Sobald Du die upgedatete osm-Datei (öffentliche Daten) mit Deinen privaten Daten zusammenwirfst, speichere diese Version unter einem neuen Namen ab, damit Du die andere weiterhin mit den Server-Daten aktualisieren kannst, ohne daß versehentlich private Daten hochgeladen werden.

Gruß
tippeltappel

Hi,

ein (etwas) umständlicher Weg wäre noch, vor dem Abspeicher nach
modified
zu suchen und all gefundenen nodes/ways/relations einen selbsterfundenen tag zu geben, z. B.
mytimemy 2011-07-26:15:34

Dann könnte man auch innerhalb von JOSM nach täglichen (bzw. stündlichen) Änderungen suchen,
selbst wenn man über mehrere Tage nicht hochgeladen hat und hat nur eine osm-Datei.

Vor dem Hochladen zum osm-Server sollte man den Tag jedoch wieder löschen :wink:

Ciao,
Frank

Also wenn ich in der Suche lediglich “timestamp:2011-05-27T19” angebe, dann findet JOSM alle heute 19:xx Uhr erstellten (auch veränderten?) Objekte. Dies funktioniert tadellos, glücklicherweise wird der Zeitstempel scheinbar erst beim Speichern der Datei angelegt, dadurch wurde meine Suche/Markierung deutlich einfacher. Ich dachte der Zeitstempel wird angelegt sobald man einen Node erstellt bzw. verändert hat. Eine Zeitraumsuche benötige ich dann also gar nicht. Ich danke Euch erstmal für den kleinen JOSM-Lehrgang :).
@tippeltappel: Danke, nein die Filterfunktion hatte ich bislang noch nicht genutzt, sehr interessant.

Ich hätte dann aber doch noch eine Frage. Vielleicht habe ich eingangs das Problem von der falschen Seite aus angegangen. Daher muß ich für mein Anliegen mit der Beschreibung wohl mal etwas weiter ausholen:
Ich habe mir deswegen eine lokale OSM-Datei angelegt, weil ich mir eine Wanderkarte erstellen/ausdrucken möchte. Nur am Rande, ich nutze Maperitive, aber dies sollte für die Problemstellung irrelevant sein. Da die Wanderkarte vergrößert werden soll (A1-Format, Maßstab 1:12.000), werden dadurch auch die Straßen breiter. Die Straßen wiederum verdecken dadurch wieder einige Objekte direkt am Straßenrand. So nun bin ich aus diesem Grund hergegangen und habe die mir wichtigen Objekte etwas mehr nach links und rechts verschoben, damit diese nach der Vergrößerung weiterhin sichtbar bleiben. Es sollte klar sein, dass ich diese und auch andere -lediglich ausdruckspezifische- Veränderungen nicht an die OSM-Datenbank übermitteln möchte/darf. Nun möchte ich aber meine mühselig verschobenen Objekte in der lokalen Datei nicht bei jedem Update verlieren bzw. jedesmal neu verschieben müssen. Auch der Tipp nur die “privaten Daten” in einer separaten OSM-Datei zu speichern, hilft da doch nicht so richtig weiter, oder? Denn die Häuser, Briefkästen, Wege, etc. die ich da aus “kosmetischen Gründen” leicht verschieben mußte, sind doch Wege und Nodes aus der OSM-Datenbank, denen ebenfalls hin und wieder ein Update wiederfahren kann. Genial wäre dann, wenn ich beim Update meiner lokalen Datei mit der OSM-Datenbank einen Konflikt angezeigt bekäme, der besagt, das der Weg/Node xy0815 in beiden Datenbeständen bereits verändert wurde. Dann könnte ich JOSM mitteilen weiterhin meinen lokalen Wege/Nodes beizubehalten und nicht mit den OSM-Daten zu aktualisieren. Hat das schon mal jemand probiert, könnte dies funktionieren oder ist dies Wunschdenken meinerseits?

Beibehalten - nicht aktualisieren.
Im Prinzip schon. Denn Du wirst bei jedem Konflikt gefragt, welche der beiden Version Du beibehalten möchtest.