Bulk Daten importieren

Hallo zusammen!

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.ä.

Vielen Dank und beste Grüße
Richeeyyy

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.

Ich möchte kein Changeset öffnen und dann jedes Element einzeln anhängen.

Wie genau mache ich das über die API? Hättest du da eine Doku zu? :slight_smile:

Ich kenne auch nur die API Docu: https://wiki.openstreetmap.org/wiki/API_v0.6
Für die Details müsste ich jetzt in die Sourcen schauen, vielleicht die vom einfachen Level0 Editor:
https://wiki.openstreetmap.org/wiki/Level0
Oder willst Du ganz ohne Api auskommen?

Das ist ja interessant, von welcher Uni bist du denn?

Ich möchte ausschließlich die API nutzen.

TU Dresden

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.

Relationen gibt es in meinem Datensatz keine. Es sind nur Nodes und Ways. Aber ich denke, ich werde nun einfach alle Elemente einzeln übertragen.

Wie stellst Du Dir das vor?

mittels PUT api/0.6/node/create [payload]

https://wiki.openstreetmap.org/wiki/API_v0.6#Create:PUT.2Fapi.2F0.6.2F.5Bnode.7Cway.7Crelation.5D.2Fcreate

Einfach https://wiki.openstreetmap.org/wiki/API_v0.6#Diff_upload:POST.2Fapi.2F0.6.2Fchangeset.2F.23id.2Fupload benutzen.

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.

Danke! :slight_smile: