Ubuntupaket für lokalen Tileserver

In einer neuen Version von osm2pgsql ist nun zum Teil die Memory Effizienz gesteigert worden, so das nun bei gleicher Cache-groesse deutlich groessere Extrakte verarbeitet werden koennen. Ausserdem wurde teile der Verarbeitung parallelisiert was die Geschwindikeit auf multi-core Prozessoren teilweise steigern sollte.

Hoffentlich funktionieren die Verbesserungen auf allen Systemen auf anhieb, aber wenn nicht kann man mit den folgenden 3 Optionen spielen: “–cache-strategy”, “–number-processes” und der cache Groesse “-C”. Ausserdem waere es hilfreich hier irgendwelche Bugmeldungen zu berichten.

Hi,

ich bin grade dabei einen Tileserver aufzusetzen … allerdings auf Debian basis … und ich steh vor einem Problem, mit dem ich nicht klar komme
wie bekomme ich ein “ppa repository” ins Debian rein ?!

hier eine kleine Hilfe: http://blog.anantshri.info/howto-add-ppa-in-debian/ (gefunden habe ich es über Google)

Die methode hab ich schonmal ausprobiert … komischerweise ging es jetzt :smiley:

danke ^^

Jetzt hängts am osm2pgsql befehl … dieser ist nicht installiert und lässt sich auch nicht einfach so installieren … wenn ich “apt-get install osm2pgsql” ausführe, bekomme ich folgende meldung:

root@osm:~# apt-get install osm2pgsql
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut       
Statusinformationen werden eingelesen... Fertig
Einige Pakete konnten nicht installiert werden. Das kann bedeuten, dass
Sie eine unmögliche Situation angefordert haben oder, wenn Sie die
Unstable-Distribution verwenden, dass einige erforderliche Pakete noch
nicht erstellt wurden oder Incoming noch nicht verlassen haben.
Die folgenden Informationen helfen Ihnen vielleicht, die Situation zu lösen:

Die folgenden Pakete haben unerfüllte Abhängigkeiten:
 osm2pgsql : Hängt ab von: libgeos-3.1.0 (>= 3.1.0) ist aber nicht installierbar
E: Beschädigte Pakete

libgeos ist allerdings schon in der version 3.2.0 installiert und durch ein neuinstallieren des paketes wurde es auch nicht besser :confused:
jemand ne ahnung wie ich da weiter vorgehen kann ?

Moin moin,

hast Du Debian 6 oder 5?

osm2pgsql hab’ ich bei mir “lokal” installiert per
dpkg -i “osm2pgsql_0.80.0-5_amd64.deb”
und die /etc/apt/sources.list
das
deb http://ppa.launchpad.net/kakrueger/openstreetmap/ubuntu natty main
wieder einkommentiert.

Jetzt muss ich zwar osm2pgsql per
LD_LIBRARY_PATH=/usr/local/lib osm2pgsql
aufrufen, aber dafür bleibt die Paketverwaltung sabuer :wink:

Ciao,
Frank

Ich benutze Debian 6
hab das jetzt auch “lokal” installiert :wink: benutzt du

deb http://ppa.launchpad.net/kakrueger/openstreetmap/ubuntu natty main

auch für debian 6 ? weil ich da lucid anstatt wie bei dir natty benutze

der befehl

LD_LIBRARY_PATH=/usr/local/lib osm2pgsql

schein bei mir auch zu funktionieren … allerdings nicht als root …da wird mir der fehler ausgegeben:

osm2pgsql SVN version 0.80.0 (32bit id space)

Connection to database failed: FATAL:  Ident-Authentifizierung f?r Benutzer >>root<< fehlgeschlagen

mit welchem benutzer muss ich das machen ?

Es ist erforderlich bei der Konfiguration des Paketes neben dem user www-data auch noch einen weiteren user (mit welchem man importiert am günstigesten den eigenen) anzugeben.
Da dies leider nicht sehr deutlich bei der Installation zu sehen ist gibts Hilfe:
http://wiki.openstreetmap.org/wiki/DE:Ubuntu_tile_server#Zugriff_verweigert_fuer_osm2pgsql
Dort ist ein Skript aufgeführt mit welchem du quasie einen beliebigen Nutzer nachinstallieren kannst.

also irgendwie fehlt hier die ganze DB-Struktur … beim ausführen des befehls bekomme ich folgende meldung:

postgres@osm:/root$ LD_LIBRARY_PATH=/usr/local/lib osm2pgsql --slim -C 1500 hamburg.osm.pbf
osm2pgsql SVN version 0.80.0 (32bit id space)

Using projection SRS 900913 (Spherical Mercator)
Setting up table: planet_osm_point
HINWEIS:  Tabelle »planet_osm_point« existiert nicht, wird übersprungen
HINWEIS:  Tabelle »planet_osm_point_tmp« existiert nicht, wird übersprungen
SELECT AddGeometryColumn('planet_osm_point', 'way', 900913, 'POINT', 2 );
 failed: FEHLER:  Funktion addgeometrycolumn(unknown, unknown, integer, unknown, integer) existiert nicht
LINE 1: SELECT AddGeometryColumn('planet_osm_point', 'way', 900913, ...
               ^
HINT:  Keine Funktion stimmt mit dem angegebenen Namen und den Argumenttypen überein. Sie müssen möglicherweise ausdrückliche Typumwandlungen hinzufügen.

Error occurred, cleaning up

selbst nach mehrmaligem ausführen von “sudo dpkg-reconfigure openstreetmap-postgis-db-setup” wird keine DB angelegt …

muss ich das alles manuell machen ?

Sieht so aus :wink:

Beim Anlegen der Postgis-Datenbank werden ein paar sql-Dateien verarbeitet. Wenn diese nicht an der angegebene Stelle sind, tuts die Datenbank natürlich nicht.

Und gemäß
http://wiki.openstreetmap.org/wiki/Mapnik#PostgreSQL.2FPostGIS

darfst du bei osm2pgsql ab version 0.80 _int.sql nicht ausführen!

EDIT: probier mal:
osm2pgsql --create --database osmdb --username osmuser --prefix planet_osm --slim --cache 1024 -S default.style --hstore D:/Karten/osm/Geofabrik/duesseldorf.osm.bz2

Gruß,
ajoessen

Das Paket openstreetmap-postgis-db-setup macht nicht viel als das script install-postgis-osm-db.sh nach /usr/bin zu kopieren und dann auszufuehren.

Da dieses Skript die Datenbank gis erst loescht und dann (ohne Daten) neu anlegt, will man das script natuerlich nicht jedes mal ausfuehren wenn man das Paket updated. Insofern habe ich ein Schutzmechanismus eingebaut, das es nur bei der Erstinstallation ausgefuehrt wird. Kann sein das das Verursacht hat das dpkg-reconfigure nun nicht mehr korrekt funktioniert.

Der Befehl

export DBNAME=gis; export GRANT_USER=‘www-data peter’; /usr/bin/install-postgis-osm-db.sh

sollte das script ausfuehren und hoffentlich die Datenbank Struktur neu anlegen so das man dann mit osm2pgsql importieren kann.

@amm

ich habe den Befehl ausgeführt und es wird diesmal auch etwas angelegt in der DB … allerdings nur die Tabellen “geometry_columns” und “spatial_ref_sys”.
Der Rest fehlt immernoch. Jetzt sind es aber auch, laut der ausgabe von der konsole, mehr tabellen die fehlen.

user@osm:~$ LD_LIBRARY_PATH=/usr/local/lib osm2pgsql --slim -C 1500 hamburg.osm.pbf
osm2pgsql SVN version 0.80.0 (32bit id space)

Using projection SRS 900913 (Spherical Mercator)
Setting up table: planet_osm_point
HINWEIS:  Tabelle »planet_osm_point« existiert nicht, wird übersprungen
HINWEIS:  Tabelle »planet_osm_point_tmp« existiert nicht, wird übersprungen
Setting up table: planet_osm_line
HINWEIS:  Tabelle »planet_osm_line« existiert nicht, wird übersprungen
HINWEIS:  Tabelle »planet_osm_line_tmp« existiert nicht, wird übersprungen
Setting up table: planet_osm_polygon
HINWEIS:  Tabelle »planet_osm_polygon« existiert nicht, wird übersprungen
HINWEIS:  Tabelle »planet_osm_polygon_tmp« existiert nicht, wird übersprungen
Setting up table: planet_osm_roads
HINWEIS:  Tabelle »planet_osm_roads« existiert nicht, wird übersprungen
HINWEIS:  Tabelle »planet_osm_roads_tmp« existiert nicht, wird übersprungen
Allocating node cache in one big chunk
Mid: pgsql, scale=100, cache=1500MB, maxblocks=192001*8192
Setting up table: planet_osm_nodes
HINWEIS:  Tabelle »planet_osm_nodes« existiert nicht, wird übersprungen
HINWEIS:  CREATE TABLE / PRIMARY KEY erstellt implizit einen Index »planet_osm_nodes_pkey« für Tabelle »planet_osm_nodes«
Setting up table: planet_osm_ways
HINWEIS:  Tabelle »planet_osm_ways« existiert nicht, wird übersprungen
HINWEIS:  CREATE TABLE / PRIMARY KEY erstellt implizit einen Index »planet_osm_ways_pkey« für Tabelle »planet_osm_ways«
Setting up table: planet_osm_rels
HINWEIS:  Tabelle »planet_osm_rels« existiert nicht, wird übersprungen
HINWEIS:  CREATE TABLE / PRIMARY KEY erstellt implizit einen Index »planet_osm_rels_pkey« für Tabelle »planet_osm_rels«

Reading in file: hamburg.osm.pbf
Unable to open hamburg.osm.pbf
Error occurred, cleaning up

Die “Hinweise” sind ok, aber wenn er hamburg.osm.pbf nicht öffnen kann ;-(

Ist die Datei an der richtigen Stelle vorhanden? Eventuell kommst du weiter, wenn du sie entpackst, und die .osm von osm2pgsql einlesen lässt.

Gruß,
ajoessen

Moin moin,

wenn Du keine libgdal (oder libprotobuf-c) unter /usr/local/lib hast, dann lass mal das
LD_LIBRARY_PATH=/usr/local/lib
einfach weg.

Bei mir sieht das ganze für Hamburg so aus:


$ osm2pgsql -s hamburg.osm.pbf 
osm2pgsql SVN version 0.80.0 (32bit id space)

Using projection SRS 900913 (Spherical Mercator)
Setting up table: planet_osm_point
HINWEIS:  Tabelle »planet_osm_point_tmp« existiert nicht, wird übersprungen
Setting up table: planet_osm_line
HINWEIS:  Tabelle »planet_osm_line_tmp« existiert nicht, wird übersprungen
Setting up table: planet_osm_polygon
HINWEIS:  Tabelle »planet_osm_polygon_tmp« existiert nicht, wird übersprungen
Setting up table: planet_osm_roads
HINWEIS:  Tabelle »planet_osm_roads_tmp« existiert nicht, wird übersprungen
Allocating node cache in one big chunk
Mid: pgsql, scale=100, cache=800MB, maxblocks=102401*8192
Setting up table: planet_osm_nodes
HINWEIS:  CREATE TABLE / PRIMARY KEY erstellt implizit einen Index »planet_osm_nodes_pkey« für Tabelle »planet_osm_nodes«
Setting up table: planet_osm_ways
HINWEIS:  CREATE TABLE / PRIMARY KEY erstellt implizit einen Index »planet_osm_ways_pkey« für Tabelle »planet_osm_ways«
Setting up table: planet_osm_rels
HINWEIS:  CREATE TABLE / PRIMARY KEY erstellt implizit einen Index »planet_osm_rels_pkey« für Tabelle »planet_osm_rels«

Reading in file: hamburg.osm.pbf
Processing: Node(1256k 27.9k/s) Way(245k 6.45k/s) Relation(4790 133.06/s)  parse time: 119s

Node stats: total(1256896), max(1478161792) in 45s
Way stats: total(245039), max(134438061) in 38s
Relation stats: total(4797), max(1806442) in 36s

Going over pending ways
processing way (173k) at 0.87k/s
Pending ways took 199s at a rate of 872.71/s

Going over pending relations

node cache: stored: 1256896(100.00%), storage efficiency: 2.16%, hit rate: 100.00%
Committing transaction for planet_osm_roads
Committing transaction for planet_osm_line
Committing transaction for planet_osm_polygon
Sorting data and creating indexes for planet_osm_line
Sorting data and creating indexes for planet_osm_polygon
Sorting data and creating indexes for planet_osm_roads
Stopping table: planet_osm_nodes
Stopped table: planet_osm_nodes
Stopping table: planet_osm_rels
Building index on table: planet_osm_rels (fastupdate=off)
Committing transaction for planet_osm_point
Sorting data and creating indexes for planet_osm_point
Stopping table: planet_osm_ways
Building index on table: planet_osm_ways (fastupdate=off)
Stopped table: planet_osm_rels
Indexes on  planet_osm_roads created  in 19s
Completed planet_osm_roads
Indexes on  planet_osm_point created  in 44s
Completed planet_osm_point
Indexes on  planet_osm_line created  in 58s
Completed planet_osm_line
Indexes on  planet_osm_polygon created  in 97s
Completed planet_osm_polygon
Stopped table: planet_osm_ways

Osm2pgsql took 424s overall
$

Ciao,
Frank

EDIT:
Wenn die libprotobuf-c nicht gefunden würde (unter z. B. /usr/local/lib) wäre die Fehlermeldung:


Reading in file: hamburg.osm.pbf
error parsing member type of BlockHeader
Error unpacking BlockHeader message
Error occurred, cleaning up

So hat es funktioniert … also habe jetzt die datei entpackt und eingelesen mit osm2pgsql! die fehlenden Tabellen wurden angelegt :slight_smile: die DB ist jetzt 313MB groß… ist das normal ? ich meine im vergleich, als ich die karte mit osmosis eingelesen habe war die 1,x GB groß …
über die datei “slippymap.html” bekomme ich leider noch nichts angezeigt, bzw nur eine weiße fläche, wenn ich beim Base Layer “local Tiles” ausgewählt habe und unter http://localhost/osm/0/0/0.png bekomm ich nur ein “NOT FOUND” error. Den Renderer job habe ich auch neugestartet aber der tiles ordner ist noch leer.

Hat der Renderjob keinen fehler gemeldet?

Gruß,
ajoessen

Die Slippymap steht standardmäßig irgendwo ziemlich weit im Süden von Deutschland, wenn es nicht sogar die Schweiz ist. am besten stellst du mal auf Layer Mapnik um und schaust wo du bist. Dann kannst du deine Position korrigieren und nochmal auf deinen Layer zurückschalten.

Sollte es dann nicht klappen, liegt es wahrscheinlich am Rendereing. Hier könnten zum Beispiel die Küstenlinien fehlen? Hast du auch den User www-data für die DB? Immerhin läuft der rendering job unter diesem Account.

Nein er hat keinen fehler gemeldet →

Restarting Mapnik rendering daemon: renderd.

das war die einzige Ausgabe … das ging auch alles recht schnell …

Soll es ja auch. Wirklich gearbeitet wird ja erst auf anforderung. Aber wenn das Tile 0/0/0 nicht da ist, lässt das vermuten, dass entweder der Server nicht rennt und die Anforderung weitergibt oder das Mapnik die Küstenlinien nicht zur Hand hat, denn das zeichnet er bei mir in das Tile rein. auch wenn ich nur Berlin oder ein andere Bundesland nehme.

die Position habe ich schon mit korrigiert (in der HTML datei :wink: ) … da wird mir trotzdem nichts angezeigt :confused:
der User www-data existiert in der DB. hab dem eben nochmal superuser rechte gegeben und den rendering job neugestartet, was aber keine änderung gebracht hat.