Texteinträge aus openstreetmap auflisten
-
Texteinträge aus openstreetmap auflisten · suseluck (Gast) · 24.08.2018 21:02 · [flux]
Hallo,
besteht die Möglichkeit Daten aus openstreetmap, wie zB alle Einträge mit "museum" aufzulisten und die Koordinaten mitzuliefern? Wenn ja, kann das territorial begrenzt werden?- Re: Texteinträge aus openstreetmap auflisten · firstAid (Gast) · 24.08.2018 21:06 · [flux]
Schau mal ... ob das deine Bedürftnisse erfüllt.
http://overpass-turbo.eu/s/BlF
Nach dem "Ausführen" oben links, siehst du die Auflistung inkl. Koordinaten steht unter "Daten" oben rechts. - Re: Texteinträge aus openstreetmap auflisten · suseluck (Gast) · 25.08.2018 23:12 · [flux]
Hey, danke firstAid, das sieht vielversprechend aus!
Jetzt würde ich gerne noch wissen wie ich den code anpassen kann, denn natürlich suche ich nicht nach "museum", sondern verschiedenen anderen Dingen, wie Straßenbezeichnungen, Straßennamen, Bushaltestellen, Gebäudemarkierungen und dergleichen.␣node["tourism"="museum"]({{bbox}}); way["tourism"="museum"]({{bbox}}); relation["tourism"="museum"]({{bbox}});
Zudem würde ich gerne wissen, was es noch außer node, way und relation gibt.
Bei openstreetmap.org gibt es ja das Suchfeld, oder die Objektabfrage. Wenn ich einen Suchbegriff eingebe, kommen viele Ergebnisse. Wenn ich auf ein Suchergebnis klicke kommt u.a. ein Title ""Knoten: blabla (39489493824)", oder "Linie: ..." und eine Attribute-Tabelle mit u.a. "name" "blabla". Ist "Linie" gleich "way"?Ich habe nun ein wenig herumprobiert ("tourism" durch "name" ausgetauscht) und festgestellt, dass das ersten case-sensitive ist und zweitens nur exakte Beschreibungen findet. Also mit der Suche nach "blabla" wird "Blabla" oder "bla blabla" nicht gefunden. Wie kann man da was machen?
- Re: Texteinträge aus openstreetmap auflisten · fx99 (Gast) · 26.08.2018 05:52 · [flux]
In OSM gibt es nur die 3 genannten Strukturen node, way und relation.
Overpass ist sehr mächtig, schau Dir mal die Beschreibung hier an: http://overpass-api.de/index.html
Bei der Abfrage kann man auch "regular expressions" verwenden, was Abfragen wie "blabla" wird "Blabla" oder "bla blabla" abdeckt.
Sehr hilfreich ist auch der Wizard in der GUI.
Örtliche Begrenzungen sind entweder wie oben über die aktualle Bounding Box möglich oder aber geographische Eingrenzung wie
Ortschaften, (Bundes-)länder etc.
Beispiel im Wizard: tourism=hotel in Esslingen - Re: Texteinträge aus openstreetmap auflisten · suseluck (Gast) · 27.08.2018 11:15 · [flux]
Danke fx99.
Territorial eingrenzen geht besser mit "geocodeArea".Mehr Infos:
https://wiki.openstreetmap.org/wiki/Ove … verpass_QL
https://wiki.openstreetmap.org/wiki/Ove … uage_Guide
http://documentation.developer.here.com … 0Guide.pdfBeispiel:
[out:json][timeout:25]; {{geocodeArea:Germany:Bayern}}->.searchArea; ( node[~"name"~"blabla",i](area.searchArea); way[~"name"~"blabla",i](area.searchArea); relation[~"name"~"blabla",i](area.searchArea); ); out␣body; >; out␣skel␣qt;
Infos zu den letzten drei Zeilen:
https://gis.stackexchange.com/questions … urbo-queryBundesland-Namen: "Baden-Wuerttemberg", "Thueringen", ...
- Re: Texteinträge aus openstreetmap auflisten · Harald Hartmann (Gast) · 27.08.2018 15:17 · [flux]
suseluck wrote:
Territorial eingrenzen geht besser mit "geocodeArea".
Kann man so nicht sagen ... da kann auch schon mal was falsches bei rauskommen!
Wenn man ein eindeutiges Ergebnis haben möchte, dann bitte direkt die areaId nutzen!
- Re: Texteinträge aus openstreetmap auflisten · suseluck (Gast) · 27.08.2018 20:37 · [flux]
Harald Hartmann wrote:
Wenn man ein eindeutiges Ergebnis haben möchte, dann bitte direkt die areaId nutzen!
Was ist denn jetzt schon wieder die "areaId"? Wo krieg ich die her? Gibt es da eine Liste für alle Bundesländer?
- Re: Texteinträge aus openstreetmap auflisten · fx99 (Gast) · 28.08.2018 00:59 · [flux]
suseluck wrote:
Was ist denn jetzt schon wieder die "areaId"? Wo krieg ich die her? Gibt es da eine Liste für alle Bundesländer?
Ungefähr damit:
[out:csv(::id,"name","note",land_area,type,boundary_type;true;":")][timeout:125]; //␣fetch␣area␣“Deutschland”␣to␣search␣in {{geocodeArea:Deutschland}}->.searchArea; //␣gather␣results relation["admin_level"="4"][name!="Groningen"](area.searchArea);
//␣print␣results out␣meta;
Die Küstenländer sind doppelt!
- Re: Texteinträge aus openstreetmap auflisten · Harald Hartmann (Gast) · 28.08.2018 05:27 · [flux]
suseluck wrote:
Was ist denn jetzt schon wieder die "areaId"?
https://wiki.openstreetmap.org/wiki/Ove … ters.22.29
und was das "Problem" hinter geocodeArea ist:
https://wiki.openstreetmap.org/wiki/Ove … as_by_name - Re: Texteinträge aus openstreetmap auflisten · suseluck (Gast) · 28.08.2018 22:26 · [flux]
Richtig? Hannover?
62422␣Berlin␣boundary 28322␣Mecklenburg-Vorpommern␣boundary 62504␣Brandenburg␣boundary 62607␣Sachsen-Anhalt␣boundary 62467␣Sachsen␣boundary 62366␣Thüringen␣boundary 51529␣Schleswig-Holstein␣boundary 62782␣Hamburg␣boundary 62718␣Bremen␣boundary 3600062764␣Hannover␣boundary 62771␣Niedersachsen␣boundary 62761␣Nordrhein-Westfalen␣boundary 62341␣Rheinland-Pfalz␣boundary 62372␣Saarland␣boundary 62650␣Hessen␣boundary 62611␣Baden-Württemberg␣boundary 2145268␣Bayern␣boundary
Keine Ergebnisse:
[out:json][timeout:25]; area(2145268)->.searchArea; ( node["tourism"="museum"](area.searchArea); way["tourism"="museum"](area.searchArea); relation["tourism"="museum"](area.searchArea); ); out␣body; >; out␣skel␣qt;
- Re: Texteinträge aus openstreetmap auflisten · fx99 (Gast) · 29.08.2018 05:15 · [flux]
Warum Hannover auftaucht, ist mir unklar, weil ich Deine Abfrage nicht kenne.
Hannover gibt aber den Hinweis zur Lösung:
Um von der Relation-Nr., wie hier für die BL aufgelistet, zur areaId zu kommen,
musst Du 3600000000 addieren, um damit eine Zahl wie bei Hannover zu erhalten.Hier das korrekte Hannover-Beispiel:
[out:json][timeout:25]; area(3600062764)->.searchArea; ( node["tourism"="museum"](area.searchArea); way["tourism"="museum"](area.searchArea); relation["tourism"="museum"](area.searchArea); ); out␣body; >; out␣skel␣qt;
- Re: Texteinträge aus openstreetmap auflisten · Harald Hartmann (Gast) · 29.08.2018 05:55 · [flux]
hier eine noch genauere Erkärung der area id:
https://wiki.openstreetmap.org/wiki/Ove … .28area.29 - Re: Texteinträge aus openstreetmap auflisten · suseluck (Gast) · 01.09.2018 17:38 · [flux]
Wie kommt Hannover da rein? Frag mich nicht, ich weiß es nicht mehr. Bayern springt auch aus der Reihe, wenn auch nicht "Bayern first!". Eine bessere Frage ist: Wieso funktioniert der Abfrage-Code mit Hannover, aber mit den anderen wirklichen BL-areaid nicht? Das war ja meine letzte Frage.
[out:json][timeout:250]; area(62611)->.searchArea; ( node["tourism"="museum"](area.searchArea); way["tourism"="museum"](area.searchArea); relation["tourism"="museum"](area.searchArea); ); out␣body; >; out␣skel␣qt;
Ergebnis: Karte ist leer. Keine Daten.
- Re: Texteinträge aus openstreetmap auflisten · mmd (Gast) · 01.09.2018 17:43 · [flux]
area(62611)
Das klappt so nicht, weil diese riesige Konstante 3600000000 als Offset fehlt.
ich würde mich darum aber nicht kümmern, es gibt einen einfacheren Weg. "map_to_area" addiert die notwendigen Konstanten automatisch.
[out:json][timeout:250]; rel(62611);map_to_area->.searchArea; ( node["tourism"="museum"](area.searchArea); way["tourism"="museum"](area.searchArea); relation["tourism"="museum"](area.searchArea); ); out␣body; >; out␣skel␣qt;
Aber auch das Raussuchen der Relation ist lästig, das geht nochmal einfacher:
[out:json][timeout:250]; area[boundary=administrative] [admin_level=4] ["ISO3166-2"="DE-BY"]␣␣␣␣␣␣␣␣//␣<<<<␣hier␣Bundesland␣eintragen! ->.searchArea; ( node["tourism"="museum"](area.searchArea); way["tourism"="museum"](area.searchArea); relation["tourism"="museum"](area.searchArea); ); out␣body; >; out␣skel␣qt;
Dann zu den node, way, relation: diese Objekttypen einzeln abfragen macht auch unnötig Arbeit, das geht per "nwr" nochmals kürzer:
[out:json][timeout:250]; area[boundary=administrative] [admin_level=4] ["ISO3166-2"="DE-BY"]␣␣␣␣␣␣␣␣//␣<<<<␣hier␣Bundesland␣eintragen! ->.searchArea;
nwr["tourism"="museum"](area.searchArea); out␣body; >; out␣skel␣qt;
- Re: Texteinträge aus openstreetmap auflisten · suseluck (Gast) · 01.09.2018 17:59 · [flux]
mmd wrote:
Das klappt so nicht, weil dieser riesige Konstante 3600000000 fehlt.
Ja wer lesen kann ist klar im Vorteil und wer englisch kann noch mehr. Harald Hartmann hatte es eh verlinkt:
"By convention the area id can be calculated from an existing OSM way by adding 2400000000 to its OSM id, or in case of a relation by adding 3600000000 respectively."mmd wrote:
ich würde mich darum aber nicht kümmern, es gibt einen einfacheren Weg. "map_to_area" addiert die notwendigen Konstanten automatisch.
Danke für die Info!
mmd wrote:
Aber auch das Raussuchen der Relation ist lästig, das geht nochmal einfacher:
Hm, wie meinst du das? Denkst du, die von mir gepostete Liste (exklusive Hannover) hat die falschen areaid-s?
EDIT: Achso, ohne Angabe der areaid und nur Angabe des BL-Kürzels. OK.
Liste: https://de.wikipedia.org/wiki/ISO_3166-2:DEmmd wrote:
Dann zu den node, way, relation: diese Objekttypen einzeln abfragen macht auch unnötig Arbeit, das geht per "nwr" nochmals kürzer:
Vielen Dank auch dafür!
- Re: Texteinträge aus openstreetmap auflisten · mmd (Gast) · 01.09.2018 18:04 · [flux]
suseluck wrote:
Hm, wie meinst du das? Denkst du, die von mir gepostete Liste (exklusive Hannover) hat die falschen areaid-s?
Also die Liste sieht eher so aus, als ob es Relations-Ids wären, also z.B. osm.org/relation/62422 - diese müsstest du dann wieder per map_to_area anpassen oder gleich selbst 3600000000 addieren (=lästige fleissarbeit).
Die Area-Ids gibt es wirklich nur auf der Overpass API, sie fangen mit 24000xxxx oder 36000xxxxx an, je nachdem, ob das ursprünglich mal ein Way oder eine Relation war.
Objekt-ids haben den Nachteil, dass sie nicht unbedingt stabil sein müssen. Da geht jemand hin und löscht sie, oder erstellt eine Kopie mit einer neuen Objekt-Id und schon ist deine Liste kaputt. Daher benutze ich die Geschichte mit dem ISO-Code, was hoffentlich stabiler ist.
Als Übersicht die Liste für alles was mit "DE-" im ISO3166-2-Code beginnt:
[out:csv(::id,␣name,␣"ISO3166-2")]; area[boundary=administrative] [admin_level=4] ["ISO3166-2"~"^DE-"]; out;
Ergibt:
@id name ISO3166-2 3600028322 Mecklenburg-Vorpommern DE-MV 3600051529 Schleswig-Holstein DE-SH 3600062341 Rheinland-Pfalz DE-RP 3600062366 Thüringen DE-TH 3600062372 Saarland DE-SL 3600062422 Berlin DE-BE 3600062467 Sachsen DE-SN 3600062504 Brandenburg DE-BB 3600062607 Sachsen-Anhalt DE-ST 3600062611 Baden-Württemberg DE-BW 3600062650 Hessen DE-HE 3600062718 Bremen DE-HB 3600062761 Nordrhein-Westfalen DE-NW 3600062771 Niedersachsen DE-NI 3600062782 Hamburg DE-HH 3602145268 Bayern DE-BY
- Re: Texteinträge aus openstreetmap auflisten · suseluck (Gast) · 01.09.2018 18:26 · [flux]
OK, verstehe. Das mit den admin_levels und so weiter, darüber habe ich mich schon informiert. Overpass API hab ich in dem Bezug auch schon benutzt. Feine Sache! Danke nochmal!