OpenStreetMap Forum

The Free Wiki World Map

You are not logged in.

#1 2012-01-13 21:17:00

Alle Adressen aus germany.osm herausladen

Hallo allerseits,

ich würde gerne aus der "germany.osm" der Geofabrik alle Adressen herausfilter! Dazu würde ich gerne "osmosis" verwenden! Nun ist ja das Problem der unterschiedlichen Erfassungsmethoden bei Adressen. So aus dem stehgreif fallen mir da ein:
- als einzelner Punkt
- als Fläche (z.b. ein Gebäude)
- als Relation zur Straße

Ich hätte nun gerne als "Ergebnis" eine komplette Liste die NUR aus Punkten (mit Koordinaten + Adressdaten) besteht und in eine MySQL Datenbank geschrieben werden kann.

Ist hier osmosis der richtige Ansatz und wenn ja könnte mir jemand bei der Erstellung der Kommandozeile behilflich sein?
Vielen Dank schon einmal an alle Helfer!

P.S.: Ich verwende Win 7 64x

Offline

#2 2012-01-13 21:33:21

user_5359
Senior Member
From: Königswinter
Registered: 2008-12-25
Posts: 178
Website

Re: Alle Adressen aus germany.osm herausladen

Hallo jman1983,

Ich schätze mal, dass Du ohne Datenbank Dein Aufgabe nicht lösen kannst und dabei denke ich nicht unbedingt an die Probleme der Relation und Wegeauflösung. Wie willst Du in diesem Zusammenhang die interpolierten Adressen behandeln? Welche Koordinate willst Du überignes bei Wegen benutzen?

MfG     Georg V.

Offline

#3 2012-01-13 21:49:27

Re: Alle Adressen aus germany.osm herausladen

Hmm an interpolierte Adresse habe ich gar nicht gedacht!

Ok die nehmen wir dann schonmal raus aus der Liste!

Also nur noch "sichere" Adressen, also solche wo die genaue Lage (hinreichend genau) bekannt ist!

Ich habe irgendwo einmal von einem plugin für osmosis gelesen, welches aus einer Fläche (Gebäude mit Adressdaten) einen Punkt in der Mitte der Fläche erzeugt. Dies wäre ja quasi genau das, was ich bei "Flächenadressen" gebräuchte...

Bei Relationen müßten dann "nur" die Mitglieder, mit der Rolle "house" genutzt werden und natürlich auch der Straßenname. Wobei "nur" glaube ich masslos untertrieben ist...

Ich hoffe, es findet sich noch jemand der mir wenigstens bisl weiterhelfen kann, so das ich meine Idee nicht sofort wieder verwerfen muss

MfG

Jan

Offline

#4 2012-01-13 22:11:52

Re: Alle Adressen aus germany.osm herausladen

Hi,
ich meine, dass osmconvert eine Option besitzt Flächen-POIs zu Punkt-POIs umzuwandeln.
Chris

Offline

#5 2012-01-13 22:30:03

Re: Alle Adressen aus germany.osm herausladen

chris66 wrote:

Hi,
ich meine, dass osmconvert eine Option besitzt Flächen-POIs zu Punkt-POIs umzuwandeln.
Chris

--all-to-nodes

Wenn ich es recht sehe, wird "einfach" der Knoten in der Reihemitte genommen und nicht der Flächenschwerpunkt selbst berechnet.
Kann man so oder so sehen ...

Offline

#6 2012-01-13 23:03:36

Re: Alle Adressen aus germany.osm herausladen

Besten Dank für den Tipp!
Ich habe mir da jetzt mal eine Kommandozeile zusammengebastelt und wollte fragen ob ich es so richtig verstanden habe:

osmfilter germany.osm --keep= --keep-nodes="addr:*" -o=addr_node.osm
osmfilter germany.osm --keep= --keep-ways="addr:*" -o=addr_way.osm
osmconvert addr_way.osm --all-to-nodes -o=addr_way_node.osm
osmconvert addr_node.osm addr_way_node.osm -o=addr.osm

Ich habe die Relation jetzt (noch) herausgelassen...

Offline

#7 2012-01-13 23:44:35

Re: Alle Adressen aus germany.osm herausladen

addr_way_node.osm muss nochmal gefiltert werden, da die (ur-)nodes der ways ja selbst keine addr hatten, somit
osmfilter addr_way_node.osm --keep= --keep-nodes="addr:*" -o=addr_node2.osm
osmconvert addr_node.osm addr_node2.osm -o=addr.osm

Wie wär's mit
osmconvert germany.osm.pbf --all-to-nodes --out-o5m > g.o5m
osmfilter g.o5m  --keep-nodes="addr:*" --keep-tags="all addr:*" -o=addr.osm

wink

Last edited by kellerma (2012-01-14 00:18:18)

Offline

#8 2012-01-14 00:13:06

Re: Alle Adressen aus germany.osm herausladen

Super! Vielen dank, klappt super!

Jetzt muss die Datei nur noch in die (lokale) Datenbank...

Ich werde morgen mal versuche in diese Richtung starten, aber über Tipps freue ich mich bereits jetzt schon wink

Offline

#9 2012-01-14 00:20:30

Re: Alle Adressen aus germany.osm herausladen

Ich nehme an, dass MySQL eine Importfunktion für CSV-Files hat? Dann müsstest Du nur noch die osm-xml-Daten
in CSV wandeln, was kein großes Problem darstellen sollte. wink

Offline

#10 2012-01-14 00:27:14

Re: Alle Adressen aus germany.osm herausladen

osmosis --write-mysql ....
?

Offline

#11 2012-01-20 17:55:45

Re: Alle Adressen aus germany.osm herausladen

So endlich mal wieder bischen Zeit für dieses "Privatprojekt"!
Also jetzt klappt alles soweit...
Mir ist nur Aufgefallen, dass viele Adressen nicht "komplett" erfasst sind und habe mir gedacht ich mach mal bischen "Qualitätssicherung"! Hierzu möchte ich alle Adressen die "komplett" sind aus der o5m-Datei ausfilter und anschließend die "fehlerhaften" um sie irgendwie für die QS ( evtl. alla keep-right oder so, da hab ich mir noch keine gedanken drüber gemacht) zu veröffentlichen...
So mein Problem ist, wenn ich mit

osmfilter addr.o5m --keep= --keep-nodes="addr:housenumber=* and addr:strett=* and addr:postcode=* and addr:city=*" -o=addr_komplett.osm

alle kompletten Adressen herausfiltern möchte, bekomme ich nur ne leere Datei ;(

Kann mir einer von euch sagen, was ich falsch mache?

Vielen Dank schonmal für eure Hilfe

Offline

#12 2012-01-20 18:04:10

wambacher
OSM Addict
From: Schlangenbad / Wambach
Registered: 2009-12-16
Posts: 4,528

Re: Alle Adressen aus germany.osm herausladen

jman1983 wrote:

osmfilter addr.o5m --keep= --keep-nodes="addr:housenumber=* and addr:strett=* and addr:postcode=* and addr:city=*" -o=addr_komplett.osm

Kennst du das Lied  "Stretts of London"  ?

Google auch nicht - aber such mal danach wink

Gruss
Walter

Last edited by wambacher (2012-01-20 18:04:47)


Der Usus von Xenomorphismen ist auf ein Minimum zu reduzieren.

Offline

#13 2012-01-20 18:15:04

Re: Alle Adressen aus germany.osm herausladen

???

Offline

#14 2012-01-20 18:40:51

Re: Alle Adressen aus germany.osm herausladen

jman1983 wrote:

Mir ist nur Aufgefallen, dass viele Adressen nicht "komplett" erfasst sind und habe mir gedacht ich mach mal bischen "Qualitätssicherung"! Hierzu möchte ich alle Adressen die "komplett" sind aus der o5m-Datei ausfilter und anschließend die "fehlerhaften" um sie irgendwie für die QS ( evtl. alla keep-right oder so, da hab ich mir noch keine gedanken drüber gemacht) zu veröffentlichen...

Nur zur Information: Mein housenumbervalidator (github, Wiki, Forum, Karte) erstellt u. a. auch eine Datei incomplete.txt, in der alle Adressdatensätze, die nicht vollständig sind, gespeichert werden. Diese werden momentan nicht auf der Karte angezeigt, da es a) sehr viele sind (mehr als 797000 in DE), b) mein Programm keine Adressrelationen berücksichtigt und c) einige Mapper grundsätzlich keine vollständige Adressinformtion eintragen, da z.B. Stadt und Staat i.d.R. automatisch ermittelt werden können.

Offline

#15 2012-01-20 19:14:02

Re: Alle Adressen aus germany.osm herausladen

wambacher wrote:

Kennst du das Lied  "Stretts of London"  ?

Google auch nicht - aber such mal danach wink

Ei wo, die AllWissende MüllHalde findet alles:

AWMH wrote:

Search: Stretts of London

About 119,000,000 results
Showing results for Streets of London. Search instead for Stretts of London


Search: Stretts of London

About 112,000 results
Did you mean: Streets of London

Offline

#16 2012-01-20 19:27:24

wambacher
OSM Addict
From: Schlangenbad / Wambach
Registered: 2009-12-16
Posts: 4,528

Re: Alle Adressen aus germany.osm herausladen

kellerma wrote:

Ei wo, die AllWissende MüllHalde findet alles:

AWMH wrote:

Search: Stretts of London

About 119,000,000 results
Showing results for Streets of London. Search instead for Stretts of London


Search: Stretts of London

About 112,000 results
Did you mean: Streets of London

ok, ich werde das Rätsel mal lösen:
 
Search: Stretts of London
...
Did you mean: Streets of London

--> osmfilter addr.o5m --keep= --keep-nodes="addr:housenumber=* and addr:street=* and addr:postcode=* and addr:city=*" -o=addr_komplett.osm

Man sollte die Google-Ausgabe auch richtig interpretieren.

Gruss
walter

Last edited by wambacher (2012-01-20 19:30:21)


Der Usus von Xenomorphismen ist auf ein Minimum zu reduzieren.

Offline

#17 2012-01-20 19:31:00

Re: Alle Adressen aus germany.osm herausladen

wambacher wrote:

Man sollte die Google-Aussage auch richtig interpretieren.

Das ist mir schon klar, wie Google das meint.
Es ist auch eines ihrer ganz großen Stärken, Rechtschreibfehler richtig zu interpretieren,
da kommen Bing & Co. bei weitem nicht mit.
und das bei weitaus komplizierteren Sachen als "Street" & "Strett".

Offline

#18 2012-01-20 20:13:37

Re: Alle Adressen aus germany.osm herausladen

wambacher wrote:

ok, ich werde das Rätsel mal lösen:
 
Search: Stretts of London
...
Did you mean: Streets of London

--> osmfilter addr.o5m --keep= --keep-nodes="addr:housenumber=* and addr:street=* and addr:postcode=* and addr:city=*" -o=addr_komplett.osm

Man sollte die Google-Ausgabe auch richtig interpretieren.

Gruss
walter

Oh man, das ist mir jetzt doch unendlich peinlich... Aber nichts desto trotz vielen Dank für deine "Rechtschreibprüfung"

@gulp21 Die Karte ist ja richtig gut, kannte ich gar nicht. Besten dank hierfür...

Offline

#19 2012-01-21 14:18:43

Re: Alle Adressen aus germany.osm herausladen

Wer kann nochmal schnell ne Tip zu POI/OSM-Datei in CSV/MYSQL geben ?
Ich würde gerne alle Attribute der Nodes mit übernehmen .

Dirk

Offline

#20 2012-04-25 17:06:15

Re: Alle Adressen aus germany.osm herausladen

Moinsen -

das hier

kellerma wrote:

addr_way_node.osm muss nochmal gefiltert werden, da die (ur-)nodes der ways ja selbst keine addr hatten, somit
osmfilter addr_way_node.osm --keep= --keep-nodes="addr:*" -o=addr_node2.osm
osmconvert addr_node.osm addr_node2.osm -o=addr.osm

Wie wär's mit
osmconvert germany.osm.pbf --all-to-nodes --out-o5m > g.o5m
osmfilter g.o5m  --keep-nodes="addr:*" --keep-tags="all addr:*" -o=addr.osm

wink

liefert ein DB-Abzug - Was aber ist mit dem Schema?  Ich mein - wie kommt man denn zu einem vernünfitgen Schema!? Es gibt ja keinen Fremdschlüssel...
Also ich denk das Schema ist schlichtweg “schlecht”.

Aus folgendem Gründen.
Datenhaltung / Konsistenz
– Keine Fremdschlüssel in der Datenbank zu semantischen Abhängigkeiten der Daten insgesamt und das rührt daher, dass ja keine
– Datenintegrität zwingend erforderlich ist. Weil: Subnodes ohne nodes ohne weiteres möglich sind, weil nicht durch FKs in der DB abgesichert.

Also das macht doch so ein Ansatz zu einer schwierigen Aufgabe oder!?

Nochmals - vielle. habv ich da ja auch was noch nicht ganz zu Ende gedacht: Zum einen denke ich, dass es ja so ist: Nur wer wirklich konkret weiss, wie die Zusammenhänge genau sind, der kann diese aus dem Schema zurückholen

Frage - wie habt ihr das gemacht!?

Freu mich auf einen  Tipp

euer TagtheWorld

Offline

#21 2012-04-25 17:42:53

Re: Alle Adressen aus germany.osm herausladen

Also ich kann jetzt nur für mich sprechen:
Ich erledige den Import meiner Daten mit : https://github.com/skyebook/OSMGenerator
Dort sind aus die sql-Dateien einthalten.... (auch mit FK) Oder verstehe ich dich gerade falsch?

Bzw. mit dem spatialite_osm_raw https://www.gaia-gis.it/fossil/spatialite-tools/index geht das ganze auch für spatialite-Datenbanken...

Last edited by jman1983 (2012-04-25 17:49:16)

Offline

#22 2012-04-25 18:24:48

Re: Alle Adressen aus germany.osm herausladen

hi jman1983  - danke für deine schnelle Antwort.

freu mich sehr von dir zu hoeren.

jman1983 wrote:

Also ich kann jetzt nur für mich sprechen:
Ich erledige den Import meiner Daten mit : https://github.com/skyebook/OSMGenerator
Dort sind aus die sql-Dateien einthalten.... (auch mit FK) Oder verstehe ich dich gerade falsch?

Bzw. mit dem spatialite_osm_raw https://www.gaia-gis.it/fossil/spatialite-tools/index geht das ganze auch für spatialite-Datenbanken...


Das klingt alles interessant. Habe von dem Github-Projekt bzw. dem Generator auch schon gehoert - gestern nämlich. Sehr interessant. Ich dachte dass es eher ein  tool ist. Du aber gibst mir den Eindruck dass es eine - hmm fast schon fertige DB ist... !?

Meine Bedenken hab  ich im Übrigen eher angelesen - von hier... http://goblor.de/wp/2008/09/25/howto-op … portieren/
aber ich glaube dass das - was dort diskutiert wurde - ggf. auch schon überholt ist.

Also - Du hast im  Grunde alle POIs importiert - sagen wir mal Alle POIs von Deutschland. Und die DATEN liegen dir in  der MySQL Db  vor!?
Und die Source dafür ist schlicht und ergreifend - der OSMGenerator

ich arbeite auf Linux - (opensuse version 12.1)  Im Grunde koennte ich da über die Kommandozeile auch mal einiges ausprobieren.

Freu mich von dir wieder zu hoeren.

Viele Grüße
TagTheWorld

Offline

#23 2012-04-25 18:46:17

Re: Alle Adressen aus germany.osm herausladen

Hi tagtheworld

bitte bitte, wenn ich helfen kann, immer gern!

tagtheworld wrote:

Das klingt alles interessant. Habe von dem Github-Projekt bzw. dem Generator auch schon gehoert - gestern nämlich. Sehr interessant. Ich dachte dass es eher ein  tool ist. Du aber gibst mir den Eindruck dass es eine - hmm fast schon fertige DB ist... !?

Den Eindruck wollte ich nicht vermitteln, der ist nämlich falsch wink Deine Vermutung war schon richtig, es ist ein Tool um eine (beliebige) osm Datei in eine MySql Db zu "importieren". Es ist in Java geschrieben, sollte daher auch unter Linux problemlos laufen. Allerdings ist es relativ "steif" programmiert, sprich die persönlichen Einstellungen müssen im Quellcode geändert werden (Hab mir schonmal überlegt eine "Erweiterung" bzw. Änderung zu schreiben, aber noch keine Zeit gefunden bzw. auf andere OSM-Projekte konzentriert, aber ich scheife ab... )
Der Autor ist aber sehr hilfsbereit und antwortet schnell auf eMail.... (Kann sogar ein bischen deutsch, wenn ich es recht in Erinnerung habe)

Also ich filtere ALLE Adressen aus den DACH-OSM-Auszügen der Geofabrik, lasse alles was irgendein addr:*-Tag hat zu einem node generieren, filtere anschließend alle kompletten Adressen heraus (für ein weiteres privates Projekt, was aber momentan auch auf Eis liegt) und anschließend werden alle fehlerhaften bzw. unvollständigen Daten in eine MySql Db importiert und hier ( http://osmlabs.square7.de/OSMAddressCorrector/) veröffentlicht. Ja und das erledigt bei mir der OSMGenerator. Als "arbeitsvorbereitende Maßnahme" muss man die enthaltenen sql.Dateien in seine Datenbank importieren. Aber dies ist eigentlich ganz einfach. Ich nutze dazu HeidiSql.

Mit dem spatialite_osm_raw-Tool ist es noch einfacher: spatialite_osm_raw xyz.osm irgendwas.sqlite und ab die Post... (glaube so war der Kommandoaufruf...)

Hoffe ich konnte dir weiterhelfen, ansonsten melde dich nochmal!

Gruß

Jan

Offline

#24 2012-04-26 06:59:34

Re: Alle Adressen aus germany.osm herausladen

Hallo Jan


vielen Dank für deine Antwort. Also ich will das gerne nachstricken - nachbauen und ne MySQL aufsetzen die das dann hier so macht wie du das hast.

Hab eine OpenSuse 12.1 und da läuft schon ein Lamp am Laufen, Auf der Kommandozeile kenn ich mich  einigermaßen aus. Asserdem kann ich minimal Perl.


Frage; wie  geht  s denn Wie binde ich  OSMGenerator.denn ein!? Lässt sich der gut auf der Susi installieren.
Die Kommandozeilenbefehle hast du schon oben alle geschrieben - bzw. sie ja auch schon diskutiert. Das dürfte - wenn die dann in der Reihe (nfolge) und in der Syntax klar sind, auch kein Problem sein.

Geofabrik, {de] Downloads kenne ich schon.

Welches Files nimmst du da denn genau. Ich hab gestern noch gesehen dass die sogar regional runtergehen bis auf die Landesebene. Ich koennte alle DACH-POIs gut gebrauchen.  Das wäre super.

Nun fallen mir im Moment nicht mehr fragen ein - ich denk das erste wäre dass ich den OSMGenerator hier auf der Susi installiere und zuum Laufen bekommen

Das würd ich gern am lg,. Wochenende machen.


Freu mich sehr  von dir zu hoeren.


viele Gruesse & bis bald
TagTheWorld

Offline

#25 2012-04-26 10:35:18

Re: Alle Adressen aus germany.osm herausladen

Hi,

tagtheworld wrote:

Frage; wie  geht  s denn Wie binde ich  OSMGenerator.denn ein!? Lässt sich der gut auf der Susi installieren.
Die Kommandozeilenbefehle hast du schon oben alle geschrieben - bzw. sie ja auch schon diskutiert. Das dürfte - wenn die dann in der Reihe (nfolge) und in der Syntax klar sind, auch kein Problem sein.

Also:
1. Du setzt ne MySQl Datenbank auf
2. "Installierst" die sql Dateien in die Datenbank ( am besten mit phpMyAdmin oder deinem Lieblingsprogramm)
3. Passt den Quellcode vom OSMGenerator an deine Umgebung an
   - Name und Ort der zu importierenden osm-Datei
   - Datenbankname, DB-Nutzer/Passwort und IP (wahrscheinlich "localhost")
4. Kompilieren des Javaquellcodes
5. OSMGenerator ausführen
6. Freuen, dass du ne MySql DB mit OSM Daten hast wink
7. Was auch immer du damit machen möchtest wink

Punkt 6 ist der aller aller wichtigste und darf nicht vernachlässigt werden....

Welches Files nimmst du da denn genau. Ich hab gestern noch gesehen dass die sogar regional runtergehen bis auf die Landesebene. Ich koennte alle DACH-POIs gut gebrauchen.  Das wäre super.

Also ich nutze die germany,austria und switzerland Dateien jeweils immer das PBF-File. Welches du genau nutzt, kommt halt auf deinen Vorstellungen an, von wo du genau die POI haben möchtest. Es würde auch die gesamte Welt gehen...

Ich hoffe, ich konnte dich weiterführen und du hast genug arbeit für das lange Wochenende wink
Darf man fragen, was du genau vorhast?

Offline

Board footer

Powered by FluxBB 1.4.8
Hosting sponsored by Oxilion