OSM 2 Postgresql

Hallo!

Für ein Projekt benötige ich alle Straßen, Orte, Gemeinden, Postleitzahlen und Bundesländer von Baden-Württemberg und Bayern. Dazu brauche ich jeweils die Koordinaten (Longitude und Latitude).

Mithilfe von osm2pgsql habe ich Daten aus der osm-Datei für Baden-württemberg in die Postres-Datenbank (Postgis) importiert.

Mir ist die Struktur dieser Daten nicht ganz klar. Gibt es eine Möglichkeit die für mein Projekt benötigten Daten aus der OSM-Datei zu exportieren??

Noch einer, der seinen eigenen Fork aufmachen will. (Solche Anfragen
von Forum-Neulingen häufen sich in letzter Zeit sehr auffällig.)

Im Prinzip ja, kann man (im Prinzip) alles im OSM-Wiki nachlesen.

JM2C
Edbert (EvanE)

Definier ich das über die *.style-Datei?

Im OSM-Wiki find ich nicht wirklich Informationen dazu. Wie ich die Unterscheidung ob ein Punkt nun zB ein Ort, eine Straße, … ist machen soll ist mir ein Rätsel.

Bitte um Hilfe!

Wie kommst Du darauf?

Vielleicht ist auch der Zeitpunkt erreicht, wo OSM mehr und mehr Aufmerksamkeit bekommt, und nun Anwender die Daten nutzen wollen.

Ist doch nicht verkehrt, oder? Schliessen mappen wir (zumindest nicht ich) nicht nur zum Selbstzweck.

Nebenbemerkung: Ich finde es erstaunlich, daß nun einige Leute sogar auf non-commericial gehen wollen. Das Projekt wurde z.B. auch immer mit kostenlosen und rechtssicheren Anfahrtskizzen für die (Firmen-)Homepage beworben.

Christian

Du mußt beachten, daß der Import verlustbehaftet ist. osm2pgsql wird vor allem für den Renderer ‘Mapnik’ benutzt. Danach ist der Import-Style ausgerichtet. Eventuell mußt Du ihn an Deine Bedürfnisse anpassen.

Christian

hi Edbert

seh ich genau so. newbie - zumindest was das Forum betrifft - und dann “voll einsteigen”. ich halte mich inzwischen da etwas zurück.
mfG
walter

Schlechte Laune heute im Forum :wink:

Also ich kenne mich in dem Thema eigentlich nicht aus, aber sollte ein Ort (Dorf, Stadt, Bundesland etc) nicht über den “place” Tag in der Datenbank zu finden sein und Straßen über highway (Wobei man noch Fuß-, Rad- und Reitwege etc ausschliessen sollte)? Bei einer Straße frag ich mich allerdings, was da als Koordinate zurückkommt, da gibts ja dann nicht nur eine Koordinate. Zusätzlich kann eine Straße noch aus mehreren Segmenten bestehen. Gut das ich sowas nicht machen muß. Vielleicht hilft es, wenn Du sagst, was Du vorhast

Hallo Christian

Genau wegen der Erläuterung in Klammern.
Es ist auffällig, dass solche Newbie-Postings mit einem großen Rundumschlag seit
Abflauen der Lizenz-Diskusion verstärkt auftreten. Da macht ich mir so meine Gedanken.

Es kann natürlich sein, dass ich genau diesem einen Menschen unrecht tue.

Aber ich kann nicht einschätzen ob das nur eine ungeschickte Formulierung ist
(was ich sonst meist unterstelle) oder ob dieser Mensch sich seine private Kopie
vor der Umstellung sichern will.

Auch das betrachte ich keineswegs als verwerflich, aber diese gehäuften
Anfragen nerven (mich) irgendwann. Und das musste mal raus.

Immerhin weis johannes1234 jetzt, warum die Antworten eventuell
spärlicher ausfallen, als er erwartet hat.

Edbert (EvanE)

Auf die Gefahr hin das ich von den anderen Senioren gesteinigt werde :slight_smile:

Hallo Johannes1234 schau mal nach diesem Link: http://www.oracle.com/global/de/community/tipps/geo-1/index.html Den habe ich schon einmal empfohlen, es geht zwar nicht in erster Linie und ausschließlich um deine Frage, andere haben die Info´s von dort aber schon als wertvoll eingestuft.

Es gibt jede Menge Scripts und “Anleitung”… Wenn du hier in der Suche einfach postgreSQL eingibst bekommst du weitere Links zum Thema…

@wambacher, EvanE; ich beschäftige mich in letzter Zeit auch intensiver mit der Abfrage und Darstellung der Daten in Karten und ähnlichem. Dies mache ich aber nicht um gleich einen weiteren Fork zu starten, sondern um einen Teil der Früchte zu ernten die ich mit beigetragen habe. :wink:

Außerdem kann ich mir nicht vorstellen das alle potenziellen “Fork-Träger” auch die passende Infrastruktur zur Verfügung haben und das sinnvoll umzusetzen. Schaun wir mal…
Georg

also für die orte und gemeinden, könntest du eine sql abfrage durchführen zb.

SELECT ST_AsKML(way), name FROM planet_osm_point WHERE place='city’UNION SELECT ST_AsKML(way), name FROM planet_osm_point WHERE place='hamlet’UNION SELECT ST_AsKML(way), name FROM planet_osm_point WHERE place='village’UNION SELECT ST_AsKML(way), name FROM planet_osm_point WHERE place='town’UNION SELECT ST_AsKML(way), name FROM planet_osm_point WHERE place=‘surburb’

mit pgadmin3 geht es wunderbar, man kann das ergebnis in eine Textdatei speichern, dan hast du in etwa sowas:

13.1791638,54.457923399999999;Waase
13.179251600000001,53.441750900000002;Usadel
13.1792748,48.8358621;Birkenöd
13.179703,51.304923100000003;Bornitz
13.179783499999999,54.251577500000003;Neuhof
13.1800526,50.988538300000002;Pappendorf
13.1801303,51.1037149;Naußlitz
13.1802949,48.738490800000001;Lohholz
13.1803709,54.066856799999996;Lüssow

bei straßen weiß ich nicht so genau, ich habe mal für ein paar kleine orte nach dieser anleitung straßenverzeichnisse erstellt,
aber auf anhieb lief das auch nicht…

http://wiki.openstreetmap.org/wiki/User:Geo-francis

wenn in jeder straße eine addresse gemappt ist funktioniert eine sql-abfrage zb. so

SELECT DISTINCT on (“addr:street” ) ST_AsKML(way), “addr:street” FROM planet_osm_point WHERE “addr:city”=‘Torgau’

schau mal ob in deinem default.style diese zeile steht:

node,way addr:city text
node,way addr:street text

wenn nicht mußt du es einfügen, und die osm-daten nochmal importieren.

aber es gibt sicherlich noch tausende straßen ohne addressen…

grüße von lutz

warum so kompliziert?

SELECT ST_AsKML(way), name FROM germany_point WHERE place in (‘city’,‘hamlet’, ‘village’,‘town’,‘surburb’);

oder hab ich da was übersehen? ist übrigens auch “etwas schneller” 25/160 sekunden auf meiner lahmen kiste
walter

Hallo Georg

Fork war sicher der falsche Ausdruck.
Private Kopie wäre vermutlich passender gewesen.

So etwas ist in meinen Augen in keiner Weise verwerflich.
Allerdings fällt die Häufung sehr globaler Anfragen von Forum-Newbies auf.
Auf mehr wollte ich nicht aufmerksam machen.

Ob die sich jeweils über die notwendige Software-Infrastruktur im klaren
sind oder ahnen, welcher Aufwand da drin steckt, da vermute ich eher nein.

Edbert (EvanE)

warum so kompliziert?

weil ich es nicht besser wußte !-) ,
und das er nicht nur antworten bekommt, die ihm nicht
weiterhelfen teilte ich halt mein halbwissen mit…

grüße von lutz

ok,
mer haben alle mal klein angefangen - die meissten sogar als baby :wink:
war mir allerdings nicht sicher ob da nicht irgendwo nen trick in der abfrage drin war.
gruss

walter

Zunächst mal ein großes Danke für alle konstruktiven Antworten!!

Bin stark begeistert von diesem Forum und der OSM-Community! Hab selten ein Forum erlebt in dem man so schnell Hilfe bekommt (:

Um etwas genauer zu werden:
Ich brauche diese Geokoordinaten für Straßen, Orte, Gemeinden, Kreise und Postleitzahlen für eine Wegstreckenoptimierung. In Österreich sind diese Daten über Statistik Austria gegen eine kleine Aufwandsentschädigung schnell zu bekommen. In Deutschland sieht das meines Wissens etwas anders aus. Deshalb kam die Idee, diese Daten über Open Street Map zu beziehen. (Oder gibt es da vielleicht doch noch andere Quellen?)

Bin durch eure Hilfe schon ein ganzes Stück weiter!

Eine Frage zur allgemeinen Einteilung der Regionen in Deutschland:
Stimmt die folgende Unterteilung:
Bund > Bundesländer > Kreise (Stadtkreise/Landkreise) > Städte/Gemeinden > Ort
Wie in diesem Forum bereits beschrieben wird ein Ort/Kreis/Stadt/Gemeinde/… über die Tabelle planet_osm_point gespeichert. Über die place-Spalte kann ich mir den Typ dieses Ort/Kreis/Stadt/Gemeinde/… auslesen. Die genaue Einteilung ist mir bis jetzt noch nicht ganz schlüssig. Im OSM-wiki konnte ich nur eine Gliederung nach der Einwohnerzahl erkennen. Ist das so oder gibt es da andere Regeln?
Z.B. wenn place = ‘village’ denk ich mir mal sollte das eine Gemeinde sein…

Generell wollte ich noch nach der Abdeckung in Baden-Württemberg und Bayern fragen. Bei den Straßen bekomme ich ungefähr 44000 Einträge für Baden-Württemberg und das kommt mir im Vergleich zu Österreich etwas wenig vor (Österreich hat ungefähr 120000).

Schöne Grüße,
Johannes

das sollte Dir bei der Frage helfen…
http://wiki.openstreetmap.org/wiki/Tag:boundary%3Dadministrative
http://wiki.openstreetmap.org/wiki/DE:Grenze

Gut, danke! Bin schon ein Stück weiter.

Soweit ich gesehen habe gibt es in OSM die Postleitzahl mit den Geokoordinaten nicht. Gibt es da eine andere nützliche Datenquelle um diese Informationen zu erhalten??

Danke nochmal für alle hilfreichen Antworten!

Johannes

Hallo Johannes

Ja und nein.

  • in NRW gibt es zwischen Land und Kreis noch die Regierungsbezirke
    Das kann auch in anderen Bundesländern existieren.
  • Städte können Stadtbezirke (administrativ) und Ortsteile enthalten
  • Gemeinden können Verbandsgemeinden sein, also selbst aus mehreren
    Gemeinden (teils mit eigener Verwaltung) bestehen.
  • Gemeinden können aus mehreren Orten ohne eigene Verwaltung bestehen.

In BaWü besteht die Gemeinde http://www.waldbronn.de/ Waldbronn (nahe Karlsruhe) aus den Orten/
Gemeinden Busenbach, Reichenbach und Etzenrot. Ob die noch eigene
Verwaltungen haben oder zumindest Anlaufstellen für den Bürger,
entzieht sich meiner Kenntnis.
Waldbronn ist übrigens ein Kunstwort für diesen Zusammenschluss.

Leider insgesamt recht kompliziert und von Bundesland zu Bundesland verschieden.

HTH
Edbert (EvanE)

Kannst Du Dir nicht alle Objekte mit der gewünschten PLZ ziehen und die Koords dann mitteln? Oder Du liest das mal
http://wiki.openstreetmap.org/wiki/Import/Catalogue/Postleitzahlen_Deutschland_2010
http://wiki.openstreetmap.org/wiki/Import/Catalogue/Postleitzahlen_Deutschland_2010/Todo

@brogo & johannes1234: Wenn man im Stylefile eine hstore-Spalte hinzufügt und diese Funktion beim Import aktiviert, importiert er alle Daten, die im Originaldatensatz drin waren und baut auch Relationen zusammen. Das ist sehr, sehr praktisch.

@johannes1234: Für Polygon-Mittelpunkte empfehle ich ST_PointOnSurface(), für Straßenmittelpunkte (nach Zusammenfassung) ST_Line_Interpolate_Point() mit Wert 0.5 oder halt verschiedene, feste Intervalle.