You are not logged in.
- Topics: Active | Unanswered
Announcement
Pages: 1
#1 2015-02-15 15:17:06
- Ceetrox
- Member
- Registered: 2015-02-15
- Posts: 6
OSM zu CSV - Hilfe
Hallo,
ich beschäftige mich jetzt seit 48 Stunden intensiv mit OSM und finde die Informationsdichte bei Google schauerhaft. Ich komme einfach nicht zum Ziel und hoffe das es hier 1-2 Personen gibt die mir entweder nützliches Material zum lesen oder direkt eine Lösung anbieten können....
Grundsatz:
Wenn ich richtig verstanden habe ist OSM eine Datenbank mit nahezu allen relevanten Karteninformationen. Also auch Straßen, event. Hausnummern usw...
Was ich Suche:
Ich möchte in einem PHP Script eine Routenplanung optimieren. Dazu benötige ich alle Straßen Deutschlands in Koordinaten.
Frage:
Gibt es einen Weg aus dieser "verdammten" OSM Datei einen CSV Export mit folgenden Daten zu machen - OHNE das ich dafür studiert haben muss ?
ID (fortlaufend)
Latitude
Longitude
Straßenname
event. Hausnummer
Postleitzahl
Info:
Offenbar kann ich das mit dem Tool Osmosis realisieren. Leider gibt es nirgendwo ein anständiges Tutorial dafür. Wenn jemand für meine Anforderungen gleich den Befehl weiß wäre ich sehr dankbar.
Vielen Dank für die Hilfe!
Offline
#2 2015-02-15 16:05:11
- GUFSZ
- Member
- Registered: 2012-11-30
- Posts: 444
Re: OSM zu CSV - Hilfe
Hast Du mal xml zu csv ausprobiert. OSM ist eigentlich xml
Offline
#3 2015-02-15 16:11:02
- Ceetrox
- Member
- Registered: 2015-02-15
- Posts: 6
Re: OSM zu CSV - Hilfe
Hast Du mal xml zu csv ausprobiert. OSM ist eigentlich xml
Ich kann es sowohl zu CSV als auch zu XML wandeln.... Die CSV enthält aber leidur nur eine Spalte mit wirren Infos... Vermutlich weil ich die Parameter für den Export nicht richtig eingestellt habe.
Die Anforderungen stehen ja bereits oben.
Ich werde anschließend auch ein Tutorial dazu machen wenn ich alle Puzzelteile zusammen habe. Es gibt Firmen die diese Datensätze zwischen 500 und 10.000 Euro verkaufen und in dieser OSM stecken die "irgendwie" gratis drin...
Offline
#4 2015-02-15 16:54:22
- SammysHP
- Member
- From: Celle, Germany
- Registered: 2012-02-27
- Posts: 1,668
- Website
Re: OSM zu CSV - Hilfe
Koordinaten? Wege haben mehrere Punkte. Außerdem ist nicht jeder Weg begeh-/fahrbar. Würde die Idee nochmal grundlegend überdenken.
Offline
#5 2015-02-15 17:09:46
- chris66
- Member
- From: Germany
- Registered: 2009-05-24
- Posts: 9,939
Re: OSM zu CSV - Hilfe
PLZ ist nicht ganz einfach, da in Relationen kodiert.
Der Rest ist machbar, weiß aber momentan nicht ob es fertige OSM2CSV Tools gibt.
Das Format ist hier beschrieben:
http://wiki.openstreetmap.org/wiki/OSM_XML
Mapper aus dem Münsterland.
Offline
#6 2015-02-15 17:11:50
- Netzwolf
- Member
- Registered: 2008-04-01
- Posts: 1,665
- Website
Re: OSM zu CSV - Hilfe
Nahmd,
Wenn ich richtig verstanden habe ist OSM eine Datenbank mit nahezu allen relevanten Karteninformationen. Also auch Straßen, event. Hausnummern usw...
Es gibt bei OSM keine garantierte Qualität. Hausnummern können drin sein, müssen aber nicht.
Was ich Suche:
ID (fortlaufend)
Latitude
Longitude
Straßenname
event. Hausnummer
Postleitzahl
Zu den Straßen:
– was meinst Du mit Lat/Lon? Eine einzelne Koordinate (Mittelpunkt des Segments), oder ein Array / eine Liste mit den Koordinaten der Punkte (Plural!), die den Verlauf der Straße beschreiben?
– der Straßenverlauf ist bei uns in Segmente aufgeteilt, wobei die Aufteilung nicht deterministisch ist: es kann sein, dass zwei Segmente sich an einer Straßenkreuzung kreuzen, die Kreuzung besteht dann nur aus zwei "Straßen". Es kann auch sein, dass die Segmente an einer Kreuzung enden, dann sind an der Kreuzung vier Segmente beteiligt. Es kann auch ein Segment auf freier Strecke enden und da ein neues beginnen. Du musst also sehr wahrscheinlich einige Segmente für Deinen Bedarf noch einmal splitten und/oder zusammenfassen.
– die Straßen/Wege sind bei uns in Klassen aufgeteilt, die im Attribut “highway=” erfasst wird. Such nach "openstreetmap wiki key highway" für weitere Infos dazu. Du musst wählen, welche Klassen Du in Deinem Bestand haben willst.
- an Straßen und Wegen können noch Dutzend weitere Attribute kleben.
Zu den Hausnummern:
– Hausnummern kleben bei uns an Gebäuden, aber erst einmal nicht an den Straßen[segmenten]. Die Hausnummern an die Straßensegmente zu überführen, die Segmente also mit Hausnummernbereichen auszustatten ist eine nicht ganz triviale Aufgabe.
Damit Du Dir eine Vorstellung von der Größenordnung machen kannst, habe ich mal was vorbereitet™, und zwar ein CSV mit nur den nötigsten Angaben zu den Wegsegmenten in DE: Koordinaten (Mittelpunkt, kein Verlauf), Länge, Klasse, Name sowie Plz. und Ort. Gepackt 86Mb, ungepackt 466Mb. Wohlgemerkt OHNE Verlauf und OHNE die Attribute, die man zu einer sinnvollen Nutzung braucht.
id lon lat ~size highway name plz city
w150792360 13.737968 51.051823 l61 living_street Sporergasse 01067 Dresden
w163208264 13.726507 51.054363 l110 living_street Schützengasse 01067 Dresden
w163468488 13.743211 51.052291 l59 living_street Georg-Treu-Platz 01067 Dresden
[7052563 Zeilen entfernt]
Meine Kristallkugel sagt mir, dass Du für den Start mit einem kleineren Auszug (zB. Regierungsbezirk) der OSM-Daten glücklicher wirst. Und Dich zuerst ein wenig in das bei OSM verwendete Datenmodell und die die Attribute einarbeiten solltest.
Gruß Wolf
Nach dem Umzug des Forums in eine von HOT-Angestellten genudgete Bällchenbad-Community, die infantile Befindlichkeiten wichtig nimmt, werde ich auch nicht mehr sporadisch vorbeischauen. Fragen zu meinen Beiträgen also bitte per Mail oder anonym via Twitter-DM.
Offline
#7 2015-02-15 19:47:02
- Ceetrox
- Member
- Registered: 2015-02-15
- Posts: 6
Re: OSM zu CSV - Hilfe
Nahmd,
Ceetrox wrote:Wenn ich richtig verstanden habe ist OSM eine Datenbank mit nahezu allen relevanten Karteninformationen. Also auch Straßen, event. Hausnummern usw...
Es gibt bei OSM keine garantierte Qualität. Hausnummern können drin sein, müssen aber nicht.
Was ich Suche:
ID (fortlaufend)
Latitude
Longitude
Straßenname
event. Hausnummer
PostleitzahlZu den Straßen:
– was meinst Du mit Lat/Lon? Eine einzelne Koordinate (Mittelpunkt des Segments), oder ein Array / eine Liste mit den Koordinaten der Punkte (Plural!), die den Verlauf der Straße beschreiben?
– der Straßenverlauf ist bei uns in Segmente aufgeteilt, wobei die Aufteilung nicht deterministisch ist: es kann sein, dass zwei Segmente sich an einer Straßenkreuzung kreuzen, die Kreuzung besteht dann nur aus zwei "Straßen". Es kann auch sein, dass die Segmente an einer Kreuzung enden, dann sind an der Kreuzung vier Segmente beteiligt. Es kann auch ein Segment auf freier Strecke enden und da ein neues beginnen. Du musst also sehr wahrscheinlich einige Segmente für Deinen Bedarf noch einmal splitten und/oder zusammenfassen.
– die Straßen/Wege sind bei uns in Klassen aufgeteilt, die im Attribut “highway=” erfasst wird. Such nach "openstreetmap wiki key highway" für weitere Infos dazu. Du musst wählen, welche Klassen Du in Deinem Bestand haben willst.
- an Straßen und Wegen können noch Dutzend weitere Attribute kleben.
Zu den Hausnummern:
– Hausnummern kleben bei uns an Gebäuden, aber erst einmal nicht an den Straßen[segmenten]. Die Hausnummern an die Straßensegmente zu überführen, die Segmente also mit Hausnummernbereichen auszustatten ist eine nicht ganz triviale Aufgabe.
Damit Du Dir eine Vorstellung von der Größenordnung machen kannst, habe ich mal was vorbereitet™, und zwar ein CSV mit nur den nötigsten Angaben zu den Wegsegmenten in DE: Koordinaten (Mittelpunkt, kein Verlauf), Länge, Klasse, Name sowie Plz. und Ort. Gepackt 86Mb, ungepackt 466Mb. Wohlgemerkt OHNE Verlauf und OHNE die Attribute, die man zu einer sinnvollen Nutzung braucht.
id lon lat ~size highway name plz city w150792360 13.737968 51.051823 l61 living_street Sporergasse 01067 Dresden w163208264 13.726507 51.054363 l110 living_street Schützengasse 01067 Dresden w163468488 13.743211 51.052291 l59 living_street Georg-Treu-Platz 01067 Dresden [7052563 Zeilen entfernt]
Meine Kristallkugel sagt mir, dass Du für den Start mit einem kleineren Auszug (zB. Regierungsbezirk) der OSM-Daten glücklicher wirst. Und Dich zuerst ein wenig in das bei OSM verwendete Datenmodell und die die Attribute einarbeiten solltest.
Gruß Wolf
Ich danke deiner Kristallkugel und werde deinen Post einmal studieren. Vielen Dank!
Wenn du mir jetzt noch verrätst wie der Befehl für den Export dieser CSV lautet... Hast du Osmosis verwendet?
Edit: Ok hab es mir angeschaut. Im Grunde brauch ich nur den Mittelpunkt der jeweiligen Straße (also jede Straße nur 1x / 1x name pro plz) ohne size, highway und city
Woher kommst du ? Ich würde mich mit einer Einladung zum Essen erkenntlich zeigen um weitere Informationen zu erhaschen
Last edited by Ceetrox (2015-02-15 20:17:28)
Offline
#8 2015-02-15 20:53:44
- Netzwolf
- Member
- Registered: 2008-04-01
- Posts: 1,665
- Website
Re: OSM zu CSV - Hilfe
Nahmd,
Ich danke deiner Kristallkugel und werde deinen Post einmal studieren. Vielen Dank!
Wenn du mir jetzt noch verrätst wie der Befehl für den Export dieser CSV lautet... Hast du Osmosis verwendet?
Nein, Osmosis kann weder die Länge noch Postleitzahl oder Stadt dazuschreiben.
Nach meinen rudimentären Kenntnissen brauchst Du in Osmosis nur wenige Parameter:
— mach alles zu Pois
— behalte alles mit "highway=" (wirf den Rest weg)
— schreib ein CSV raus
— schreib die und die Felder (highway, name) in das CSV
Wie die Parameter genau heißen → Doku.
Wenn Du die Postleitzahlen oder Orte dazupacken willst oder sogar die Hausnummern zuordnen, kommst Du kaum daran vorbei, die OSM-Rohdaten in eine Datenbank (i.a. Postgres+Postgis) einzuspielen und dann die DB geschickt zu befragen.
Nachtrag:
Im Grunde brauch ich nur den Mittelpunkt der jeweiligen Straße (also jede Straße nur 1x / 1x name pro plz) ohne size, highway und city
Sollst Du haben. Die Länge ist aus technischen Gründen dabei (wird zur Berechnung des "Mittelpunktes" benutzt), und die highway am Ende, damit Du siehst, aus welchen Straßenklassen sich die jeweilige Straße zusammensetzt.
Für die eingesparte Zeit kannst Du Dich hier erkenntlich zeigen. Server können nie groß und schnell genug sein.
Gruß Wolf
Last edited by Netzwolf (2015-02-15 21:21:26)
Nach dem Umzug des Forums in eine von HOT-Angestellten genudgete Bällchenbad-Community, die infantile Befindlichkeiten wichtig nimmt, werde ich auch nicht mehr sporadisch vorbeischauen. Fragen zu meinen Beiträgen also bitte per Mail oder anonym via Twitter-DM.
Offline
#9 2015-02-15 21:04:30
- gormo
- Member
- Registered: 2013-08-01
- Posts: 2,119
- Website
Re: OSM zu CSV - Hilfe
Edit: Ok hab es mir angeschaut. Im Grunde brauch ich nur den Mittelpunkt der jeweiligen Straße (also jede Straße nur 1x / 1x name pro plz) ohne size, highway und city
Da sind dann aber auch eventuell Fehler drinnen, wenn eine Straße über mehrere PLZ-Bereiche geht.
Ich kristallkugele mal weiter: wolf hat seine eigene Version der OSM-Datenbank bei sich laufen, und hat sich mit schlauen SQL-Abfragen dagegen diese Datei geholt.
Es geht aber auch anders: für die Ausgabe als CSV aus den OSM-Export-Dateien gibt es die beiden Tools osmfilter ( http://wiki.openstreetmap.org/wiki/DE:Osmfilter ) und osmconvert ( http://wiki.openstreetmap.org/wiki/DE:Osmconvert ) , zu denen es auch auf der Hilfeplattform ( https://help.openstreetmap.org/tags/osmconvert/ , https://help.openstreetmap.org/tags/osmfilter/ ) jede Menge Fragen und Antworten gibt.
OSM hat nicht das Ziel bis Ende des Monats einen vollständigen Datensatz der Welt zu enthalten.
(nach S.W.) - Aber weil die Welt vielfältig ist, weil sie auch im Detail interessant ist, mag ich genaue Karten (nach C.)
Offline
#10 2015-02-15 21:38:18
- TheFive
- Member
- Registered: 2009-05-03
- Posts: 1,566
- Website
Re: OSM zu CSV - Hilfe
Da wir von Deinem Problem nur einen Ausschnitt der Lösung kennen, können wir natürlich auch nur diesen versuchen zu optimieren.
Da Dir das Mapping auf einfache Lat Lon Koordinaten mit PLZ wichtig ist (ich das Thema Offline / Online nicht bewerten kann), könnte ich mir vorstellen, das dir ganz einfach auch Nominatim weiterhelfen kann. Macht was Du suchst, und ist online bereits fertig.
Kann man sich auf offline installieren, wenn Online ein No Go ist.
Christoph
Offline
#11 2015-02-15 21:48:30
- Ceetrox
- Member
- Registered: 2015-02-15
- Posts: 6
Re: OSM zu CSV - Hilfe
Da wir von Deinem Problem nur einen Ausschnitt der Lösung kennen, können wir natürlich auch nur diesen versuchen zu optimieren.
Da Dir das Mapping auf einfache Lat Lon Koordinaten mit PLZ wichtig ist (ich das Thema Offline / Online nicht bewerten kann), könnte ich mir vorstellen, das dir ganz einfach auch Nominatim weiterhelfen kann. Macht was Du suchst, und ist online bereits fertig.
Kann man sich auf offline installieren, wenn Online ein No Go ist.
Christoph
Dann vllt zum Projekt ein paar Infos:
Ich habe eine KundenDB mit fast 120.000 Datensätzen und erstelle ein Script welches die Routenplanung für Außendienstmitarbeiter übernimmt. Derzeit arbeite ich mit den Koordinaten von Postleitzahlen.
Mein Ziel ist es mit verschiedenen Suchtechniken für die Adresse des KD die Koordinaten aus einer OSM DB zu suchen um die Planung zu verfeinern. Ideal wäre hier eigentlich die Google API - leider belaufen sich meine Suchanfragen täglich auf bis zu 60.000 Querrys womit ich Google jährlich einen Porsche finanzieren würde.
Plan ist also alle deutschen Straßen mit jeweiliger Postleitzahl und Koordinaten (egal welcher Punkt auf der Straße / es wäre genauer als nur die Koordianten der PLZ) in eine MySQL DB zu stecken.
Problem ist nur das ich an OSM vollständig scheitere da das Thema mit PHP und SQL mal gar nix zu tun hat. Ich habe noch nie mit PostgreSQL gearbeitet und will es offen gesagt auch nicht.
Im Grunde such ich nur den schellsten Weg für:
"Mach aus einer deutschlandweiten OSM-DATEI eine CSV mit ID, Lat, Lon, Straßenname und Postleitzahl wobei der Straßenname nur 1x pro PLZ auftauchen soll)
Offline
#12 2015-02-15 21:51:45
- Netzwolf
- Member
- Registered: 2008-04-01
- Posts: 1,665
- Website
Re: OSM zu CSV - Hilfe
Nahmd,
Im Grunde such ich nur den schnellsten Weg für:
"Mach aus einer deutschlandweiten OSM-DATEI eine CSV mit ID, Lat, Lon, Straßenname und Postleitzahl wobei der Straßenname nur 1x pro PLZ auftauchen soll)
Der schnellste Weg ist der Download: PLZ und Straße (1.1 Mio Records, gepackt 18Mb, ausgepackt 76Mb) und PLZ, Straße und Hausnummer (7.9 Mio Records, gepackt 95Mb, ausgepackt 430Mb).
Die zweite Liste ist wegen der Unvollständigkeit der Hausnummern kein Ersatz für die erste Liste, sondern (nur) eine Ergänzung: man suche zuerst in Liste 2, und wenn kein Treffer, dann in Liste 1.
Gruß Wolf
Edit: überholten Hinweis entfernt
Last edited by Netzwolf (2015-02-16 20:26:56)
Nach dem Umzug des Forums in eine von HOT-Angestellten genudgete Bällchenbad-Community, die infantile Befindlichkeiten wichtig nimmt, werde ich auch nicht mehr sporadisch vorbeischauen. Fragen zu meinen Beiträgen also bitte per Mail oder anonym via Twitter-DM.
Offline
#13 2015-02-16 15:22:39
- gormo
- Member
- Registered: 2013-08-01
- Posts: 2,119
- Website
Re: OSM zu CSV - Hilfe
Magst du (@Netzwolf) grad noch deinen Algorithmus erklären (bzw. das SQL posten), wie du an die Datei gekommen bist?
War es in etwa (hab meine DB grade nicht zugreifbar, daher pseudocode):
select
plz->tags('postal_code') as PLZ,
obj.name
from planet_osm_lines as obj, planet_osm_polygons as plz
where
plz.tags->'boundary' = 'postal_code'
and obj->tags('highway') is not null
and obj->tags('name') is not null
and ST_Within(plz.way, obj.way)
group by PLZ, obj.name
...oder kriegt man dann die PLZ-Grenzen, die nicht als closed way, sondern als Relation erfasst sind, nicht mit?
Last edited by gormo (2015-02-16 15:26:50)
OSM hat nicht das Ziel bis Ende des Monats einen vollständigen Datensatz der Welt zu enthalten.
(nach S.W.) - Aber weil die Welt vielfältig ist, weil sie auch im Detail interessant ist, mag ich genaue Karten (nach C.)
Offline
#14 2015-02-16 15:30:48
- wambacher
- Member
- From: Schlangenbad/Wambach, Germany
- Registered: 2009-12-16
- Posts: 16,743
- Website
Re: OSM zu CSV - Hilfe
...oder kriegt man dann die PLZ-Grenzen, die nicht als closed way, sondern als Relation erfasst sind, nicht mit?
Die Plz-Grenzen stehen mit ihrer negativen osm_id in planet_osm_polygon.
z.B. #3320567 von 65388 Schangenbad:
select osm_id,name,tags from planet_osm_polygon where osm_id=-3320567;
gruss
walter
Offline
#15 2015-02-16 16:21:54
- Netzwolf
- Member
- Registered: 2008-04-01
- Posts: 1,665
- Website
Re: OSM zu CSV - Hilfe
Nahmd,
Magst du (@Netzwolf) grad noch deinen Algorithmus erklären (bzw. das SQL posten), wie du an die Datei gekommen bist?
Ich hab keine SQL-Datenbank, sondern nur eine binäre Kopie des Planet und eine handvoll Tools, um die Daten zu plündern. Die Kopie ist immer 'nen Tag hinterher, und die Tools sind strunzdumm und können nur einen winzigen Bruchteil von dem, was OP oder SQL können. Das aber können sie schnell.
War es in etwa (hab meine DB grade nicht zugreifbar, daher pseudocode):
select plz->tags('postal_code') as PLZ, obj.name from planet_osm_lines as obj, planet_osm_polygons as plz where plz.tags->'boundary' = 'postal_code' and obj->tags('highway') is not null and obj->tags('name') is not null and ST_Within(plz.way, obj.way) group by PLZ, obj.name
So ähnlich würd ich es machen. Fehlt noch die Begrenzung auf DE und die Bestimmung von Koordinaten für jede PLZ/Namen-Kombination.
Mich interessiert aber viel mehr die Lösung mit osmconvert und osmfilter, denn nur für eine dämliche Straßenliste ein Postgres+Postgis mit Feed aufsetzen und betreuen zu müssen halte ich für Overkill.
Gruß Wolf
Nach dem Umzug des Forums in eine von HOT-Angestellten genudgete Bällchenbad-Community, die infantile Befindlichkeiten wichtig nimmt, werde ich auch nicht mehr sporadisch vorbeischauen. Fragen zu meinen Beiträgen also bitte per Mail oder anonym via Twitter-DM.
Offline
#16 2015-02-16 23:28:35
- gormo
- Member
- Registered: 2013-08-01
- Posts: 2,119
- Website
Re: OSM zu CSV - Hilfe
Mich interessiert aber viel mehr die Lösung mit osmconvert und osmfilter, denn nur für eine dämliche Straßenliste ein Postgres+Postgis mit Feed aufsetzen und betreuen zu müssen halte ich für Overkill.
Härteres Stück Arbeit als ich dachte, und ganz ohne ogr2ogr wirds auch nicht gehen. Momentan kämpfe ich mit dem OSM-Treiber für OGR...
OSM hat nicht das Ziel bis Ende des Monats einen vollständigen Datensatz der Welt zu enthalten.
(nach S.W.) - Aber weil die Welt vielfältig ist, weil sie auch im Detail interessant ist, mag ich genaue Karten (nach C.)
Offline
Pages: 1