OSM-Daten zu bestimmten Einrichtungen ermitteln / erhalten?

… oder habe ich das was falsch verstanden und die Suche läuft umgekehrt, mit Hilfe von CSV-Daten?

Die Seite zur Sprache von Overpass Query-Language ist sehr informativ, man muss sich allerdings durchbeißen (aus eigener Erfahrung: Beispiel), kann sich dann allerdings sehr komplexe Suchen zusammenbauen.

1 Like

Das Beispiel oben liefert die zugehörigen Daten im XML-Format.

Diese Turobo-Anfrage liefert das dazugehörige Gebiet auf einer Karte.

Edit 2023-04-23 11:54 UTC:
D.h. du machst Anfragen an http://overpass-api.de/api/interpreter um an die OSM-Daten zu kommen und Anfragen an https://overpass-turbo.eu/map.html um Dinge auf einer Karte anzuzeigen.

1 Like

Hallo ToniE vielen Dank für deine Tipps und Hinweise. Danke auf für den Link zu den Manpages von Overpass. Das ist sehr hilfreich.

Wie gesagt
am Anfang - da brauch ich wohl zunächst OSM - DATEN - mit denen ich dann weiterabeiten kann: deshalb dein Tipp zu den Anfragen an http://overpass-api.de/api/interpreter um an die OSM-Daten zu kommen.

Wie gesagt - wenn ich lediglich die Namen u.s.w. der Schulen hab - dann brauch ich hier wohl noch mehr Daten.

also es geht darum, dass ich ganz am Anfang mal die Daten erhalte - von z.B den Schulen hier…

Geschwister-Scholl-Gymnasium, Mannheim; 
Kurfürst Friedrich Gymnasium, Heidelberg;
Hölderlin-Gymnasium, Heidelberg;
Bunsen Gymnasium, Heidelberg; 
Käthe Kollwitz Schule; Bruchsal;

hmm - also was wäre wenn ich z.B. via einer Query wie der folgenden - versuche an Daten zu gelangen:

das hier würde normalerweise einige Einträge liefern ( im Mom. ist irgendwas buggy ) - und ich hätte hier sagen wir mal schon ein paar Einträge für Schulen innerhalb Münchens.

Und nun denke ich dass ich mit diesen Einträgen ggf. einfach weiterarbeiten könnte:


[out:csv(::id,::type,::lon,::lat,amenity,name,"addr:postcode","addr:city","addr:street","addr:housenumber","contact:website",website,"contact:email")]
[timeout:600];
rel[boundary=administrative][admin_level=6][name="München"] -> .city;
(nwr[amenity=hospital][name](around.city:2000);
nwr[amenity=school][name](around.city:2000);
nwr[amenity=church][name](around.city:2000);
nwr[amenity=childcare][name](around.city:2000);
nwr[amenity=nursing_home][name](around.city:2000););
out center;

Zwischenbemerkung: warum diese Abfrage im Moment nichts ausgibt - warum die hängt und hier gewissermaßen alles “leer” bleibt ist im Moment auch ein Rätsel.

wie gesagt: ich glaub dass dabei auch was rauskäme. DAnn könnte ich damit weiterarbeiten.


[out:json][timeout:25];
(
  way(148345076);
  way(257150895);
  way(48788425);
);

out body;
>;
out skel qt;

denn - mit diesen Daten hier

  way(148345076);
  way(257150895);
  way(48788425);

mit denen kann man wohl was anfangen - in einer Overpass-Turbo-Query!?

Der Punkt - um an diese Daten zu gelangen, die ich dann der Overpass-Query übergeben kann - um dahin zu gelangen brauche ich aus diesen human readable - Angaben noch mehr … - muss noch mehr gewinnen. aus

Geschwister-Scholl-Gymnasium, Mannheim; 
Kurfürst Friedrich Gymnasium, Heidelberg;
Hölderlin-Gymnasium, Heidelberg;
Bunsen Gymnasium, Heidelberg; 
Käthe Kollwitz Schule; Bruchsal;

Muss nämlich ein paar Daten gewinnen wie diese hier

  way(148345076);
  way(257150895);
  way(48788425);

ist das so schlüssig!? Also sehr gerne versuche ich hier einiges. Will das gerne hinbekommen und mich hier durchbeissen
ps . hab mich in den Seiten früher als umgetan - als ich noch mehr mit OSM gemacht habe.

viele Grüße
TagThe World

btw Deine Tiipps zu der UMap waren übrigens total gut u. haben hier sehr vie weitergeholfen. - im Moment ist mir lediglich noch eingefallen - mal wieder den
a. Umgang u. die
b. Praxis

mit Overpass-Turbo wieder etwas aufzufrischen. - und ich interessiere mich eben im Thread dafür - ob man den nicht Overpass-Turbo.eu einfach ein paar "sagen wir mal " "maschinenlesbare OSM-DATEN anbietet - anstatt, dem Schulnamen nämlich - und er visualisiert das dann …

glg.

hallo und guten Tag ToniE, nochmals vielen vielne Dank für deine fortgesetzte Hilfe - die so nachhaltig ist. Das ist toll: ich komme hier weiter und merke, wie ich ein paar Dinge, die mir früher leichter gefallen sind jetzt wieder langsam und Schritt für Schritt ausprobiere.

Also - ich denk, dass die Schritte die ich für die Erstellung einer Map mit bestimmten Inhalten - dass ich hier halt einfach Schritt für Schritt vorgehen muss.

also und dann eben - um verschiedene Daten zu erhalten - ggf. via Nomnatim gehen kann / könnte:

Find places by name or address (Geocoding)
Nominatim can power the search box on your website, allowing your users to type free-form queries (“Cafe Paris, New York”) in any language. It also offers a structured query mode (“postcode=12345”, “city=London”, “type=cafe”) that helps you to automate geocoding of extensive address lists.

Look up addresses for a location (Reverse geocoding)
Given a latitude and longitude anywhere on the planet, Nominatim can find the nearest address. It can do the same for any OSM object given its ID.

oder - wenn ich die Seite "openstreetmap.org " verwende - dann kann ich ja hier auch nach Entitäten suchen und auf diese Weise Daten gewinnen:

also sagen wir mal, ich brauch die DATEN (die ich später via Overpass-Turbo Queries visualisieren lassen will - von drei Heidelberger Schulen

a dem Bunsengymnasium
b. dem Hölderlin-Gymnasium
c. dem Kurfürst Friedrich Gymnasium ( alles drei sind Heidelberger Schulen)

dann kann ich ja auch auf der OpenStreetmap-Seite die kleinen Abfragen machen:
und erhalte dann die folgenden DATEN:

zunächst:

a. Knoten: Bunsengymnasium (107479229) Version #17
Bearbeitet vor etwa 2 Jahren von EvanE
Änderungssatz #98435270
Standort: 49,4168625, 8,6756639
https://www.openstreetmap.org/node/107479229#map=18/49.41677/8.67632

und

b. Knoten: Hölderlin-Gymnasium (1029574412)
Version #13
update website of feature #maproulette https://maproulette.org/browse/challenges/38361Änderungssatz #133684495
Standort: 49,4092888, 8,7006167
https://www.openstreetmap.org/node/1029574412#map=19/49.40929/8.70062

und

c. Relation: Kurfürst-Friedrich-Gymnasium (13561009)
Version #1 Schule verbessert
Bearbeitet vor über einem Jahr von whb
Änderungssatz #115050392
Weg: Eine-Welt-Schule (48788425)
https://www.openstreetmap.org/relation/13561009

und mit diesen Daten, da sollte ich ja auch dann fortfahren können - via einer Overpass-Turbo-Query hier:

etwa in dieser Form - (das sind nun andere Daten - vgl. ganz ganz oben im Thread)

[out:json][timeout:25];
(
  way(148345076);
  way(257150895);
  way(48788425);
);
out body;
>;
out skel qt;

hmm - das sollte ggf. also gehen - dass ich auf diesen Wegen - ein paar Daten auf einer Map zusammenstelle und visualisiere

Freue mich von Dir wieder zu hören.
VG

1 Like

Nein, denn eigentlich sollte das Ziel ja nicht sein, die Node/Way/Relation-ID eines Objektes zu bekommen um damit weiter zu arbeiten - es sei denn: ganau das ist dein Ziel.

Aber wenn ich konkret sowas wie

Geschwister-Scholl-Gymnasium, Mannheim; 

habe, dann suche ich doch OSM-Objekte Node/Way/Relation mit Eigenschaften, in einem bestimmten Gebiet.

area([boundary=administrative][admin_level=6][name="Mannheim"]);
nwr(area)[amenity=school][name~'Geschwister.Scholl'];

Irgendwie so, ohne Garantie für Korrektheit.

Die Frage ist halt, was du als Ergebnis haben möchtest.

2 Likes

Nee, aber “mach’ dich mal frei vom Gedanken” im Overpass die way-ID zu verwenden. Denn die way-ID ist u.U. nicht von Dauer, kann beim nächsten Edit verschwinden oder nur einen Teil des Objektes beschreiben (Haus geteilt; building → building:part + …) - da kann vieles passieren.

Du kannst/solltest stattdessen Beschreiben, wie du zur way-ID gekommen bist:
Ersetze

way(148345076);

durch eine Suchbeschreibung wie in meinem anderen Post.

1 Like

Ich bin kein Overpass-Experte, da gibt es bessere.
Ausgangspunkt ist aber

  • was du an Daten, in welcher Form hast
  • was du erreichen willst

Das ist mit noch nicht so recht klar

2 Likes

ich fand das keinen schlechten Ansatz, mit Nominatim die Objekt-IDs suchen und damit über overpassApi die Daten runterladen. Klar kann man auch in Overpass mit regex in searchareas suchen und braucht dann keine ids, aber das erste sah mir für Anfänger einfacher aus, da muss man nicht wissen, welcher admin_level Mannheim ist oder wie man in areas sucht. Die ids sind nicht unbedingt für die Ewigkeit, aber für die Zeit zwischen der Nominatimsuche und dem Runterladen mit overpass sollten sie funktionieren, und vermutlich sehr überwiegend auch in 2 Jahren noch, wenn man die Daten vielleicht updaten will.

1 Like

Unter dem Aspekte: ja.

1 Like

Hallo u. guten Abend @ToniE und @dieterdreist

vorweg vielen Dank für Eure Beitraege, die vielen guten Ideen und die Diskussion der Ansätze die man hier nehmen kann.

was beabsichitigt ist ist das Darstellen einiger Schulen auf einer Map:

Geschwister-Scholl-Gymnasium, Mannheim; 
Kurfürst Friedrich Gymnasium, Heidelberg;
Hölderlin-Gymnasium, Heidelberg;
Bunsen Gymnasium, Heidelberg; 
Käthe Kollwitz Schule; Bruchsal;

und noch ca. 6 weitere Schulen aus der Region.

Also ich find ja deine Erwägungen, Toni sehr gut und auch nachvollziehbar. Auch die Idee mit dem “Verfallsdatum” der Objekt-ID , die leuchtet auch ein. Die damit verbunden Ansätze, das ganz korrekt zu ermitteln - die find ich auch nachvollziehbar.

Im Moment brauch ich die Visualisierungen nur als proof of concept - und da müssen die Daten nicht eine Ewigkeit halten… So gesehen find ich Dieters Ideen auch nachvollziehbar. Und ich komm damit wohl schneller zum Ziel -

ich fand das keinen schlechten Ansatz, mit Nominatim die Objekt-IDs suchen und damit über overpassApi die Daten runterladen. Klar kann man auch in Overpass mit regex in searchareas suchen und braucht dann keine ids, aber das erste sah mir für Anfänger einfacher aus, da muss man nicht wissen, welcher admin_level Mannheim ist oder wie man in areas sucht. Die ids sind nicht unbedingt für die Ewigkeit, aber für die Zeit zwischen der Nominatimsuche und dem Runterladen mit overpass sollten sie.

ich würde auch sagen, dass die Datenlange (und hier die Persistenz) hinreichend exakt ist und so gesehen für meine Zwecke mit den Objekt-IDs ganz gut arbeiten kann. Also wenn ich die DATEN, (sprich die Objekt-IDs) habe dann kann ich mit

a. Overpass-turbo.eu oder
b. UMap arbeiten.

Ich sollte die Daten ( also sagen wir die Objekt IDs Overpass übergeben können, und dann damit - für die 10 bis ca. 15 Schulen eine Map erstellen können.

Nebenbei - also mit Umap habeb ich erste Versuche gestern schon unternommen - das sieht auch sehr vielversprechend aus

Nett ist, dass man da auch einige Einstelllungen vornehmen kann

Also soweit ich überblicke, kann amn da

  • die Farbe der Marker wählen,
  • mit verschiedenen Layern arbeiten,
  • die Größe der Marker ( pins ) wählen - und hier die womöglich noch kleiner und filigraner machen als in dem hier gezeigten Beispiel, was auch nicht schlecht wäre.

Also - ich denke dass wenn ich mit den Objekt-IDs in beiden Verfahrensweisen - sowohl mit Overpass-Turbo als auch mit Umap arbeiten kann, und bei diesen beiden Verfahren mittels Objetk-IDs auch dann visualisieren kann dann ist das schon echt gut. Mehr brauche ich im Moment nicht.

Freue mich an diesem Thread, wo ich so vieles lerne.

Euch einen schönen Abend - Viele Grüße TagTheWorld;)

hier noch ein weiteres Beispiel - meiner allerersten Versuche mit umap: :wink:

2 Likes

eigentlich brauchst du für deine Karte nur pro Schule jeweils die Koordinaten (und die Daten die du anzeigen willst), wenn du nur einen Punkt anzeigen willst. Der bleibt dann auch an dieser Stelle unabhängig davon wie sich die OSM Daten weiterentwickeln. Je nachdem, was du vorhast, ist vielleicht die Beschäftigung mit leaflet hilfreich, damit kann man Webkarten anzeigen, und Marker und Popups etc. (es ist der Teil der die Karte anzeigt bei Overpass Turbo und Umap):
https://leafletjs.com/index.html

2 Likes

hallo und guten Abend Dieter,

vielen dank für deine Rückmeldung - und das Teilen deiner Einschätzung.

ich denk das auch so:

das reicht - wenn ich das so mache wie du sagst - u. ja: darüber hinaus ists sicher auch interessant sich mal mit leaflet sich zu befassen.

Hier sind dann andere Datei-Formate noch wichtig, denke ich mal.

1 Like

hallo und guten Abend,

also - in diesem Zusammenhang wundert mich etwas der folgende Befund.: Diese u. g. Abfrage - die liefert mir ein - für mich zumindestens - merkwürdiges Ergebnis:



[out:json];
node(around:500, 49.50896725, 8.537402509088963);
node(around:500, 49.50896725,8.537402509088963#);
node(around:49.12825545,8.601360194380447);
node(around:49.314524000000006,8.54444815052659);

out;

also - ich habe hier - offen gestanden - lediglich mit 5 Punkten oder Markern gerechnet - nciht mit 400 bis 600 Markern wie dargestellt.####

hier die Werte die ich via nominatim bezogen habe. - m.a.W. ich bin davon ausgegangen dass hier die “WERTE” der Schulen gewissermaßen “drinnestecken” - - aber wie schon erwähnt - hab ich nicht damit gerechnet dass ich 500 Markierungen auf der Landkarte vorfinde.
Frage - ist denn ggf. hier etwas schief gelaufen -. mit der Übergabe der Daten

was meint ihr denn!?+

yyyy

Helmstadt-Bargen
https://nominatim.openstreetmap.org/ui/details.html?osmtype=R&osmid=454184&class=boundary
icon for boundary administrative
Name
Helmstadt-Bargen (name)
Type boundary:administrative
Last Updated 2023-02-10T10:03:51+00:00
Admin Level 8
Search Rank 16Käthe-Kollwitz-Schule link to this page
icon for amenity school

yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy

Käthe-Kollwitz-Schule (name)
Type amenity:school
Last Updated 2023-04-15T14:05:07+00:00
Search Rank 30
Address Rank 30 (house / building)
Importance 0.00000999999999995449
Coverage Polygon
Centre Point (lat,lon) 49.12825545,8.601360194380447
OSM way 326705700
Place Id 186778546 (on this server)
Computed Postcode 76646 (how?)
Address Tags
Bruchsal (city)
DE (country)
5 (housenumber)
76646 (postcode)
Reserveallee (street)
Extra Tags
https://www.kks-bruchsal.de/ (website)

Address Rank 16 (city / town / village)
Importance 0.4229037337152129
Coverage Polygon
Centre Point (lat,lon) 49.3201141,8.984822429657545

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

Theodor-Heuß-Realschule link to this page
icon for amenity school
Name
Theodor-Heuß-Realschule (name)
Type amenity:school
Last Updated 2022-12-30T16:13:38+00:00
Search Rank 30
Address Rank 30 (house / building)
Importance 0.00000999999999995449
Coverage Polygon
Centre Point (lat,lon) 49.314524000000006,8.54444815052659
OSM way 533594565
Place Id 222903509 (on this server)
Computed Postcode 68766 (how?)
Address Tags
Hockenheim (city)
DE (country)
17 (housenumber)
68766 (postcode)
Schubertstraße (street)
Extra Tags
http://www.thrs-hockenheim.de/ (website)
limited (wheelchair)
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy

Gemeinschaftsschule Karlsbad-Waldb

Hintergrund;

2 Likes

Du fragst Overpass nach allen Punkten im Umkreis von 500m um einen Punkt und bekommst genau das geliefert. Da Schulen in der Regel in einem städtischen Umfeld liegen, sind diese Mengen an Punkten nicht verwunderlich. Wenn du nur an Schulen interessiert bist, musst du das in der Abfrage angeben.

BTW, es ist im Forum nicht üblich, dasselbe Thema parallel in zwei Fäden zu diskutieren, auch nicht, wenn es einmal auf Deutsch und einmal auf Englisch geschieht.

3 Likes

hallo RainerU
vielen Dank für deine Rückmeldung. Das leuchtet ein - dass ich hier genau sein muss u. diesen Radius dann auch weglasse.

Ich werde das ausprobieren - und gucken dass ich auf diese Weise den “Überhang” wegbekomme - und am Ende nur noch einen einzigen Punkt habe - im Ergebnis.

also wenn ich nur einen einzigen Punkt haben will, dann kann ich das ja auch auf Null setzen - die Umgebung.

[out:json];
node(around:0, 49.50896725, 8.537402509088963);
node(around:0, 49.50896725,8.537402509088963);
node(around:0, 49.12825545,8.601360194380447);
node(around:0, 49.314524000000006,8.54444815052659);

out;

ich hab die mal auf Null gesetzt. Aber ich glaube, dass ich das ja auch genausogut weglassn könnte - den ganzen “around”-Ausdruck…, denkt ihr nicht auch!?

-Vielen Dank
Und danke für den Hinweis halt das Thema nur in einer Sprache zu besprechen. Werde mich da dran halten.

Vielen Dank für den tollen Support hier -
das ist echt klasse wie nachhaltig hier unterstützt wird.

Euch allen einen schönen Sonntag
TagTheWorld


[out:json];
node(49.50896725, 8.537402509088963);
node(49.50896725,8.537402509088963);
node(49.12825545,8.601360194380447);
node(49.314524000000006,8.54444815052659);

out;

führt zu

Ein Fehler ist während der Ausführung der Abfrage aufgetreten. Folgendes hat die API als Fehlermeldung zurückgegeben:
Error: line 3: parse error: bbox requires four arguments
Error: line 4: parse error: bbox requires four arguments
Error: line 5: parse error: bbox requires four arguments
Error: line 6: parse error: bbox requires four arguments

Die Fehlermeldung weist m.E. darauf hin, dass der Abfrage der Parameter around fehlt, der den Suchradius um einen bestimmten Breiten- und Längengradpunkt angibt. Das korrekte Format zum Abfragen von Knoten innerhalb eines bestimmten Radius von einem Mittelpunkt ist around(radius, lat, lon).

hmm - soll ich den auf Null sezten - oder wie könnte ich noch fortfahren, da ich ja lediglich Punkte haben will - ganz (!!) ohne Umgebungen… - also am Ende sollen nur die vier Punkte auf der Map erscheinen - und sonst nichts…

Nein, du musst auf amenity=school und/oder andere Tags filtern. Wie das geht, wurde an anderer Stelle schon erklärt, wenn ich mich nicht täusche.

Ich verstehe auch nicht, welche Informationen du dir aus OSM holen willst.

3 Likes

hallo - vielen Dank für die schnelle Antwort

Mein Anliegen: ich will lediglich die DATEN die ich habe “visualisieren” - m.a.W. : ich will auf der Map (via overpass-turbo) oder Umap: ich will hier lediglich auf der Map den Punkt darstellen - den die Schule auf der Karte bietet.

  • und die Schritte sind die:

a. ich habe eine Adresse einer Schule
b. via Nominatim such ich mir die Koordinaten: lon lat
c. via Overpass-Turbo will ich die Lage visualisiern.

Mach ich hier etwas grundlegend falsch!?

Falsch nicht, aber es geht mMn einfacher: Du holst dir die Koordinaten mit Nominatim oder Overpass und machst damit eine umap-Karte. Am einfachsten ist es, die Daten mit Overpass abfragen, in einem für Umap geeigneten Format, z.B. GeoJson oder GPX, exportieren und damit die umap-Karte erzeugen.

1 Like

Hallo Rainer,

vielen Dank !

Du holst dir die Koordinaten mit Nominatim oder Overpass und machst damit eine umap-Karte. Am einfachsten ist es, die Daten mit Overpass abfragen, in einem für Umap geeigneten Format, z.B. GeoJson oder GPX, exportieren und damit die umap-Karte erzeugen.

Vielen Dank für die Tipps. Hab früher mehr mit Overpass gemacht. Die Ausgabeformate - ich muss mich hier selber wieder etwas einlesen. Und vllt. ist ja dieser Thread sehr sehr geeignet sich wieder diese Zusammenhänge klar zu machen. Danke für deinen Tipp also hier das ganze etwas mehr auf den Punkt zu bringen: In diesem Thread lerne ich viel wieder neu. Danke. Um sicherzugehen, dass ich alles halbwegs richtig verstanden hab . muss ich das machmal schreiben.

zum GeoJSON format mit einer Overpass query; die sieht dann etwa so aus,


[out:json][bbox:{{bbox}}];
(
  node(around:500, 49.50896725, 8.537402509088963);
  node(around:500, 49.50896725, 8.537402509088963);
  node(around:500, 49.12825545, 8.601360194380447);
  node(around:500, 49.314524000000006, 8.54444815052659);
);
out body;

Also bei der Ausgaben eine Abfrage gibt die Direktive [out:json] an, dass das Ausgabeformat JSON sein soll.

die einzelnen Teile:
Der [bbox:{{bbox}}]-Teil verwendet die {{bbox}}-Vorlage, um hier automatisch die Begrenzungsrahmenkoordinaten der aktuellen Kartenansicht in der Overpass Turbo-Oberfläche auszufüllen und die node(around:500, lat, lon)-Anweisungen fragen nach Knoten innerhalb eines 500-Meter-Radius, um jeden der angegebenen Breiten- und Längenpunkte herum. Die brauche ich - wie gesagt nicht; Ich kann den Radiuswert bei Bedarf anpassen und in meinem Falle ja auf Null setzen.

Der Außenkörper; -Anweisung gibt an, dass man die Ergebnisse im Body-Format ausgegeben haben will, das die Daten der abgefragten Knoten im GeoJSON-Format enthält.

This would give you all nodes which are within radius of 500 meters of given coordinates. There are hundreds of random nodes around that coordinates (as they represent anything existing on the map!), so you get all of them, just as you asked.

If you wanted to get only amenity=school objects (which could be node, way or relation), you’d use this instead:

  nwr[amenity=school](around:500, 49.50896725, 8.537402509088963);

then you’d get only 4 schools which are withing 500 meters of those coordinates.