Datenpunkte filtern und exportieren

Hallo,

im Rahmen eines geschichtswissenschaftlichen Seminars kam die Idee auf, eine bestimmte Gruppe an Raummarken (Denkmäler, Kirchen, Friedhöfe) in verschiedenen Regionen miteinander zu vergleichen.

Da nun niemand von den sehr großen Vergleichsgebieten per Hand eine Liste der entsprechenden Raummarken anfertigen kann, war die naheliegendste Idee die, aus bestehenden Datensätzen diese Informationen zu extrahieren.

Deshalb nachfolgende Fragen:

— Gibt es eine Möglichkeit, den Datensatz der OSM nach bestimmten Attributen/tags (z.B. Denkmal oder Denkmal-Name oder Kirche bzw. Kirche-Name) zu filtern und diese Datenpunkte dann als KML/KMZ zu exportieren, um sie in Marble oder Google Earth als Layer darstellen zu können?

— Gibt es (Desktop-) Software mit der der Datensatz der OSM gefiltert werden kann? http://overpass-turbo.eu habe ich schon gefunden, das geht in diese Richtung, liefert jedoch nur unbefriedigende Ergebnisse, wie man ganz leicht mit der Abfrage:

(
// query part for: “monument”
node"historic"=“monument”;
way"historic"=“monument”;
relation"historic"=“monument”;
);

für Berlin überprüfen kann. Es gibt in Berlin mehr als nur ein gutes Dutzend Denkmäler. Und so schlecht kann der Datensatz der OSM nicht sein, dass in dieser für Berlin nur ein Dutzend Denkmäler als solche eingetragen sind.

— Gibt es eine Möglichkeit, solche Suchen nach administrativen Entitäten einzugrenzen? Also Berlin:Denkmäler oder Brandenburg:Denkmäler? So dass am Ende einer solchen Filterabfrage ein Wert steht: Berlin X bzw. Brandenburg Y. Eine Abfrage wäre für uns zum Beispiel die nach der Anzahl der Kirchen mit dem Namen “St. Jacobi” oder “St. Peter & Paul” in Brandenburg. Diese Werte könnte man dann als Cluster auf einer Karte visualisieren. So könnten die Anzahl und die Lage von Kirchen und Friedhöfen visualisiert werden, etc.

Gibt es für solche Arten von “data mining” in der OSM entwickelte Instrumente und falls ja, welche sind das?

Vielen Dank für Antworten schon vorab.

N.

Hallo,
was Du vorhast ist mit overpass grundsätzlich alles möglich - Voraussetzung ist aber immer, dass die Objekte auch in OSM erfasst sind…
Erstmal eine Abfrage in Brandenburg nach Gebäuden ODER Gebetsorten mit St. Jacobi ODER Sankt Jacobi im Namen (z. B. auch “Kirche St. Jacobi”)

http://overpass-turbo.eu/s/10xv

Ist die historic.place-Karte auf OSM-Basis bekannt?
http://gk.historic.place/historische_objekte/l/de/index.html?zoom=16&lat=52.51846&lon=13.39883&pid=HaHbHcSaHe&select=w313670734

Hallo,

historic=monument sind die “gigantischen” Denkmäler, historic=memorial die “normalen”.

Probier mal http://overpass-turbo.eu/s/10xy

Viel Erfolg
Joachim

Ah! Wieder etwas dazu gelernt. Vielen Dank!

Das geht genau in die richtige Richtung.

Gibt es für solche Abfragen auch ein GUI / ein Desktop-Programm, mit welchem man UND- und NICHT-Verknüpfungen abfragen kann?

Also

Gebiet: “Land X”
Objekt: “Denkmal”
Filter: “XY im Namen”
Nicht: “Z im Namen / als Objektbezeichnung”

Also zum Beispiel

Gebiet: Moskau
Objekt: Denkmal
Filter: Lenin (Alle Denkmäler mit “Lenin” im Namen)
Ohne: Gedenktafeln

Eine solche Abfrage sollten dann alle Lenin-Denkmäler im Verwaltungsbereich der Stadt Moskau (nicht des Gebietes Moskau) ausgeben, die keine Gedenktafel für eine Rede, einen Auftritt, einen Besuch, eine Wohnung u.ä. Lenins sind. Damit sollten dann nur Statuen, Büsten, Wandbilder, etc. ausgegeben werden.

Also in meiner einfachen Vorstellung. Ich weiss jedoch nicht, wie gut und feinteilig in der OSM-Datenbank solche Objekte klassifiziert sind.

Gibt es irgendwo eine einfache Tabelle mit den Attributen, mit denen in der OSM-Datenbank Objekte versehen werden können?

So dass ich dann mit Hilfe dieser Tabelle Abfragen wie nachfolgende definieren könnte:

  • alle Straßen in Deutschland mit “Marx” in der Bezeichnung
  • alle Denkmäler in Deutschland mit “Marx” in der Bezeichnung
  • alle Denkmäler in Deutschland mit Errichtungsjahr 1990

Danke für Antworten schon vorab.

Jetzt ja. :wink: Danke!

Was ich suche ist eine Möglichkeit der Abfrage von bestimmten Objekten, die nicht immer historisch sein müssen, da aktuell vorhanden. Also:

  • Straßennamen
  • Denkmäler
  • Museen

aber auch historisch:

  • frühere Arbeitslager / KZ-Lager / Gulag-Lager, etc.
  • Hinrichtungsorte
  • Massengräber

Alles natürlich vorbehaltlich dem Umstand, dass solche Attribute jemals in die OSM-Datenbank eingetragen wurden und nicht nur in speziellen Datenbanken liegen, die nicht öffentlich zugänglich sind.

Diese Objekte würde ich dann gerne als KML/KMZ exportieren und als Layer auf aktuelle Satellitenbilder (z.B. in Google Earth oder Garmin BaseCamp) legen, um den Ort zu visualisieren.

In welche Richtung müsste ich suchen, um zu einem solchen Ergebnis zu kommen?

Danke für Antworten schon vorab.

Zumindest mal für einen Teil deiner Fragen ein paar Hinweise:
Die Abfragesprache mit Overpass Turbo ist schon etwas speziell, aber es gibt auch einen Assistenten, Wizard genannt (Schaltfläche in der grauen Leiste oben). Da kannst du z.B. schreiben

highway=* and name~Marx in Brandenburg

highway ist der Schlüssel für alle Straßen und Wege
= ist der Operator “ist gleich”
***** steht für alle vorkommenden Werte der Wege; du könntest auch einen bestimmten Wert, z.B. residential angeben, dann werden nur Wohnstraßen selektiert
and ist die Und-Verknüpfung mit der nächsten Abfrage
name ist der Schlüssel für Eigennamen von x-beliebigen Objekten
~ ist der Operator “enthält”
Marx ist hier der gesuchte Namensbestandteil
in Brandenburg gibt den Bereich an, in dem gesucht werden soll. Das ist eine Relation, die ein bestimmtes Gebiet beschreibt; es werden dann die zuvor definierten Abfragen nur in diesem Suchgebiet gemacht. Eine solche Relation muß natürlich existieren, was für Verwaltungsbezirke ziemlich gut erfüllt sein dürfte.

Daraus resultiert dann diese Abfrage.

Wenn man die so generiert hat, kann man sich oft erschließen, wie man die Abfrage abwandeln kann, um seine Suche zu verfeinern.
Kleiner Hinweis hierzu: standardmäßig generiert der Wizard Abfragen mit 25s Timeout; das kann für größere Gebiete zu knapp sein. Wenn eine entsprechende Meldung kommt, den Wert erhöhen und nochmal laufen lassen.

Wenn du nicht weißt, wie ein Objekt von Interesse kartiert ist, d.h. welche Schlüssel mit welchen Werten verwendet werden, um es zu beschreiben, such einfach mal auf osm.org danach, z.B. “KZ-Gedenkstätte”. Dann such dir ein passendes Objekt heraus, z.B. https://www.openstreetmap.org/way/150141297; alle Attribute (“Tags”) sind aufgelistet und die in blauer Schrift verweisen auf die Wiki-Seiten, die die Verwendung des jeweiligen Attributs beschreiben.

In overpass-turbo gibt es einen Reiter “Export”, darunter die Option “Speichere/Kopiere als KML”.

Habe mal analog zur Kirchenabfrage in #2 zunächst diese Abfrage nach historic=memorial erstellt, vgl. dazu die Dokumentation:
https://wiki.openstreetmap.org/wiki/DE:Tag:historic%3Dmemorial

http://overpass-turbo.eu/s/10Ap

Da ich des Russischen nicht mächtig bin, kann ich nicht wissen, was da konkret rumsteht, die russischen Mapper waren aber so schlau, häufig
subject:wikipedia + subject:wikidata
zu verwenden, damit habe ich in einem 2. Schritt eine Plausibititätsprüfung gemacht, die grün umrandeten Fundstellen beziehen sich mit Sicherheit auf die Person Lenins.

Darauf aufbauend eine 2. Abfrage nur nach memorial=statue ODER memorial=bust mit Lenin im Namen
http://overpass-turbo.eu/s/10Aq

Das subject:-Tagging ist eine prima Sache und man könnte auch eine Suchstrategie auf Basis subject:wikidata=Q1394 verwenden, allerdings kann man nicht davon ausgehen, dass überall so sauber getaggt wird…

Vielen Dank für die bisherigen hilfreichen Beiträge.

In den letzten beiden Tagen habe ich mit den verschiedenen Optionen von http://overpass-turbo.eu/ experimentiert. Dabei sind mir als Laien mehrere Dinge aufgefallen:

  1. Das Tagging der Objekte in der OSM ist ganz offensichtlich alles andere als konsistent. Mal werden Objekte als “monument”, mal als “memorial”, mal als “tourism”, mal als “artwork” attribuiert. Nun gut. Liegt wohl am Auge des Betrachters, hier desjenigen, der das Objekt in die Datenbank eingetragen hat. Dann muss ich halt mehrere Abfragen durchführen.

  2. Als Abfrageinstrument ist http://overpass-turbo.eu/ eher suboptimal. Zum einen ist die Laufzeit für die Abfragen sehr hoch (teilweise mehrere Minuten, je nach Größe des Filters) und zum anderen gibt es recht schnell (nach einigen wenigen Abfragen) eine Sperre der IP als Überlastungsschutz.

Vor diesem Hintergrund stellt sich die Frage erneut, ob es auch eine Möglichkeit gibt, solche Abfragen mit Hilfe eines lokal installierbaren Programms mit GUI und einer lokalen Kopie der OSM-Datenbank durchzuführen. Dies dürfte schneller sein und nicht die allgemeinen Ressourcen so sehr beanspruchen wie Abfragen über http://overpass-turbo.eu/.

In diesem Zusammenhang: Kann es sein, dass das Forum wiederkehrend “hängt”, d.h. der Server die Anfragen mit timeout verwirft?

Du kannst osmfilter verwenden, hat allerdings ein CLI und keine GUI.

Ja, das ist mitunter so, wobei mehrfaches-Haupt-Tagging mitunter aus der Sache resultiert, nicht unbedingt ein Fehler ist, und eine Auswertung nicht unbedingt behindert.
Wirklich schlechtes Tagging hat meiner Erfahrung nach 2 Gründe

  • mangelhafte Dokumentation, die aber verbessert werden kann und sukzessive verbessert wird
  • Fachkräftemangel, den DU lindern könntest :wink:

Bedenke bitte, dass dies hier im Kern ein Freiwilligen-Projekt mit beschränkten Ressourcen ist, viele Probleme sind bekannt und nur jammern hilft da nicht wirklich weiter.

Deine “Sperre” kannst Du hier einsehen: https://overpass-api.de/api/status

Ich würde mir per overpass alle relevanten Daten nach JOSM holen, speichern und dann im lokalen Datensatz rumfiltern.

Die leistungsstärkste Lösung für eine solche Anforderung ist, die Daten in eine lokale PostGIS-Datenbank zu importieren (mit osm2pgsql oder auch imposm) und dann auf dieser Datenbank Abfragen durchzuführen. Da kann man dann mit allen Mitteln der SQL-Datenbank arbeiten, ggf. für wiederkehrende Abfragen auch Indexe anlegen, um sie zu beschleunigen und so weiter.

(Was in der Regel nicht geht, ist ein späterer “Weg zurück”, als Du kannst nicht Daten in der PostGIS ändern und dann wieder zu OSM hochladen, aber das willst Du ja auch nicht, und es wäre ohnehin aus anderen Gründen problematisch.)

Die PostGIS selbst hat kein GUI, allerdings gibt es mit “pgAdmin” ein allgemeines PostgreSQL-GUI, und man kann auch mit QGIS direkt auf eine PostGIS zugreifen.

Auf diesem Wege nochmals vielen Dank für die bisherigen Tips und Tricks und Hinweise.

In den letzten Tagen habe ich etliche Abfragen durchgeführt. Dabei ist mir neben der zu meinem Bedauern extrem inkonsistenten Attribuierung von Objekten aufgefallen, dass diese nicht einheitlich als Objekte markiert sind, was bei den Abfragen zu Problemen führt.

So sind viele Denkmalanlagen (“monument” / “memorial”) kartographisch korrekt als Flächen gezeichnet. Ein Export dieser Objekte als Flächen führt folgerichtig zu Flächenmarkierungen in einer KML-Datei.

Wird dann diese KML-Datei in Programmen wie Google Earth geöffnet, dann werden diese Objekte aber eben auch nur als Flächen angezeigt, nicht als Markierung eines Objektes. Deshalb sind diese Objekte auch regelmäßig nicht als solche bei kleineren Maßstäben in Programmen wie Google Earth zu sehen, da die Flächen zum Teil nur wenige Quadratmeter ausweisen.

Beispiel: Ein Denkmal in Form einer Büste wird als Fläche in OSM markiert, mit 1m2 Größe. Eine andere Büste wird als Ort markiert, nicht als Fläche ausgewiesen. Beide Objekte sind als “historic”=“memorial” in der OSM markiert, jedoch einmal als Fläche und einmal als Ort (“point”).

Bei einer Suche nach “historic”=“memorial” werden beide Objekte als solche ausgewiesen und können in eine KML-Datei exportiert werden.

Die Objekte in dieser KML-Datei werden in Google Earth jedoch unterschiedlich sichtbar dargestellt. Einmal mit einer Markierung als Punktobjekt (“Stecknadel”) und einmal als Fläche (bei einer Büste entsprechend so klein, dass diese Fläche nur im höchsten Maßstab zu sehen ist => unbrauchbar für eine Übersichtsdarstellung).

Gibt es irgendeine Möglichkeit, diese als Flächen ausgewiesenen Objekte zu Punkten zu konvertieren, damit sie auch bei kleinen Maßstäben als Objekte sichtbar sind?

Danke für eine weiterführende Antwort schon vorab.

Hallo -Rubashov-,

Fundmenge in einem OSM-Format bzw. Download der Rohdaten (pbf) von https://www.geofabrik.de/data/download.html

Osmconvert --all-to-nodes

https://wiki.openstreetmap.org/wiki/DE:Osmconvert
https://wiki.openstreetmap.org/wiki/DE:Osmfilter

Eine Verteilung der verschidenen Tags kannst Du schnell mit https://taginfo.openstreetmap.org/ prüfen.

Viel Erfolg
Joachim

Auch in overpass kannst Du Flächen auf Punkte reduzieren:
out center;
siehe https://wiki.openstreetmap.org/wiki/Overpass_API/Overpass_QL#Standalone_queries

Also in Overpass kannst du entsprechend halt jeweils z.B. den ersten Node vom Way ausgeben lassen, Beispiel (kommentiert):
https://overpass-turbo.eu/s/10OL
Allerdings bekommst du dann halt wirklich nur den Node vom Way in das Ergebnis und an diesem Node hängen keinerlei Informationen in der Regel mehr (also der hat ja nicht die entsprechenden Tags, sondern der Way zu dem er gehört).

Ein anderer Weg ist es, sich halt jeweils die Mittelpunkte bei Relationen/Ways ausgeben zu lassen. Nach dem “out” einfach ein “center” angefügt. Somit wird nur noch der Mittelpunkt eines Ways ausgegeben:
https://overpass-turbo.eu/s/10OM
Edit: Und dieser Mittelpunkt hat dann noch alle Tags des zugehörigen Ways. :wink:

Wenn du die Daten halt schon mit Overpass abgefragt hast, ist sicherlich der Weg von DD1GJ hilfreicher.

Gruß,
asca

Diese nachträgliche Konvertierungsmethode ist zum einen hier deutlich zeitaufwendiger als eine Neuabfrage der Daten mit einem zusätzlichen Parameter und zum anderen bringt die Konvertierung in Google Earth nur Wegpunkte, keine Markierungen. Die Wegpunkte sind zwar schon deutlich besser als nur Flächen, aber bei weitem nicht so sichtbar wie eine Markierung.

Nachfolgende Abfragesynthax führt zum gewünschten Ergebnis, bei dem auch als Denkmal attribuierte Flächen in Google Earth als Markierungen dargestellt werden (sie erscheinen zwei Mal, einmal als Fläche und zusätzlich als Markierung):

// Abfrage OSM

{{geocodeArea:Germany}}->.a;

(
nwr(area.a)[historic=monument];

);

(._; >;);

out meta;

out center;

Das war der entscheidende Tip, der bei einer Abfrage mit anschließendem Export in eine KML-Datei in Google Earth die abgefragten Objekte als Markierung darstellt, ungeachtet dessen, ob das Objekt als Punkt oder als Fläche in der OSM-Datenbank eingetragen ist.

Jetzt muss ich nur noch herausfinden, wie ich die einfachen Abfragen wie diese:

// Abfrage OSM

{{geocodeArea:Germany}}->.a;

(
  nwr(area.a)[historic=monument];

);

(._; >;);

out meta;

out center;

so anpasse/ergänze/erweitere, dass ich additive Verknüpfungen und Ausschlüsse bestimmen kann.

Also:

alle “monument” UND “memorial” in Deutschland mit “name”=“x”

bzw.

alle Objekte in Deutschland mit “name”=“x” aber OHNE “way” UND OHNE “place”

So richtig habe ich diese Abfragesprache noch nicht verstanden. :confused:

“Nebenan” gerade vieles schon erklärt - siehe und die dortigen verlinkten Overpass-Beispiele: https://forum.openstreetmap.org/viewtopic.php?pid=810564#p810564

Ansonsten explizit für deine beiden Overpass-“Anfragen” Beispiele:
https://overpass-turbo.eu/s/10Qa

Bitte zieh den Textbereich so breit, dass es keine Umbrüche gibt, die Kommentare sind extra so formatiert, dass die Linien darauf zeigen, was erklärt wird.