x

Texteinträge aus openstreetmap auflisten


  1. 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.pdf

      Beispiel:

      [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-query

      Bundesland-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:DE

      mmd 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!