Fragen zu Postgis / PostgreSQL

Hallo zusammen,
da das in den Thread “Mobile Atlas Creator - Lizenz- und Policyverstöße” nicht so recht passt…

Ich habe nach der Anleitung von ajoessen http://wiki.openstreetmap.org/wiki/User:Ajoessen/Postgis Postgis und PostgreSQL installiert.
Beim Versuch kleinere Dateien wie Dusseldorf oder Münster in die Datenbank laden gabe es jeweisl gleichlautende Fehlermeldungen;
*
Reading in file: D:\Karten\osm\Geofabrik\duesseldorf.osm.bz2
Processing: Node(250k) Way(0k) Relation(0k)Entity: line 485244: parser error : error parsing attribute name
<node"“”=3l0955<7-e"“”=3zr11775=1:Z3>“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”=2g"
^
Entity: line 485244: parser error : attributes construct error
<node"“”=3l0955<7-e"“”=3zr11775=1:Z3>“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”=2g"
^
Entity: line 485244: parser error : Couldn’t find end of Start Tag node
<node"“”=3l0955<7-e"“”=3zr11775=1:Z3>“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”“”=2g"
^
D:\Karten\osm\Geofabrik\duesseldorf.osm.bz2 : failed to parse*

Sind jetzt die Dateien der Geofabrik defekt oder meine Installation nicht korrekt? Wäre schön, wenn das mal jemand verifizieren könnte.

Danke im voraus

Hallo juson,

wie sieht dann deine osm2pgsql Batch aus?

Gruß
mapfriend70

… und welche Versionen Postgres Postgis Mapnik?

EDIT: Den cache nicht zu hoch setzen, das Betriebssystem möchte auch noch seinen Teil vom RAM zum Arbeiten haben :wink:

Gruß,
ajoessen

welches schema denn? osm2pgsql zum rendern oder simple für alles andere?
in der anleitung sind ja beide aufgeführt und die werden gerne durcheinander gebracht.
gruss
Walter

ui, das ging ja schnell. Ich kann nicht ausschließen, daß ich da einen Fehler drin habe.
Mir würde schon reichen, wenn jemand bestätigt, daß die Geofabrik-Dateien i. O. sind, dann kann ich später meine Installation und Konfiguration nochmal überprüfen.
So wie oben beschrieben, sah es für mich zunächst so aus, als seien die Dateien ev. beschädigt.
Habe die Anleitung abgearbeitet und bin dann hier hängen geblieben:

  • D:\Karten\OpenStreetMap\osm2pgsql\osm2pgsql --create --database osmdb --username osmuser --prefix planet --slim --cache 2048 -S D:\Karten\OpenStreetMap\osm2pgsql\default.style --hstore D:\Karten\osm\Geofabrik\duesseldorf.osm.bz2 *

Ich habe die jeweils aktuellen Versionen von PostgreSQL und PostGis für Windows 7 32bit installiert wobei ich aber schon einen FE-Auth-Fehler bekommen habe, weil m. E. der User nach der Anleitung ein anderer sein müßte. Dann in der Zeile den osmuser gegen postgres getauscht.

Also bei mir läufts mit der aktuellen osm-Datei. Den cache habe ich allerdings halbiert
postgre 8.4.7 (nicht 9.0!)
Passwort hier das des aktuellen Benutzers oder administrators
postgis 1.5.2 (die exe, nicht die zip)
python 2.6.6
mapnik 0.7.1

Das Mapnik-Beispiel der Wiki-Seite habe ich nicht zum Laufen bekommen, eventuell passt das nicht mehr zum aktuellen Datenbankschema.
Dafür läuft das normale generate_image und _tiles, wenn extend und bbox zueinander passen.

Gruß,
ajoessen

Moin allerseits,

inzwischen habe ich es mit der berli.osm.bz2 hingekriegt. Habe vorher die ältere Version von Porstges (8.4.7) installiert.
Tatsächlich waren aber die Dateien Münster / Düsseldorf von Samstag nicht nutzbar, erst die “Berlin” vom 31.01.11 ging dann.

@ajoessen

mir ist der Abschnitt “Datenbank für osmosis “simple-Schema” anlegen” noch nicht ganz klar. (http://wiki.openstreetmap.org/wiki/User:Ajoessen/Postgis)



%ProgramFiles%\PostgreSQL\8.4\bin\psql -U postgres -d osmosisdb -f “D:\Karten\OpenStreetMap\osmosis\script\pgsql_simple_schema_0.6.sql”
%ProgramFiles%\PostgreSQL\8.4\bin\psql -U postgres -d osmosisdb -f “D:\Karten\OpenStreetMap\osmosis\script\pgsql_simple_schema_0.6_action.sql”
%ProgramFiles%\PostgreSQL\8.4\bin\psql -U postgres -d osmosisdb -f “D:\Karten\OpenStreetMap\osmosis\script\pgsql_simple_schema_0.6_bbox.sql”
%ProgramFiles%\PostgreSQL\8.4\bin\psql -U postgres -d osmosisdb -f “D:\Karten\OpenStreetMap\osmosis\script\pgsql_simple_schema_0.6_linestring.sql”
*

Hierzu muß dann vorher wohl noch irgendwas installiert werden?

Vielen Dank im voraus

Ich hatte bislang nur einmal Probleme mit einem Cloudemade-Extrakt. Möglicherweise gabs da unvollständige Wege oder Relationen. Bei der Geofabrik klappte der Import eigentlich immer.

ja, für das Kapitel brauchst du osmosis-latest.zip. Die dann in das entsprechende Verzeichnis entpacken.
Aber wenn du die Daten mit osm2pgsql schon in die Datenbank geschaufelt hast, brauchst du (zum Rendern) keine osmosis-Datenbank zusätzlich anlegen.

Gruß,
ajoessen

Streng genommen installierst du mit diesen Befehlen nichts. Es ist einfach das Ausführen von Sql Scripten die der Datenbank neue Spalten und Funktionen hinzufügen.

Aber wie ajoessen schon sagte, um eine Karte zu rendern ist so eine Datenbank nicht notwendig. Wohl aber wenn du Daten suchen möchtest.

Du musst halt die Postgis-Erweiterung nachinstallieren zum Postgresql.

Dabei werden (bei mir in C:\Programme\PostgreSQL\8.3\share\contrib\postgis-1.5) die sql-Skripte mit installiert.
Wenn Du die Pfade oben nimmst, hast Du sie von dem postgresql-Bereich geholt, oder?

Viele Grüße

Dietmar

Nö, das sind die Skripte, die bei osmosis-latest mitgeliefert werden.

Gruß,
ajoessen

Das habe ich inzwischen auch runtergeladen, funzt leider auch (noch) nicht so recht. Der Weg ist trotz Deiner Anleitung steiniger als gedacht.

Hast du denn postgis als exe oder als zip runtergeladen? Da stand bei mir bisher der flasche Link. Mit der exe wird postgis gleich in postgres eingebunden. Alternativ kann man das über den postgres Stack builder machen, habe ich selber aber nicht probiert.

Gruß,
ajoessen

Das hier “PostGIS 1.5.2 release for PostgreSQL 8.4 (inc. GEOS 3.2.2/PROJ 4.6.1 ~12Mb)” [EDIT] also die exe[ /EDIT] Das war soweit auch erfolgreich. Was nicht ging waren die osmosis Skripte. Ev. muß die osmosis.bat noch angepaßt werden?

Nö, die habe ich nicht geändert. Hast du CommandWindowHere installiert? Wenn nicht, Start/Ausführen/cmd
und in das Verzeichnis der batch-datei wechseln, und schauen, wo er meckert. Am besten teilst du vorher die batch auf: die ersten beiden Zeilen legen die osmosisdb an, die nächsten vier rufen postgis-skripte auf, danach die osmosis-skripte.

EDIT: Da du Windows7 benutzt: wird %ProgramFiles% eventuell flasch ausgewertet?

Gruß,
ajoessen

Ich habe unter Windows XP eine postgre 8.3 laufen und dann postgis 1.5 über den Postgre Stack Builder nachinstalliert.

Folgende Skripte habe ich in dieser Reihenfolge für die simdle DB laufen lassen:

c:\Programme\PostgreSQL\8.3\bin\createuser -U postgres osmuser
c:\Programme\PostgreSQL\8.3\bin\createdb -U postgres -E UTF8 -O osmuser osmdb
c:\Programme\PostgreSQL\8.3\bin\createlang -U postgres plpgsql osmdb
c:\Programme\PostgreSQL\8.3\bin\psql -U osmuser -d osmdb -f “c:\Programme\PostgreSQL\8.3\share\contrib\postgis-1.5\postgis.sql”
c:\Programme\PostgreSQL\8.3\bin\psql -U osmuser -d osmdb -f “c:\Programme\PostgreSQL\8.3\share\contrib\postgis-1.5\spatial_ref_sys.sql”
c:\Programme\PostgreSQL\8.3\bin\psql -U osmuser -d osmdb -f “c:\Programme\PostgreSQL\8.3\share\contrib_int.sql”
c:\Programme\PostgreSQL\8.3\bin\psql -U osmuser -d osmdb -f “c:\Programme\PostgreSQL\8.3\share\contrib\hstore.sql”
c:\Programme\PostgreSQL\8.3\bin\psql -U osmuser -d osmdb -f “…\script\pgsql_simple_schema_0.6.sql”
c:\Programme\PostgreSQL\8.3\bin\psql -U osmuser -d osmdb -f “…\script\pgsql_simple_schema_0.6_action.sql”
c:\Programme\PostgreSQL\8.3\bin\psql -U osmuser -d osmdb -f “…\script\pgsql_simple_schema_0.6_bbox.sql”
c:\Programme\PostgreSQL\8.3\bin\psql -U osmuser -d osmdb -f “…\script\pgsql_simple_schema_0.6_linestring.sql”

Bei meinem früheren Post hatte ich mich vertan mit den postgis-Skripten bis inkl. hstore, die bei postgis dabei sind und den simple_schema-Skripten, die natürlich bei osmosis dabei sind, wie ajoessen geschrieben hat.

Wichtig war bei mir der Übergang beim zweiten Skripte, createdb. Ab da immer mit dem speziellen User, der in diesem Schritt für die DB definiert wird, wenn Du nicht postgres als User für Deine DB nehmen willst.

Viele Grüße

Dietmar

Wobei noch wichtig wäre, dass diese Datenbank nicht mit osm2pgsql befüllt werden kann/darf, und Mapnik ohne Tuning damit nichts anfangen kann. Deshalb heisst diese Datenbank bei mir osmosisdb. Den user postgres habe ich nicht genommen, weil ich sonst eventuell überall das superuser-passwort mitschleppen müsste.

Gruß,
ajoessen

Klar, meine Angaben bezogen sich auf die simple DB, die von osmosis unterstützt wird.

Eine osm2pgsql habe ich so erstellt:

c:\Programme\PostgreSQL\8.3\bin\createuser -U postgres osm2pgsql
c:\Programme\PostgreSQL\8.3\bin\createdb -U postgres -E UTF8 -O osm2pgsql
c:\Programme\PostgreSQL\8.3\bin\createlang -U osm2pgsql plpgsql
c:\Programme\PostgreSQL\8.3\bin\psql -U osm2pgsql -d osm2pgsql -f “c:\Programme\PostgreSQL\8.3\share\contrib\hstore.sql”
c:\Programme\PostgreSQL\8.3\bin\psql -U osm2pgsql -d osm2pgsql -f “c:\Programme\PostgreSQL\8.3\share\contrib_int.sql”
c:\Programme\PostgreSQL\8.3\bin\psql -U osm2pgsql -d osm2pgsql -f “c:\Programme\PostgreSQL\8.3\share\contrib\postgis-1.5\postgis.sql”
c:\Programme\PostgreSQL\8.3\bin\psql -U osm2pgsql -d osm2pgsql -f “c:\Programme\PostgreSQL\8.3\share\contrib\postgis-1.5\spatial_ref_sys.sql”

c:\Programme\PostgreSQL\8.3\bin\psql -U osm2pgsql -d osm2pgsql
ALTER TABLE geometry_columns OWNER TO osm2pgsql;
ALTER TABLE spatial_ref_sys OWNER TO osm2pgsql;
\q

hier habe ich eine andere Reihenfolge der postgis-Skripte verwendet, das hatte ich für diese so, glaube ich, ich osm wiki gefunden.

Ich habe beide probiert. Leider sind die tags-Spalten bei der osm2pgsql nicht als hstore definiert, sondern als text. Daher waren osm Tags für mich nicht so einfach auswertbar und ich bin derzeit mit der simple db am spielen.

Viele Grüße

Dietmar

Wo ist eigentlich der Unterschied zwischen der osm2pgsql erstellten und der simple DB? Gibt es vielleicht hierzu eine Übersicht.

Gruß
mapfriend70

Wozu dienen eigentlich ‘bbox’ und ‘linestring’? Irgendwo habe ich zu Osmosis gelesen, daß man eigentlich dringend auch sie verzichten sollte, sofern man sie nicht unbedingt benötigt, da diese den Import großer Datenmengen unheimlich verlangsamen.

Kann dann die Datenbank mit Abfragen wie für die XAPI füttern und entsprechende resultate bekommen?

Christian