OSM in Datenbank kopieren

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: )

Wäre es dann eigentlich auch sinnvoll mir eigene Kartenbilder zu rendern oder soll ich die mal lieber schön vom OSm-Server nehmen? ich meine so 1 mal die Woche neu rendern würde ja reuiichen wenn ich das auf meinem eigenen Server mache, oder?

Ja, wenn Du SQL kannst, wirst Du Dich kaum umstellen müssen von My- auf PostgreSQL. Der Witz ist halt, dass Postgres so fragen wie “liegt dieser Punkt in diesem Polygon?” korrekt beantwortet. MySQL interpretiert aus Bequemlichkeit die Frage in “liegt dieser Punkt in der bounding box dieses Polygons?” um und liefert die Antwort darauf. (zumindest ist das mein letzter Kenntnisstand, ich hab auch nur Postgres gewählt, weil alle sagen, das sei besser und ich das dann glaube…)

NEIN, es gibt gravierende interne Unterschiede, die man nicht auf SQL-Ebene sehen kann. Es geht da um Locking, Transaktionen, Rollback und ähnliche Sachen. Aus diesen und anderen Gründen, die ich jetzt nicht parat habe, hat sich OSM schon vor ewigen Zeiten gegen MYsql entschieden. Weiterhin baut osmosis direkt auf postgresql auf und kann diese DB direkt “füttern”. Dazu kommt noch die PostGIS-Unterstützung.
Vergiss bitte für ein GIS-Projekt mysql als geo-datenbank. das bringt nix.

keine Ahnung.

Du wolltest die Daten in einer DB haben, also pack sie da rein. z.b. mit osmosis.

Für deine ANWENDUNG; die irgendwann mal mit PHP auf die DB zugreift, brauchst du kein Osmosis.
Osmosis ist nur für den Import der Rohdaten und das Einspielen der Diffs notwendig. Und das macht man in ganz normalen Batch-Files, wenn es unbedingt Windows sein muss.
Schau dir mal diesen aktuellen!!! thread an, da steht viel drüber drin. Wer lesen kann, ist echt im Vorteil.

gruss
Walter

p.s. ich mache jetzt mal für einige Tage Schluss, bis ich den Eindruck durch entsprechende Fragen deinerseits bekomme, dass du dich wirklich mit der Sache auseinandergesetz hast.
Bisher glaube ich, das ich dir hier das Denken abnehme - und dazu hab ich wirklich keine Lust Zeit mehr.

XAMPP ist lediglich eine Verwaltung für viele einzelne Server. Wenn du also ein XAMPP laufen hast, brauchst du dir nur den Postgresserver laden. Am Besten in der Version 8.4 nicht in 9.0 und dazu die Erweiterung Postgis installieren. Postgis ist im Prinzip nichts anderes als die Erweiterung der DB um zusätzliche Funktionen und Datentypen. Damit hast du dann die besagten Vorteile, was die geografischen Abfragen angeht.
Solltest du eine Bibliothek in der Nähe haben, empfehle ich dir wärmstens das Buch PostgreSQL Installation, Grundlagen, Praxis
Du wirst sehen die ersten Kapitel kennst du alle schon von MYSQL. Spannend wird es wenn du zu den Kapiteln Funktionen und Prozeduren kommst. Im Prinzip kannst du die Datenbank nämlich selbst programmieren. Du bist dann nicht mehr auf Validierung in PHP angewiesen, sondern das übernimmt der in der Regel schnellere Datenbankserver für dich. Genauso wie die Konsitensprüfung der Daten.
In der letzten Zeit hat MYSQL wirklich viel aufgeholt. Es gibt mit INNODB auch dort jetzt Transaktionen. Sogar eine Geoerweiterung gibt es. Aber wie Wambacher schon sagte. OSM begann einmal mit MYSQL.
So lange wie Wambacher meint ist es auch noch nicht her, das OSM auf Postgre umgestellt hat. Noch die Version 0.29 von Osmosis hat MySQL unterstützt. Wie man hier im Artikel von 2008 lesen kann: http://goblor.de/wp/2008/09/25/howto-openstreetmap-daten-in-mysql-datenbank-importieren/
und 2009 gab es offenbar auch noch MySQL. Hier das Shema der Datenbank: http://goblor.de/wp/2009/10/16/openstreetmap-projekt-teil-1-openstreetmap-daten-in-mysql-datenbank-einlesen/

Das was Du wissen willst kannst du mit dem XAPI abfragen. OSM-Dateien sind nur XML und das kann man mit PHP sehr einfach einlesen: http://php.net/manual/de/function.simplexml-load-file.php