Overpass API / OSM3S - Problem mit dispatcher

Hallo liebe Community,

ich versuche seit ein paar Wochen einen eigenen Server mit OSM-Daten aufzusetzten.
Ich brauche letzten Endes eine API an die ich Koordinaten von einem Areal schicken kann und die entsprechenden Daten dann als XML zurück-kriege…

Nach einigen Misserfolgen selbst so eine DB mit postgresql und osmosis aufzusetzen bin ich auf “Overpass API” gestossen, welches mir für meine Zwecke das richtige Projekt zu sein scheint… ich hoffe bis hierhin seid ihr mit meinen Ausführungen einverstanden, sonst bitte sagen :expressionless:

(es könnte ja sein das postgrsql und osmosis doch die richtige Wahl wäre? Ich muss als Endziel SVG rendern)

Nun bin ich aber bei der Installation von “Overpass API” auf ein Problem gestossen.

Ich habe mich im grossen und ganzen an diese Anleitung gehalten: http://www.overpass-api.de/no_frills.html und http://www.overpass-api.de/full_installation.html sowie ein paar Blicke in http://wiki.openstreetmap.org/wiki/OSM3S/install

Nun hat alles geklappt. Statt der ganzen Welt habe ich aber nur DE importiert, das Erbenis sieht so aus:


boris@host:~/OverpassAPI$ ls -lh osm-3s_v0.6.98/db/
total 15G
-rw-r--r-- 1 borisd borisd 1,4G 2012-07-09 14:49 nodes.bin
-rw-r--r-- 1 borisd borisd  23K 2012-07-09 14:50 nodes.bin.idx
-rw-r--r-- 1 borisd borisd 6,7G 2012-07-09 14:46 nodes.map
-rw-r--r-- 1 borisd borisd 109K 2012-07-09 15:10 nodes.map.idx
-rw-r--r-- 1 borisd borisd 3,5G 2012-07-09 14:50 nodes_meta.bin
-rw-r--r-- 1 borisd borisd  61K 2012-07-09 14:50 nodes_meta.bin.idx
-rw-r--r-- 1 borisd borisd 148M 2012-07-09 14:50 node_tags_global.bin
-rw-r--r-- 1 borisd borisd 1,8K 2012-07-09 14:50 node_tags_global.bin.idx
-rw-r--r-- 1 borisd borisd 199M 2012-07-09 14:49 node_tags_local.bin
-rw-r--r-- 1 borisd borisd  12K 2012-07-09 14:50 node_tags_local.bin.idx
-rw------- 1 borisd borisd  324 2012-07-09 17:10 nohup.out
-rw-rw-rw- 1 borisd borisd    1 2012-07-09 14:25 osm_base_version
-rw-r--r-- 1 borisd borisd 1,0M 2012-07-09 15:10 relation_roles.bin
-rw-r--r-- 1 borisd borisd   12 2012-07-09 15:10 relation_roles.bin.idx
-rw-r--r-- 1 borisd borisd 104M 2012-07-09 15:10 relations.bin
-rw-r--r-- 1 borisd borisd  828 2012-07-09 15:10 relations.bin.idx
-rw-r--r-- 1 borisd borisd 9,0M 2012-07-09 15:10 relations.map
-rw-r--r-- 1 borisd borisd  140 2012-07-09 15:10 relations.map.idx
-rw-r--r-- 1 borisd borisd  14M 2012-07-09 15:10 relations_meta.bin
-rw-r--r-- 1 borisd borisd  216 2012-07-09 15:10 relations_meta.bin.idx
-rw-r--r-- 1 borisd borisd  30M 2012-07-09 15:10 relation_tags_global.bin
-rw-r--r-- 1 borisd borisd  367 2012-07-09 15:10 relation_tags_global.bin.idx
-rw-r--r-- 1 borisd borisd  42M 2012-07-09 15:10 relation_tags_local.bin
-rw-r--r-- 1 borisd borisd 2,3K 2012-07-09 15:10 relation_tags_local.bin.idx
-rw-rw-rw- 1 root   root   1,4K 2012-07-09 17:20 transactions.log
-rw-r--r-- 1 borisd borisd 2,0M 2012-07-09 15:10 user_data.bin
-rw-r--r-- 1 borisd borisd   24 2012-07-09 15:10 user_data.bin.idx
-rw-r--r-- 1 borisd borisd 9,0M 2012-07-09 15:10 user_indices.bin
-rw-r--r-- 1 borisd borisd  108 2012-07-09 15:10 user_indices.bin.idx
-rw-r--r-- 1 borisd borisd 927M 2012-07-09 15:08 ways.bin
-rw-r--r-- 1 borisd borisd  18K 2012-07-09 15:09 ways.bin.idx
-rw-r--r-- 1 borisd borisd 648M 2012-07-09 15:05 ways.map
-rw-r--r-- 1 borisd borisd  11K 2012-07-09 15:10 ways.map.idx
-rw-r--r-- 1 borisd borisd 458M 2012-07-09 15:09 ways_meta.bin
-rw-r--r-- 1 borisd borisd 8,5K 2012-07-09 15:09 ways_meta.bin.idx
-rw-r--r-- 1 borisd borisd 276M 2012-07-09 15:09 way_tags_global.bin
-rw-r--r-- 1 borisd borisd 3,2K 2012-07-09 15:09 way_tags_global.bin.idx
-rw-r--r-- 1 borisd borisd 366M 2012-07-09 15:08 way_tags_local.bin
-rw-r--r-- 1 borisd borisd  19K 2012-07-09 15:09 way_tags_local.bin.idx

Das passiert wenn ich den Dispatcher starten möchte:


boris@host:~/OverpassAPI/osm-3s_v0.6.98/build$ ../bin/dispatcher --osm-base --meta --db-dir="../db/"
File_Error 38 /osm3s_v0.6.98_osm_base Dispatcher_Server::1

Diese Meldung kriege ich auch über das Web-API mit Apache.
Der Aufruf:

http://SERVER/api/interpreter?data=%3Cprint%20mode=%22body%22/%3E

ergibt:

Error: runtime error: open64: 38 /osm3s_v0.6.98_osm_base Dispatcher_Client::1 

Der Fehler ist hier dokumentiert, aber es gibt keine Lösung dazu: http://wiki.openstreetmap.org/wiki/OSM3S/install#runtime_error:_open64:2.2Fosm3s_v0.6.91_osm_base_Dispatcher_Client

Kann hier irgend jemand weiterhelfen?
Danke

Einen Server-Restart und das löschen des etwaigen lock-files hast du versucht? Oder trifft das bei dir nicht zu?

Auf welchem Betriebssystem soll der Server laufen?

Error 38 ist laut meiner errno.h in /usr/include/asm-generic/ der Fehler ENOSYS, was hieße, dass das Betriebssystem kein Shared Memory im POSIX-Stil kennt. Das wird dann einige Anpassungen erfordern.

Ein schneller Workaround wäre, wenn es reicht, die Daten lokal weiterzuverarbeiten, an …/bin/osm-3s_query den Parameter --db-dir=/home/NAME/OverpassAPI/osm-3s_v0.6.98/db/ anzuhängen.

Hi Boris,

ich finde, du hast zu früh kapituliert. postgresql & osmosis aufzusetzen, ist nicht die grosse Kunst - das haben hier schon viele gemacht. Die Overpass-Api mag die Aufgabe für dich auch gut erledigen, allerdings ist der Support der Serverinstallation (nicht der Benutzung!) hier ziemlich schwach, da das hier noch fast keiner gemacht hat.

Ich würde an deiner Stelle zweigleisig fahren und mich erst entscheiden, wenn die Basissoftware auch wirklich läuft.
Eventuell schilderst du mal deinen “alten Probleme”.

Gruss
walter

Hallo,

vielen Dank für die schnellen Antworten!

@tunnelbauer
Ich habe mal so ein Lockfile gelöscht… aber es hat in dem Moment nichts gebracht.

@Roland Olbricht
Ubuntu Lucid 10.04 LTS als virtueller Server bei hosteurope.de

@wambacher
Vielen Dank für den Hinweis. Es ist als Einsteiger nicht gerade einfach das richtige Setup zu finden wo es sich dann lohnt die volle Energie reinzuinvestieren :slight_smile:
Im osm-Wiki tummelt es einfach nur so von Lösungsmöglichkeiten…

Na gut… ich werde mich nochmals an Postgre und Osmosis machen und versuchen meine Probleme dort zu formulieren. Ich würde dafür dann aber einen neuen Thread machen.
Gut zu wissen das es hier Leute gibt mit Erfahrung zu dem Thema. Pfuh… Schwein gehabt :slight_smile:

Ach ja… wenn irgend jemand gerade ein Howto kennt das Up-To-Date und empfehlenswert ist, bin ich dankbar um Hinweise… es existieren einfach zu viele schlecht gepflegte Howtos auf diesem Gebiet und die Software scheint sich recht schnell weiterzuentwickeln. Was ja eigentlich gut ist… ausser für Einsteiger.

Es gibt im Datenbankverzeichnis die Datei osm3s_v0.6.98_osm_base. Diese löschen. Soweit ich das verstanden habe, ist das Gegenstück dazu in /dev/shm/. Wenn dort auch eine gleichlautende Datei ist, diese auch löschen. Dann noch mal versuchen den dispatcher zu starten. So hats bei mir geklappt.

Die Apache-Anbindung hat bei mir zuerst auch nicht ganz geklappt. Der dispatcher lief zwar richtig und die Verzeichnisse waren richtig zugewiesen aber trotzdem gab es einen Fehler:

runtime error: open64: 13 /home/osm/osm-3s_v0.6.98/db//osm3s_v0.6.98_osm-base Dispatcher_Client::3

Irgendwie lag das an die Verzeichnisberechtigungen. Ich habe zwar wie in der Anleitung beschrieben den kompletten Pfad auf 755 gesetzt, aber funktioniert hat das nicht. Mit der großen Keule


sudo chmod 777 -R /home/osm/osm3s_v0.6.98

klappt dann aber auch der Webabruf.

Christian

Existiert auf dem Rechner /dev/shm/ (oder /run/shm/)? Wenn nein, muss dieses explizit gemountet werden:
Trage dazu

none /run/shm tmpfs rw,nosuid,nodev 0 0

in /etc/mtab ein. Danach muss /run/shm noch gemountet oder der Rechner rebootet werden.

Sorry dass das ein wenig gedauert hat. Es handelt sich um einen Fehler, den ich nicht reproduzieren kann (unter Ubuntu 12.04 oder 08.04), so dass ich noch im Nebel stochere.

Viele Grüße,
Roland