Hallo, ich habe mal eine Frage. Ich probiere über OSM eine automatische Anfrage über die Nutzung eines Gebäudes zu erstellen. Es funktioniert auch soweit gut. Ich lasse mir über ein Python-Skript eine Vielzahl an OSM_IDs ausgeben zu verschiedenen Adressen. Die Datensätze habe ich mir über die Geofabrik runtergeladen.
Nun kommt mein Problem, zu meinem ersten Testsatz hat die Anfrage gut geklappt bei meiner zweiten Anfrage habe ich nur zu sehr wenigen OSM_IDs einen Output bekommen, obwohl die Daten eigentlich da sein sollten. Ich habe testweise einzelne Adressen in OSM eingegeben und dort auch ein Ergebnis bekommen. Woran könnte es liegen, dass ich dort kaum Ergebnisse bekommen habe?
Den Datensatz von Geofabrik öffne ich über QGIS in Form von shp-Dateien. In der dortigen Attributtabelle stehen auch nicht die Elemente, sondern nur die IDs. Hast du eine Idee, wie ich da vorgehen kann?
In der Dokumentation zu den Shapefile-Extrakten steht:
OSM Id taken from the Id of this feature (node_id, way_id, or relation_id) in the OSM database. In case several features in the OSM database are joined into one feature, this is one of the Ids. This Id is not necessarily unique because one OSM object can result in several geometry objects.
Da man den Element-Typ nicht aus den Daten bekommt, würde ich sagen, dass Du in diesem Fall die IDs aus den Shape-Dateien nicht verwenden kannst.
Die Shape-Extrakte enthalten auch nicht alle in OSM vorhandenen Daten.
Z.B. ist die Anzahl der Geschosse nicht angegeben. Wenn Du ein Gebäude mit kleiner Grundfläche und nur einem Geschoss hast, und keine weitere Information, dann wird es vermutlich kein Mehrfamilienhaus sein. Bestimmte Gebäudeklassen sind dann unwahrscheinlich.
Oder nimm Hausnummern, die sind auch nicht enthalten. Ein Gebäude mit Hausnummer hat mit höherer Wahrscheinlichkeit eine „wichtigere“ Funktion als eins ohne.
Bestimmte POI-Klassen scheinen meiner Ansicht nach zu fehlen? office=* scheint nicht in den Daten vorhanden zu sein. Ein Gebäude mit vielen enthaltenen office=*-POIs könnte ein Bürogebäude sein.
Oder eignet sich ein anderer Weg deutlich besser als meiner. Also nochmal allgemein mein Problemstellung: Das automatisierte Herausfinden der Gebäude-Hauptnutzungsart. Ich bin sehr neu in dem Thema, freue mich also über konstruktive Vorschläge.
Es gibt viele Wege. Dafür müsstest Du einmal 2 Schritte zurück gehen und Deine Anforderungen aufschreiben. Vielleicht als neues Thema, denn die „fehlenden IDs“ sind ja jetzt beantwortet.
Du möchtest die Gebäude-Nutzung herausfinden. building=* kennst Du? Ich vermute, dass Du Gebäude klassifizieren willst, die nur mit building=yes
getaggt sind?
Welche OSM-Daten möchtest Du verwenden? POIs, Landuse, Grundfläche/Geschosse, Hausnummern, Straßenklassen, Parkplätze, …?
Was ist die Eingabe und was ist die Ausgabe? Möchtest Du einen Datensatz einmal komplett durchrechnen und die Ausgabe ist ein Geodatensatz mit annotierten Gebäuden? Dann würde man wahrscheinlich einen kompletten Dump der OSM-Daten in eine Datenbank laden und dort auswerten. Oder ist es interaktiv, der Benutzer klickt auf eine Karte und bekommt die Auswertung für nur ein Gebäude angezeigt? Das könnte man z.B. mit Overpass implementieren, indem man die Daten rund um die Koordinate abfragt.
Soll es für eine Stadt, eine Region, das Land oder die ganze Welt gehen? Das hat etwas mit der Datenmenge zu tun: Kann man es im Hauptspeicher berechnen oder braucht man eine Datenbank. Aber auch mit der OSM-Qualität und Kultur in anderen Teilen der Welt, wie Gebäude genutzt werden.
Edit: Aktualisiert nach neuen Informationen
Deine IDs bestehen nur aus Ziffern und sind nicht eindeutig. Sie reichen nicht aus, um Objekte in OSM zu identifizieren.
In OSM gibt es Nodes, Ways und Relations als Elemente. Alle 3 Arten von Elementen werden sequentiell durchnummeriert. Wenn man als ID nur 123456 vorliegen hat, ist das nicht eindeutig, weil es ein Node, Way oder Relation sein könnte.
ID 307179079 könnte sein: https://www.openstreetmap.org/node/307179079
(korrekt), https://www.openstreetmap.org/way/307179079
(gelöschte Einfahrt in Schottland) oder https://www.openstreetmap.org/relation/307179079
(existiert noch nicht).
Ich lasse mir über ein Python-Skript eine Vielzahl an OSM_IDs ausgeben
Du musst Deine Verarbeitungskette anpassen, so dass die Information ob Node, Way oder Relation Teil der ID ist. Du könntest statt 307179079
z.B. node/307179079
verwenden.
So… Zu folgenden Adressen habe ich mir eine OSM_ID erstellen lassen und habe leider kein Ergebnis in meinen Datensätzen bekommen:
Tangermünder Straße 129, Berlin (ID: 307179079), laut OSM: Haus (Deutsche Telekom AG) und Fitnessstudio (Power Factory GmbH)
Buckower Damm 50, Berlin (ID: 9002559064), laut OSM: Supermarkt (REWE), Schnellimbiss (Huy Phat) etc.
Meeraner Straße 15, Berlin (ID: 633748420), laut OSM: Reifenhändler (MCS Reifen-Berlin.de)
Mit der exakt gleichen Vorgehensweise bin ich bei anderen Liegenschaften wie gesagt auf Ergebnisse gekommen. Beispiel:
Habersaathstraße 58 Berlin (ID: 53492948), laut OSM ein Gewerbegebäude und das habe ich aus meinem Datensatz ablesen können.
Ich hoffe die Informationen reichen, ansonsten bitte gerne melden
Danke für die schnelle Rückmeldung, ich habe die Problemlage an meiner Variante auf jeden Fall verstanden. Nur stehe ich jetzt vor einer weiteren Herausforderung: Den Datensatz von Geofabrik öffne ich über QGIS in Form von shp-Dateien. In der dortigen Attributtabelle stehen auch nicht die Elemente, sondern nur die IDs. Hast du eine Idee, wie ich da vorgehen kann?
Oder eignet sich ein anderer Weg deutlich besser als meiner. Also nochmal allgemein mein Problemstellung: Das automatisierte Herausfinden der Gebäude-Hauptnutzungsart. Ich bin sehr neu in dem Thema, freue mich also über konstruktive Vorschläge.