OSM in Datenbank kopieren

Naja ich denke eher das Problem ist das der Server nicht gemietet ist, sondern kostenlos. Da muss man dann eben schauen ob man wie bei anderen Projekten die Sache aufteilt. Zum Beispiel in dem man die Berechnungen und Datenaufbereitungen auf dem lokalen Rechner macht und dann nur die Datenbank auf dem Server füttert.

Openptmap und bahnradwandern.bplaced.net verfolgen einen solchen Ansatz für die Rasterkarten.

Sorry, da bin ich in den falschen Thread gekommen.

Bei mir gibts keine Datenbank auf dem Server!. Alles nur Dateiablage. Ist aber auch nicht für den produktiven Einsatz gedacht.

gruß,
ajoessen

Uuups. Da habe ich nicht zu Ende gedacht.

Bei den Häusern kann es einem eventuell egal sein, ob dafür Wege ohne Knoten entstehen. Die Wege sollte man in der Tat nicht weglassen. Es sei denn man spielt generell (dann höchstens wöchentlich) einen neuen Planet-File ein. Wenn man kleinere Ausschnitte wie Deutschland oder nur ein Bundesland hat, geht das natürlich eher. Ab Europa wird es wieder aufwändig.

Edbert (EvanE)

Ah, die ist von dir?
Für www.openptmap.de muss ich mich aber auch von der Aussage distanzieren. Die läuft auf einem virtuellen Server, die Daten werden dort (auf dem virtuellen Server) mit Mapnik gerendert. Das betrifft natürlich nur den ÖV-Layer. Der Standard-Kartenlayer kommt von osm.org.

Ist alles kein großes Problem, weil die Daten vorher (mit dem inzwischen betagten Programm osmfilter) deutlich reduziert und dann mit osm2pgsql in die Datenbank geschoben werden.

Sehs auch so wie wambacher, mit einem kostenlosen Server kommt man nicht weit. Allerdings sind relativ leistungsfähige virtuelle Server, bei denen man Root-Rechte hat und quasi machen kann, was man will, für um die 13 Euro im Monat zu haben.

OK also verbleiben wir schon mal dabei das ich nicht die API verwenden werde sondern mir irgendwie kleine OSM-Files laden werde (mit einem Cronjob) und den dann immer in die DB jagen werde.

Ja das mit den Polygon-Berechnungen werde ich wohl noch hinbekommen in PHP… und um ein Komprimiertes File zu entpacken wird sich wohl auch noch eine Lösung finden…

Hab ich das jetzt also richtig gelsenen, das ich mir jetzt nicht einzelne Kacheln als OSM downloaden kann, sondern lediglich z.B. NRW, Deutschland oder Europa? Weil dann wären die .osm Files ja extrem groß und würden PHP überlasten… Wobei da kann ich dann ja auch immer nur Teile davon einlesen… Lieber wäre mir aber wenn ich einfach die einzelnen Kacheln downloaden könnte… Nicht wegen meiner Spinnennetzartigen Karte sondern wegen der File-Größe…

iceWave

Edit: zum Thema Server:
nein es ist kein kostenloser, es gibt hier in der Firma mehrere PCs und probeweise soll das geanze erst mal hier laufen, das Problem dabei ist aber das wir +
a) ne endlos lahme Internet-leitung haben und da kann ich wirklich ewg auf so nen riesen File warten
b) garnicht so viel SPeicherplatz zur verfügung haben

Ok ich könnte jetzt auch irgendwie auf biegen und brechen versuchen eine OSM-Postgris DB zu erstellen aber dann muss ich dahin ja auch wieder via PHP verbinden am besten npch in irgend einer anderen Programmiersprache ne API schreiben die mir das ganze was ich will erledigt, etc…

Daher wollte ich einfach alles in MySQL machen…

Das Problem ist wie gesagt nicht die Datenverarbeitung. Das lasst mal meine Sache sien, ich denke sowieso immer sehr komliziert…

Das Problem was ich habe ist die Datenbeschaffung in kleinen Häppchen…

Aber schon einmal vielen lieben Dank für die große Hilfe von euch!

Schluss jetzt - Ich lad grad die Germany.osm von Geofabrik runter…

jetzt weiß ich also wann diese das letzte mal aktualisiert wurde… dementsprechend kann ich also dann ab diesem Zeitpunkt dnn alles mit den Planet-daily-Updates in Ordnung halten, oder? Was ist wenn ein neues Obekt erstellt wurde? ist das dann auch in den Updates drinnen oder kommt das erst wenn ich die neue Germany.osm runter lade? Rein von der logik her würd ich jetzt sagen es ist in den Updates enthalten…

So dann hab ich also endlich meine Daten und zum entpacken von gz2 werde ich schon noch ne vernünftige Klasse für PHP finden…

Also es gibt eine große OSM Datenbank. Diese Datenbank gibt es sowohl als Server (API) als Spiegel (XAPI JAPI) und als Dump (osm pbf)
Da die Daten immer mehr zunehmen, gibt es die Möglichkeiten auch nur teile aus dem Planetfile herunterzuladen. Sprich nur Europa oder nur Deutschland oder sogar nur ein einzelnen Bundesland.
Bei der Geofabrik hast du die Wahl zwischen osm.bz2 (gepackte osm Datei) PBF (neues binäres Dateiformat) oder shp (vor allem von Gis anwendung unterstütztes Format)
Wenn diese Extrakte immer noch zu groß sind, hast du die Möglichkeit daraus weitere kleine zu machen. Dafür gibt es das Universalprogramm osmosis. Das kann die Daten dann auch direkt in eine Postgis Datenbank einschleusen oder als PBF oder osm File ausgeben. Gleichzeitig kannst du damit nach bestimmten tags(keys) filtern und die Region mittels BBox oder Polygon einschränken.
Für das Aussschneiden und Filtern sowie das einlesen in Datenbanken gibt es aber auch jeweils Spezialtools, welche mitunter erheblich schneller sein können oder andere Dinge erledigen.
Der Nachteil von kleinen ausgeschnittenen Regionen ist, dass diese sich nicht wieder zusammensetzen lassen. Da die Daten an der Grenze getrennt werden und kein Verweis auf die Benachbarten Daten existiert, führt das dazu, das die Wege und andere Objekte nicht aus zwei aneinander Grenzenden Kacheln nicht wieder zu einem Objekt zusammengesetzt werden. Für das Rendern einer Karte mag dies keine Bedeutung haben, sehr wohl aber für das Routing. Daher sollte man hier sehr gut abwägen, ob und wo man schneidet.
Eine Idee wäre Beispielsweise mit einem loaklen Server ohne Zeitbeschränkung die Datenbank aufbauen und dann den SQL Dump auf den Server zu übertragen. Bzw. gleich mit anderen Tools den Import in die MYSQL Datenbank vorzunehmen und dabei nicht auf php zurückgreifen.

gib doch bitte einfach mal “postgresql php” in google ein und lese den ALLERERSTEN Treffer.

Ein wenig Grundlagenforschung sollte man schon bei so einem “Projekt” betreiben.

Ich habe 3-4 Monate und drei Anläufe gebraucht. bis ich alles zusammen hatte und kannte, was ich “zum Leben” brauchte.
Du willst hier alles vorgekaut und genau auf deine dürftige Ausgangslage zugeschnitten haben.

Und das noch bei einem kommerziellen Projekt für deine Firma!

Exkurs Plattenplatz: 2TB (zweitausend Gigabyte!) kosten zur Zeit NEU noch! 70€


zum Thema Entpacken: warum nimmst du nicht das kleinere germany.osm.pbf und als ersten Schritt osmosis? Der macht alles - vom Download, Entpacken, Aufba der DB, Downloads der Diffs und Update der Datenbank - und noch viel viel mehr.

siehe: http://wiki.openstreetmap.org/wiki/Osmosis/Detailed_Usage

ist am Anfang nicht einfach, da reinzukommen aber du hast ja erst zwei Tage von den 3 Monaten Vorbereitung verbraucht.

Ich will dich hier nicht unbedingt in eine bestimmte Richtung drängen - bei der Verwendung von Datenbanken für OSM-Projekte gibt es mehrere Ansätze - aber die ganz grobe Richtung stimmt schon.

Gruss
Walter

Wäre es vllt. Sinnvoller einen eigenen Server für die OSM-Daten aufzubauen?

Also ein unabhängiges System, welches dann meine ganzen Berechnungen macht…

Eigentlich reicht ja Nominatim aber das gibt mir ja nur Infos zum nächsten Objekt und nicht präzise die PLZ z.b.

UNd das mit den Routen… es würde reichen wenn mir irgend ein skript genau jeden node der strecke als Koordinaten zurückgibt… mehr ist das nicht…

nur um jetzt das ganze hier auf einem localhost aufzubauen, auf einem privaten Rechner habe ich ehrlich gesagt keine Resourcen noch Lust das zu tun. Soll mir hier etwa dank ner Serverüberlastung mein PC abfackeln oder was? naja ganz so extrem wärs etzt auch nicht, aber wenn die Platte voll wäre dann wär der heir extrem lahm…

Gibt es das nicht schon irgendwo, das ich nur sagen muss ich will von a über x,y zu b und der gibt mir ne Liste mit Punkten zurück?!? Aber dann wäre ich auch wieder abhängig von anderen… mist :frowning:

Notfalls belasse ich es jetzt erst einmal bei Nominatim und einer nicht ganz so genauen Fahrstreckenberechnung…

edit: was ich mir lediglich - egal wie - bauen müsste, wäre dieses Spinnennetz aus Straßen + Landes & PLZ-Grenzen. Häuser, Bushaltestellen, etc. interessieren mich ja nicht…

Es gibt schon sehr sehr viel. Aber es gibt wie im wahren Leben keine Eierlegende Wollmilchsau.
Derzeit ist es so, dass PGrouting eine andere Datenbank erfordert als osm2pgsql und diese wiederum anders ist als die für nominatim.
alle Datenbanken beruhen zwar auf den OSM Daten, manipulieren diese aber für ihre Spezielfälle
damit sie dann auch leistungsfähig sind.
Ob du mit dem Heimrechner baden gehst, weiß ich nicht. Aber ich bevorzuge den direkten Zugriff auf den Rechner anstatt das irgendwo remote zu erledigen. Vor allem wenn es um die Einrichtung des Systems geht.
Aber das ist sicher Geschmackssache.
Anleitungen für das ein oder andere gibt es genug.

WObei ich könnte mir ja auch die Postgre-Erweiterung für pHP holen und dann meine Daten (MySQL) mit der Postgre OSM-DB kombinieren, oder? also das ich z.B. meine Routen einlese und dann in der MySQL nur noch Verweise auf die Way-Ids (in der OSM-DB) lege, oder?

Dann hätte ich ein PHP-Skript was das ein oder andere nach meinen Vorlieben ausführt und das wird dann von Skript B weiter genutzt… oder?

Was ist denn eine Postgre-Erweiterung? Muss du nicht eh alle SQL Commands in PHP programieren? Die Kommandos werden einfach nur an eine andere Datenbank geschickt. Und wenn du dann eh schon Postgre auf dem Server hat spricht nur wenig dafü parallel eine MYSQL Datenbank zu pflegen. Es sei denn das CMS verlangt das explizit. Aber sonst kann man alles was man mit MYSQL anstellt auch mit Postgre machen.
Die Datentypen unterscheiden sich etwas auch einige Befehle, aber ansonsten…

ich zitiere mal aus einem meiner alten Kommentaren:

viw’s Vorschlag, gleich alles auf Postgresql umzustellen, wäre langfristiger wohl besser; ist aber nicht zwingend notwendig.
Gerade dann, wenn man erst mal kurz reinschnüffeln will.

Gruss
Walter

Wieso sollte ich denn mein CMS komplett auf Postgre umstellen? Also das CMS bleibt auf jeden Fall in MySQL, wo die OSM-DB ist ist mir inzwischen egal…

joomla? oder was selbst geschriebenes?

nur so aus reiner Neugier etwas Wissensdurst :wink:
Gruss
Walter

Ich tanze ja auch auf beiden Hochzeiten, weil jede DB ihre Vor- und Nachteile hat.

Was selbst geschriebenes… Ich bau da halt so meine kleinen Skripte rein, die möglichst viel Lerneffekt für mich bringen sollen. Daher nehme ich auch kein fertiges CMS sondern mach was eigenes…

Auch für die GPS-Auswertung gibt es was fertiges was wir auch schon seit mehreren Jahren nutzen aber das ist sooooo grottig das ich daran mal was ändern wollte.

Generell nehme ich als DB immer MySQL weil ich mich zum einen bisher mit nichts anderem befasst habe, zum anderen aber auch weil ich das mal eben mit einem localhost drauf habe 8inkl. PhpMyAdmin) und das auch auf so gut wie jedem (auch kostenlosem) host installiert ist…

Edit: Das CMS steckt übrigens noch in den Kinderschuhen…

Ich hab mir vor ein paar Wochen auch sone Postgres-DB zugelegt und mit OSM-Daten meiner Gegend gefüttert (die HowTos dazu hab ich oben schon getippt). Läuft auf einem schwächlichen vServer, der nebenbei aber noch richtige Arbeit erledigen muss… Z.B. läuft daneben noch ein MySQL, weil nur zum Spielen trenne ich mich nicht von einem DBS, mit dem ich mich halbwegs auskenne, was z.B. Backup und Replikation betrifft…

Meine Programmierkenntnisse sind eher eingerostet und meine SQL-Fähigkeiten eher begrenzt. Trotzdem hab ichs im Laufe des Abends geschafft, eine Umkreissuche nach Strassennamen und Gemeindegrenzen um den Kartenmittelpunkt hinzubekommen (PLZs muss ich erst finden…). Das ist wirklich mit fünf Zeilen PHP erledigt. Also ich würde schon auch zu Postgres/Postgis raten…

Grüße, Max

PS: Code nicht klauen, ich kann wirlich kaum programmieren und weiss kaum, was ich tu… :wink:

Also kann ich die OSM-DB dann genau so (mit anderen functions) wie eine MySQL ansteuern und dann da z.B. sagen "suche mir die Straße in der Nähe des Punktes x und gebe mir dazu alle nodes aus? Wäre ja eigentlich ne stink normale JOIN-Abfrage wo ich nur schauen muss welche Straße am nächsten ist…

Also ist das ganze eigentlich nur eine andere Form der Datenbank, die sich aber genau so ansteuern lässt?

Dann wollte ich noch wissen:
Muss ich jetzt für XAMPP Tools für Postgris nachladen oder ein extra Programm oder wie? Habe jetzt die germany.osm.pbf hier aufm Rechner und weiß jetzt nicht so wirklich weiter…

Mir fällt grad übrigens noch so ein: mit PHP lässt sich ja auch die Windows-Komandozeile ausführen, mit der ich dann wiederum auch Osmosis aufrugen kann… :slight_smile: )