Wie kann ich effizient die Suche auf ein Land eingrenzen?

Hallo, ich bin seeeehr neu hier und weiß nicht mal, ob es das richtige Forum für diese Frage ist, aber ich versuche mal mein Glück:

Ich versuche über eine Abfrage alle Bahnhofstraßen in Deutschland zu finden. Ich will bewusst keine Einschränkung auf Gebiete, Orte oder Bundesländer machen, nur sollte sich die Bahnhofstraße in Deutschland befinden. Mein Query ist:
https://nominatim.openstreetmap.org/search?format=json&addressdetails=1&q=Bahnhofstraße&countrycodes=de

Ich bekomme aber nur 10 Ergebnisse und alle befinden sich in der Schweiz, die meisten in Zürich. Wenn ich das auf der Seite Nominatim Demo mache, und dort nach countrycodes einschränke ist es etwas besser, ich bekomme 5 Bahnhofst6raßen geliefert, die in Deutschland sind. Das sin daber viel zu wenige.

Wie kann ich hier das richtige Ergebnis bekommen?

Viele Grüß

Parascus

Diese Suche geht auf vermutlich besser mit Overpass. Dort sollte folgende Abfrage die passenden Ergbnisse liefern:

[out:json][timeout:25];
// fetch area “deutschland” to search in
area(id:3600051477)->.searchArea;
// gather results
nwr["highway"]["name"="bahnhofsstraße"](area.searchArea);
// print results
out geom;

Das lässt sich bestimmt noch optimieren. Ich bin kein Experte für Overpass-Abfragen.

edit: Diese Abfrage findet alle OSM-Wege mit dem Namen Bahnhofstraße. Eine Straße in der Realität wird aber in vielen Fällen aus mehreren OSM-Wegen zusammengesetzt sein. Das müsste man entsprechend noch berücksichtigen.

1 Like

Die Abfrage von @Robert46798 ist im Prinzip das, was ich auch machen würde.
Ich würde area(id:3600051477) durch {{geocodeArea:Deutschland}} ersetzen.
Wenn man sich die Abfrage Wochen später noch mal ansieht, versteht man so eher was man damals gemeint hat.
Und: Die Abfragen auf = achten auf Groß- und kleinschreibung. “bahnhofstraße” ist etwas anderes als “Bahnhofsstraße”

Mit der Abfrage werden genau 3 Straßen gefunden. evtl. sollte man die Suche so erweitern, daß auch eine Bahnhofstraße (ohne s) oder “Am Bahnhof” gefunden wird.

1 Like

Aus einem lockeren Spruch unter Kollegen entstand schlussendlich dies: Die Bahnhofstrassen in jeder Schweizer Sprachregion – habi.gna.ch
Ich wollte spezifisch die längste Bahnhofstrasse der Schweiz zeigen, und das für jede der vier Sprachregionen der Schweiz.

Die Erweiterung auf Deutschland dürfte möglich sein, schlussendlich war das Vorgehen nicht sehr schwierig, auch dank dem Tool und der Hilfe von @amapanda_ᚐᚋᚐᚅᚇᚐ

Das Tool fasst alle gleich benannten und benachbarten ways zusammen, was das von @Robert46798 angesprochene Problem löst, dass eine

3 Likes

Hallo und vielen Dank an alle.

Das scheint ja doch viel komplizierter als gedacht. Eigentlich wollte ich “nur” eine Abfrage à la Google ermöglichen. Aber da scheint immer viel Handarbeit hinterher stattfinden zu müssen (Ergebnisse zusammenfügen, ggf. Details wieder abziehen) und aus Erfahrung mit anderen Projekten (nicht OpenStreetMap :wink: ) weiß ich, dass bei der Eingabe von Daten schnell etwas schief geht. Da kann bei einem Straßenabschnitt in der Mitte schnell mal Bahnhofstraße aus Versehen als Bahnhofstr. oder Bahnhofstrasse geschrieben werden und schon lassen sich diese nicht mehr zusammenfügen.

Gibt es neben Nominatim weitere Bewegungen, OSM dahingehend zu erweitern, ggf. auch eine Fuzzy-Search mit Levenshtein oder N-Gram zu erweitern?

Viele Grüße

Parascus

Solche Fälle könnte man mit Overpass Turbo finden und ggf. selbst schnell korrigieren. Sie kommen aktuell aber nicht vor. Du kannst Dich auf die korrekte Schreibweise verlassen.

Es gibt Photon, das eine Fuzzy-Suche anbietet.

Aber generell sind Geocoder darauf ausgelegt, Dir das eine, beste Ergebnis zu liefern, nach dem Du suchst. Sie bieten Dir eine Handvoll Alternativen an, falls es mehrere mögliche Treffer zum Suchbegriff gibt. Aber keiner von ihnen würde Dir alle Bahnhofstraßen in Deutschland liefern.

3 Likes

Ich find’s nicht so kompliziert, und dauerte von A-Z nur 15 Minuten (wobei die längste Zeit Warten auf Download (wget https://download.geofabrik.de/europe/germany-latest.osm.pbf) und Berechnung ( osm-lump-ways -i germany-latest.osm.pbf -f highway -f highway≠pedestrian -f name~"ahnhofs" -o de-bahnhof.geojson ) war.

Das Resultat der Abfrage findest du als .geoJSON hier: Bahnhofstrassen in Deutschland · GitHub [1]

Die Abfrage nach “ahnhofs” schliesst verschiedene Schreibweisen von Bahnhofstrasse (ich weiss gar nicht, wie ich auf meiner Schweizer Tastatur das “ß” eintippen kann, sondern habe das oben kopiert und hier eingefügt).
Dadurch sind dann in den Daten auch solche Dinge zu finden:

Die längste Bahnhofstrasse in Deutschland ist rund um den Bahnhof Lübberstedt, mit gut 7 km:

Der kürzeste Schnipsel Bahnhofstrasse mit 2 m (!) ist

[1]: Der geoJSON-Viewer von GitHub ist unbrauchbar, aber so kann ich dir die Datei einfach zur Verfügung stellen