Ich arbeite gerade an einem Forschungsprojekt, in dem ich Innenkartierungen von Gebäuden als XML Payload erstelle (mit nodes und ways). Diese Daten möchte ich über die API auf den uni-eigenen OSM-Server importieren.
Die API verfügt zwar über Methoden zur Einpflegung von einzelnen Elementen (Nodes, Ways, Relations), jedoch bestehen meine Daten aus mehreren tausend Elementen. Ich würde also gerne alle Daten mit einem API-Aufruf importieren.
Ich finde in der API-Doku jedoch nur diese Changesets, an die man aber keine Elemente hängen kann. Wisst ihr, wie man das realisieren kann? Oder bleibt mir nichts anderes übrig als jedes Element einzeln zu senden?
Der Import soll auf jeden Fall über die API geschehen und nicht über JOSM o.ä.
Wie ist das gemeint? Soweit ich weiss macht jeder OSM Editor macht genau das: Changeset öffnen, Elemente dranhängen, changeset schließen.
Oder auch so: kompletten Changeset als Datei anlegen und dann hochladen.
Man kann aber nicht an einen bereits geschlossenen CS etwas dranhängen.
In der Api Doku findet man https://wiki.openstreetmap.org/wiki/API_v0.6#Changeset_summary
sowie einen Hinweis zur Verwendung von curl. Im Prinzip funktiionieren all API calls gleich:
HTTP(S) Verbindung herstellen, Daten über die Verbindung schicken, Antwort empfangen,Verbindung schließen, Antwort auswerten.
Aus meiner Sicht müsste aber Dein Hauptproblem die Erstellung eines Changesets sein. Du kannst ja nicht einfach immer wieder neue Daten reinstecken, Du musst ja auch alte Daten löschen oder noch besser alte Daten updaten. Das ist nicht trivial, da es insbesondere bei Relationen auch rekursive Abhängkeiten gibt.
Genau dafür brauchst Du erst mal einen offenen CS.
Edit: Meine Antwort bezog sich auf “mittels PUT api/0.6/node/create [payload]”, gilt aber auch für Simons Antwort.