Große Menge an Adressen exportieren/runterladen?

Hallo

Ich schreibe an der Uni gerade ein Programm um das zu Testen benötige ich eine riesige Datenbank an realen Adressen mit Breiten und Längengrad.
So bin ich auf euch gestoßen, ich habe die so genannten Extracts von Deutschland runtergeladen. Da ist eine art XML Datei mit Breiten und Längen aber keine Namen der Adressen.

Ist es möglich über OSM an Adressen Namen(Strasse, Nummer, Plz) sowie Längengrad und Breitengrad zu kommen? Wenn ja wie?

Im welchen Format dies vorliegt ist erstmal egal, notfalls schreibe ich Programm was mir alles richtig anordnet…

lg

Ja, ich würde das über eine PostGIS-OSM-Datenbank machen, geht aber vielleicht auch einfacher. Die XML-Daten kann man z.B. mit dem Tool osmosis importieren. Die Adressen alle herauszufischen, ist aber nicht unbedingt trivial.

BTW, es gibt ca. 7 Mio. Adressen in Deutschland. Das ergäbe eine Textdatei mit Adressen und Koordinaten von geschätzt 315 MB.

Noch ein Hinweis: Die Abdeckung der OSM-Adressdaten in Deutschland ist regional sehr unterschiedlich. Für ca. 2000 Gemeinden gibt es keine einzige Adresse (insbesondere bei Minigemeinden in Rheinland-Pfalz).

Für die Abbildung der Adressdaten in OSM siehe hier: https://wiki.openstreetmap.org/wiki/DE:Key:addr

Eine Datenbank ist schon vorbereitet, ich brauch nur eine Datei mit den Adressen, wo ich dann eine Programm schreiben kann welches mir alle Adressen in meine DB rüber kopiert. Ich verstehe gerade nicht wie ich an so eine Datei komme

Nein, ich meine eine OSM-Datenbank. Es gibt erstmal keine Datei mit Adressen. Alles steckt aber (mit viiiielen anderen Daten) in der XMl-Datei. Die OSM-Datenbank oder andere Tools helfen, die Adressen herauszufiltern und schließlich als Datei zu exportieren. Wie man direkt die XML-Datei filtert (also ohne DB), müssten hier aber andere erklären.

In der XML-Datei stehen u.a. ways und nodes mit tags. Adressen können an beiden als tags wie “addr:street” hängen.

Wenn ich das richtig verstehe, brauchst Du nur irgendwelchen Adressen, und davon viele…

Es ist ein bisschen schwierig, alle Adressdaten in eine Datei zu bekommen, die sind recht unterschiedlich eingetragen. Zum Beispiel hängt oft nicht die Postleitzahl am Node, sondern muss über eine “liegt innerhalb dieser Grenzen”-Abfrage ermittelt werden. Oft ist es auch kein einzelner Knoten, der die Hausnummer trägt, sondern eine Fläche… Dafür nimmt man geschickterweise eine echte Datenbank.

Wenn es aber auf Vollständigkeit nicht ankommt, sondern nur darum geht, irgendwelche Adressen zu bekommen, würde ich mir einfach die Einträge mit allen Daten raussuchen und den Rest wegwerfen…

Runterladen und Auspacken einer kleinen Beispieldatei:

wget http://download.geofabrik.de/europe/germany/bayern/schwaben-latest.osm.bz2
bunzip2 schwaben-latest.osm.bz2

Rausfiltern aller Objekte mit einer Hausnummer

osmfilter schwaben-latest.osm --keep="addr:housenumber" -o=hausnummern.osm

Alles zu Punkten machen und die relevanten Informationen als CSV rausschreiben, das Ergebnis ist eine TAB-getrennte Liste von lon lat und Adressen.

osmconvert hausnummern.osm --all-to-nodes --csv="@lon @lat addr:postcode addr:city addr:street addr:housenumber" --out-csv

Da kommt allerhand Müll mit raus, wo irgendwas fehlt (950000 Einträge). Wenn man da die Sätze rausfiltert, die alle 6 Spalten belegt haben, bleiben 100000 übrig. Hochgerechnet auf DE genug um “riesige Datenmenge” zu sein, hoffe ich.

Verwendete Software:
osmfilter http://wiki.openstreetmap.org/wiki/DE:Osmfilter
osmconvert http://wiki.openstreetmap.org/wiki/DE:Osmconvert

Ich hab aus Bequemlichkeit die .osm-Datei genommen, Du kannst mit osmconvert auch Deine pbf umwandeln. Vielleicht findest Du auch noch ein paar Optionen für die Programme um noch mehr Daten zu bekomme, wenn du schon die Gebrauchsanweisung der beiden Programme liest. Ich bin nicht sehr geübt im Umgang mit den beiden und kenne nur 3 oder 4 Optionen…

Grüße, Max

8<

Die weiter oben genannten Methoden werden dich definitiv zum Ziel bringen.

Du bist aber nicht der erste der nach sochen Daten fragt. Falls du nach weiteren Methoden suchst, oder vielleicht sogar genauer verstehen willst, WIE man solche Daten aus der einen großen OSM-Datenbank erhält:

suche auf http://help.openstreetmap.org nach den Schlüsselwörtern “export addresses” … da müssten sich genug Treffer finden.

Und wenn du dich sowieso mit den Geodaten mehr beschäftigen möchtest: Lies weiter im OSM-Wiki.

Magst du uns ein wenig über dein Projekt verraten?

z.b. ob du das für dein Studium als Aufgabe bekommen hast oder damit gar Forschung getrieben wird? Und hat das einen OSM-Bezug? (braucht nicht zu sein, wäre aber schön).

Zudem es wäre nett, wenn du dich nach Projektende einfach nochmals meldest; eventuell ist das ja was für unsere Wochennews, wo wir immer wieder interessante Projekte vorstellen. Einen Bericht für die Uni wirst du ja eh darüber schreiben müssen.

Gruss
walter