x

Eine Liste mit allen secondary Strassen in Berlin aus OSM extrahieren?


  1. Eine Liste mit allen secondary Strassen in Berlin aus OSM extrahieren? · Willy909 (Gast) · 29.07.2012 20:13 · [flux]

    Hallo OSM Community,

    ich würde gerne eine Liste mit allen Secondary bzw. eine Liste mit allen Primary Straßen aus OSM extrahieren.
    Diese Liste würde ich gerne mit den Straßen Tags (z.B. Namen) ergänzen und in einem Wiki anzeigen.
    Wenn möglich mit ein Group By damit ich nicht die selbe Straße 100 mal in der Liste habe, weil diese gesplittet wurde.

    Da sich diese List nicht ständig verändert müsste ich das wohl manuell anstoßen.

    Ganz abgesehen davon ob diese Liste Sinn ergibt oder nicht. Oder ob man die Liste bereits irgendwo führt:
    Wie würdet Ihr solch etwas umsetzen?

    Ich habe vor vielen Jahren in PHP programmiert und kenne mich mit Datenbanken etwas aus.
    Allerdings fehlt mir der Ansatz. Wie gehe ich wo vor und mit welchen Tools geht es am besten?
    Sollte ich direkt bei Openstreetmap diese Daten ziehen oder vielleicht aus einem Extract z.B. bei Cloudmade oder Geofabrik?

    Wäre klasse wenn Ihr mir ein paar Tips und Links geben könntet damit ich loslegen kann.


    • Re: Eine Liste mit allen secondary Strassen in Berlin aus OSM extrahieren? · zorque (Gast) · 29.07.2012 21:14 · [flux]

      Hallo,

      ich mache mal einen Vorschlag für den Anfang:

      von der Geofabrik das entsprechende Extract laden.

      Mit Osmosis Berlin mit dem Boundary Poligon ausschneiden.

      Mit Osmosis alle Highways secondary filtern lassen.

      Für meinen Zweck geht es dann mit Excel/Calc weiter, sprich, Dublikate filtern, sortieren etc. Relativ viel Handarbeit.

      Vll reicht das ja als ersten Ansatz. Bei weiteren Fragen oder wenn du Links brauchst, meld dich einfach wieder.

      Gruß

      z.


    • Re: Eine Liste mit allen secondary Strassen in Berlin aus OSM extrahieren? · wambacher (Gast) · 29.07.2012 21:56 · [flux]

      Willy909 wrote:

      Wäre klasse wenn Ihr mir ein paar Tips und Links geben könntet damit ich loslegen kann.

      bau dir mit osm2pgsql eine Datenbank auf - genauso als ob du eine Karte selber rendern wolltest. als Resultat hast du eine postgresql-DB, die du mit sql abfragen kannt.

      hier EINE Anleitung - davon gib es noch mehrere: http://wiki.openstreetmap.org/wiki/Osm2pgsql aber ne bessere finde ich heute Abend nicht auf die Schnelle.
      sollte zum Einstieg schon mal reichen.

      Gruss
      walter


    • Re: Eine Liste mit allen secondary Strassen in Berlin aus OSM extrahieren? · SunCobalt (Gast) · 29.07.2012 22:00 · [flux]

      zorque wrote:

      von der Geofabrik das entsprechende Extract laden.

      Mit Osmosis Berlin mit dem Boundary Poligon ausschneiden.

      Oder gleich Berlin laden 😉 Hat die Geofabrik netterweise im Angebot


    • Re: Eine Liste mit allen secondary Strassen in Berlin aus OSM extrahieren? · EvanE (Gast) · 29.07.2012 22:06 · [flux]

      Willy909 wrote:

      ich würde gerne eine Liste mit allen Secondary bzw. eine Liste mit allen Primary Straßen aus OSM extrahieren.
      Diese Liste würde ich gerne mit den Straßen Tags (z.B. Namen) ergänzen und in einem Wiki anzeigen.
      Wenn möglich mit ein Group By damit ich nicht die selbe Straße 100 mal in der Liste habe, weil diese gesplittet wurde.
      ...

      Bedenke bitte, dass gleiche Straßennamen nicht zwingend bedeuten, dass das eine zusammengehörige Straße ist. Innerhalb einer Ortschaft, mag das ja noch gelten, wenn du jedoch auf Landkreisebene oder größer gehst, ist die Wahrscheinlichkeit, dass es Haupt-/Dorfstraßen (um mal zwei sehr häufige Namen zu nehmen) in mehreren Orten gibt, ziemlich groß.

      Es ist keineswegs trivial, herauszufinden, welche Straßenteile zusammengehören und welche nicht.
      So kann "Group By" bei großen Gebieten ganz schön in die Irre führen.

      Edbert (EvanE)


    • Re: Eine Liste mit allen secondary Strassen in Berlin aus OSM extrahieren? · toc-rox (Gast) · 30.07.2012 09:01 · [flux]

      Vielleicht hilft dir das:

      perl opaQuery.pl "way [highway=primary] (52.3, 13.0, 52.7, 13.8); out meta;"

      Im Ergebnis erhältst du dann sowas:

      ...
      <way␣id="15971193"␣version="15"␣timestamp="2012-01-15T08:14:00Z"␣changeset="10395320"␣uid="66391"␣user="geozeisig">
      <nd␣ref="160493838"/>
      <nd␣ref="160493831"/>
      <tag␣k="bridge"␣v="yes"/>
      <tag␣k="highway"␣v="primary"/>
      <tag␣k="layer"␣v="1"/>
      <tag␣k="maxspeed"␣v="50"/>
      <tag␣k="name"␣v="Schloßbrücke"/>
      <tag␣k="oneway"␣v="yes"/>
      <tag␣k="postal_code"␣v="10117"/>
      <tag␣k="ref"␣v="B␣2;B␣5"/>
      <tag␣k="wikipedia:de"␣v="Schlossbrücke_(Berlin-Mitte)"/>
      </way>
      ...
      

      Gruß Klaus

      PS: Die Bounding-Box ist recht "großzügig" gewählt.


    • Re: Eine Liste mit allen secondary Strassen in Berlin aus OSM extrahieren? · Marqqs (Gast) · 30.07.2012 18:33 · [flux]

      Um die Verwirrung zu vergrößern, hier noch eine Methode: :-)

      - Download von berlin.osm.pbf von geofabrik.de
      - Umwandeln ins .o5m-Format mit osmconvert
      - Filtern mit osmfilter --keep="highway=secondary"
      - Erstellen einer CSV-Tabelle mit osmconvert --csv="name"
      - Beseitigen von doppelten Zeilen mit sort -u

      EvanE wrote:

      Bedenke bitte, dass gleiche Straßennamen nicht zwingend bedeuten, dass das eine zusammengehörige Straße ist. Innerhalb einer Ortschaft, mag das ja noch gelten, wenn du jedoch auf Landkreisebene oder größer gehst, ist die Wahrscheinlichkeit, dass es Haupt-/Dorfstraßen (um mal zwei sehr häufige Namen zu nehmen) in mehreren Orten gibt, ziemlich groß.

      Ja! Grad in Berlin gibt es unterschiedliche Straßen mit gleichem Namen in unterschiedlichen Stadtteilen - soweit ich mich erinnere...


    • Re: Eine Liste mit allen secondary Strassen in Berlin aus OSM extrahieren? · Willy909 (Gast) · 31.07.2012 10:11 · [flux]

      Vielen Dank für die vielen Vorschläge.
      Ich habe natürlich eine ganze Menge getestet mit den vorgeschlagenen Tools Osmosis und OSMConvert.
      Das Ergebnis war nicht annähernd zufriedenstellend, da haufenweise Nodes im Resultat aufgetaucht sind und ich diese nicht ausschließen konnte.

      Werde es nun mal mit OSMFilter ausprobieren. Gebe dann mal feedback.


    • Re: Eine Liste mit allen secondary Strassen in Berlin aus OSM extrahieren? · wambacher (Gast) · 31.07.2012 14:48 · [flux]

      Willy909 wrote:

      Vielen Dank für die vielen Vorschläge.
      Ich habe natürlich eine ganze Menge getestet mit den vorgeschlagenen Tools Osmosis und OSMConvert.
      Das Ergebnis war nicht annähernd zufriedenstellend, da haufenweise Nodes im Resultat aufgetaucht sind und ich diese nicht ausschließen konnte.

      Werde es nun mal mit OSMFilter ausprobieren. Gebe dann mal feedback.

      prima, dass du voran kommst.
      Bitte beachte aber den "harmlosen" Hinweis von Edbert: Strassennamen sind in Berlin definitiv mehrfach vorhanden. Und nicht etwa als Teilstücke einer Strasse sondern es sind verschiedenen Strassen in unterschiedlichen Stadtteilen/Bezirken. Da bekommst du ein grösseres Problem, als du dir das jetzt vorstellen kannst.

      Da kommst du eigentlich nur mit geographischen Informationen (welche Koordinaten?, sind die beiden Teilstücke miteinander verbunden? Liegen sie im gleichen Bezirk? u.s.w.) weiter.
      Und wenn ich das richtig sehe, schmeisst du diese "lebensnotwendigen" Informationen schon ganz am Anfang raus oder ignorierst sie zumindest.

      Gruss
      Walter


    • Re: Eine Liste mit allen secondary Strassen in Berlin aus OSM extrahieren? · toc-rox (Gast) · 31.07.2012 15:35 · [flux]

      Beispiel: Die "Friedrichstrasse" gibt es mindestens dreimal in Berlin.

      Gruß Klaus


    • Re: Eine Liste mit allen secondary Strassen in Berlin aus OSM extrahieren? · Willy909 (Gast) · 31.07.2012 20:40 · [flux]

      Also ich komme nicht weiter, weil auch osmfilter mir die ganzen Nodes ausgibt.
      Und wegen der reichweiten Hilfe von euch will noch ein wenig mehr Licht in mein Vorhaben bringen.

      Nehmen Wir an ich möchte eine Liste von allen als Highway=motorway definierten Straßen in Berlin/Brandenburg erfassen.
      Als Ausgabe möchte ich jede Straße nur einmalig in der Ausgabe haben. In Berlin/Brandenburg wäre das eine Liste die in etwa so aussieht:

      REF
      A113
      A115
      A100
      A10
      A11
      A12
      A13
      ....

      Natürlich wären der ref_name (z.B. von A100 reg_name: Berliner Stadtring) sehr interessant. Aber kein muss.
      Hört sich einfach an. Aber die Ausgabe in der CSV Datei ist voll mit Nodes, die ich eigentlich ausgeschlossen habe.

      Ich werde das selbe auch für als Primary definierte Straßen benötigen. Aber erstmal mit etwas einfachem starten.

      Eine CSV Datei kriege ich dank eurer Unterstützung bereits ohne Problem hin.


    • Re: Eine Liste mit allen secondary Strassen in Berlin aus OSM extrahieren? · wambacher (Gast) · 31.07.2012 22:09 · [flux]

      Willy909 wrote:

      Also ich komme nicht weiter, weil auch osmfilter mir die ganzen Nodes ausgibt.
      Und wegen der reichweiten Hilfe von euch will noch ein wenig mehr Licht in mein Vorhaben bringen.

      .... Aber die Ausgabe in der CSV Datei ist voll mit Nodes, die ich eigentlich ausgeschlossen habe.

      ein wenig mehr Licht wäre schon besser: Wie machst du ganz genau welche Abfrage mit welcher Software und wie sieht dann das Ergebnis aus?
      Wir - zumindest ich- tappen hier noch mächtig im Dunkeln.

      Ausser der Vermutung, dass du es eventuell mit osmfilter machst, ham 'mer garnix.

      Gruss
      walter


    • Re: Eine Liste mit allen secondary Strassen in Berlin aus OSM extrahieren? · EvanE (Gast) · 31.07.2012 22:16 · [flux]

      Willy909 wrote:

      Also ich komme nicht weiter, weil auch osmfilter mir die ganzen Nodes ausgibt.
      Und wegen der reichweiten Hilfe von euch will noch ein wenig mehr Licht in mein Vorhaben bringen.

      ... Aber die Ausgabe in der CSV Datei ist voll mit Nodes, die ich eigentlich ausgeschlossen habe. ...

      Ein Weg wird durch eine geordnete Liste seiner Knoten definiert.
      Wenn du also Wege willst, brauchst du deren Knoten. Ohne die Knoten gibt es keine Lokalisierung!

      Wenn du nur die Namen und ggfs. die Referenznummer von Wegen willst, sieht das anders aus.
      Aber wie gesagt, ohne die Knoten gibt es keine Koordinaten und ein Weg ohne Kenntniss der Knoten (inklusive der Koordinaten) ist kein sinnvoll weiter bearbeitbares Geo-Objekt mehr.

      Da die Programme osmconvert und osmfilter mit Geo-Objekten arbeiten, kannst du mit denen die Knoten der Wege nicht loswerden. Das musst du notfalls mit einen Zeilen-Editor als Nachbearbeitung erledigen.

      Edbert (EvanE)


    • Re: Eine Liste mit allen secondary Strassen in Berlin aus OSM extrahieren? · moenk (Gast) · 31.07.2012 23:35 · [flux]

      Moin,

      vielleicht probieren wir es mal so:

      osm=#␣select␣distinct␣tags->'name'␣as␣strasse␣from␣ways␣where␣tags->'highway'='secondary'␣and␣tags->'name'␣like␣'Y%';
      strasse
      ----------------------
      Yorckstraße
      Yitzhak-Rabin-Straße
      Yorckplatz
      Ysenburgstraße
      Ysenburger␣Straße
      York-Ring
      (6␣rows)
      
      osm=#
      

      Ich hab mal nur die mit Y* genommen, sonst werden das so viele ;-)

      Meinst Du sowas?

      LG,

      -moenk


    • Re: Eine Liste mit allen secondary Strassen in Berlin aus OSM extrahieren? · wambacher (Gast) · 01.08.2012 01:22 · [flux]

      moenk wrote:

      Moin,

      vielleicht probieren wir es mal so:

      osm=# select distinct tags->'name' as strasse from ways where tags->'highway'='secondary' and tags->'name' like 'Y%';
      strasse
      ...

      womit wir wieder bei meiner ersten Antwort wären: http://forum.openstreetmap.org/viewtopi … 31#p260431

      sql kann willy ja, lesen wohl nicht 🙁

      dennoch Danke, Moenk

      p.s. das Doppelgängerproblem scheint ja nicht soooo wichtig zu sein.


    • Re: Eine Liste mit allen secondary Strassen in Berlin aus OSM extrahieren? · Marqqs (Gast) · 01.08.2012 08:53 · [flux]

      Hallo!

      Falls es noch nicht geklappt hat, der Weg funktioniert:

      wget␣download.geofabrik.de/osm/europe/germany/berlin.osm.pbf␣-O␣berlin.pbf
      
      ./osmconvert␣berlin.pbf␣-o=berlin.o5m
      
      ./osmconvert␣berlin.pbf␣--all-to-nodes␣-o=berlin_nodes.o5m
      
      ./osmfilter␣berlin_nodes.o5m␣--keep="highway=secondary"␣-o=berlin_secondary.o5m
      
      ./osmconvert␣berlin_secondary.o5m␣--csv="name"␣-o=berlin_secondary.csv
      
      sort␣-u␣berlin_secondary.csv␣>berlin_secondary_sorted.csv
      

      Natürlich besteht dabei das Problem mit Namen, die mehrfach in unterschiedlichen Stadtteilen vorkommen. Diese Namen erscheinen jeweils nur einmal in der Liste. Um das in den Griff zu kriegen, müsste man die Koordinaten mit ausgeben und dann entsprechend behandeln. Dazu müsste --csv="name" erweitert werden: --csv="name @lon @lat"

      Falls Linux verwendet wird, lassen sich einige der Kommandos verbinden, so dass nicht so viele Einzelschritte notwendig sind. Im Prinzip ist das aber egal, da die Verarbeitungszeit insgesamt auch nur bei wenigen Sekunden liegt.

      Grüße
      Markus


    • Re: Eine Liste mit allen secondary Strassen in Berlin aus OSM extrahieren? · Willy909 (Gast) · 08.08.2012 19:08 · [flux]

      Entschuldigt das ich erst jetzt antworte...

      @Marqqs: Dein Batch ist GENAU was ich machen wollte. Das Ergebnis ist super! Danke!
      Zwar funktioniert die SORT Funktion auf Windows nicht, aber damit kann ich leben.

      Es wäre toll wenn mir jemand folgende Zeilen etwas erklären könnte, damit meine Wissenslücken geschlossen werden:

      ./osmconvert␣berlin.pbf␣-o=berlin.o5m
      
      ./osmconvert␣berlin.pbf␣--all-to-nodes␣-o=berlin_nodes.o5m
      

      Warum konvertierst Du in das o5m Format und in der zweiten Zeile gleich danach noch einmal?
      Was ganz genau macht der Parameter "--all-to-nodes"?

      Vielen Dank nochmal für die ausführliche Hilfe soweit.
      Hatte schon etwas bange das solch eine Frage hier nichts zu suchen hätte...


    • Re: Eine Liste mit allen secondary Strassen in Berlin aus OSM extrahieren? · chris66 (Gast) · 08.08.2012 19:44 · [flux]

      Willy909 wrote:

      Zwar funktioniert die SORT Funktion auf Windows nicht, aber damit kann ich leben.

      -u weglassen, also sort datei > datei.sorted

      osmconvert␣-h
      --all-to-nodes␣␣␣␣␣␣␣␣␣␣␣␣convert␣ways␣and␣relations␣to␣nodes
      

      Dabei werden aus FlächenPOIs NodePOIs generiert.

      Chris


    • Re: Eine Liste mit allen secondary Strassen in Berlin aus OSM extrahieren? · Marqqs (Gast) · 08.08.2012 19:47 · [flux]

      Hallo Willy,
      freut mich, dass es klappt!

      Willy909 wrote:

      ./osmconvert␣berlin.pbf␣-o=berlin.o5m
      
      ./osmconvert␣berlin.pbf␣--all-to-nodes␣-o=berlin_nodes.o5m
      

      Warum konvertierst Du in das o5m Format und in der zweiten Zeile gleich danach noch einmal?

      Gute Frage. :-) Wahrscheinlich gingen das Umwandeln in das andere Format und das Umwandeln in Knoten auch in einer Zeile, aber ich wollte das Beispiel bewusst nicht verkomplizieren und hab es in Einzelschritten hingeschrieben. Unter Linux kann man den kompletten Vorgang wahrscheinlich in zwei Zeilen zusammenfassen.

      Willy909 wrote:

      Was ganz genau macht der Parameter "--all-to-nodes"?

      Das ist am besten hier beschrieben, glaub ich:

      https://wiki.openstreetmap.org/wiki/DE: … _umwandeln


    • Re: Eine Liste mit allen secondary Strassen in Berlin aus OSM extrahieren? · SunCobalt (Gast) · 08.08.2012 19:50 · [flux]

      Marqqs wrote:

      Das ist am besten hier beschrieben, glaub ich:

      http://www.mikrocontroller.net/topic/266562

      • Hüstl* sicher?

    • Re: Eine Liste mit allen secondary Strassen in Berlin aus OSM extrahieren? · Marqqs (Gast) · 08.08.2012 20:02 · [flux]

      SunCobalt wrote:

      • Hüstl* sicher?

      Oh, danke! Da war ich falsch abgebogen. :-)
      Habs korrigiert.

      Zum "Sort" unter Windows: das "-u" bewirkt unter Linux, dass jeder Name nur einmal in der Liste auftaucht. Alternativ könntest du auch die Statistik-Funktion von osmfilter verwenden:

      ./osmfilter␣berlin_nodes.o5m␣--keep="highway=secondary"␣--out-key=name␣>berlin_secondary_sorted.txt
      

      Damit kriegst du in der ersten Spalte sogar noch die Anzahl des Auftretens.


    • Re: Eine Liste mit allen secondary Strassen in Berlin aus OSM extrahieren? · Willy909 (Gast) · 08.08.2012 22:42 · [flux]

      Ohh man...

      das mit dem "--all-to-nodes" hätte ich echt auch selber rausbekommen können.
      Steht wunderbar erklärt auf der osmconvert wiki page.

      Das mit der Statistikfunktion wollte ich sowieso nochmal testen. Guter Tip.

      Danke für die Geduld :-)