Grenzen aus osmfilter

Hi Achim,

hier nochmals Zahlen von meinem kleinen netbook (1 GB RAM, 64 Bit, Debian 6):

time osmfilter --drop-ways --drop-relations baden-wuerttemberg.osm > baden-wuerttemberg_nodes.osm
Speicherzugriffsfehler

real 0m3.233s
user 0m0.000s
sys 0m0.600s

Oopsi :slight_smile:

time osmconvert --drop-ways --drop-relations baden-wuerttemberg.osm > baden-wuerttemberg_nodes.osm

real 4m33.827s
user 2m10.724s
sys 0m19.701s

2,3G baden-wuerttemberg.osm
1,6G baden-wuerttemberg_nodes.osm

Ciao,
Frank

EDIT:
time osmfilter32 --drop-ways --drop-relations baden-wuerttemberg.osm > baden-wuerttemberg_nodes.osm

real 5m16.819s
user 2m39.970s
sys 0m18.329s

Böses, böses 64 Bit :wink:

So, hab mir per
gcc -m32 -o osmfilter32 osmfilter.c
'ne 32Bit-Variane selbst erzeugt, gleicher Fehler :frowning:
Liegt wohl nicht am 64 Bit, eher am Debian ↔ Ubuntu Unterschied.

Witzigerweise funktioniert ein “osmconvert32” aus “gcc -m32 osmconvert.c -o osmconvert32 -lz”.

Ciao,
Frank

Zu den ganzen Benchmarks wäre vielleicht das hier interessant: https://days2011.scala-lang.org/sites/days2011/files/ws3-1-Hundt.pdf
Insbesondere der teil mit der Optimierung des 32 Bit Java. Vielleicht ließe sich so ja auch Osmosis noch etwas kitzeln.

Schön, nur darf man nicht vergessen, dass aufgrund der Datenmenge man gewaltigen I/O hat.
Meine (verschlüsselte) Festplatte braucht schon für das Anlegen einer “leeren” 1,6 GB Datei mehr als eine Minute,

time dd if=/dev/zero of=blub bs=M count=1600
1600+0 Datensätze ein
1600+0 Datensätze aus
1677721600 Bytes (1,7 GB) kopiert, 67,2015 s, 25,0 MB/s

real 1m10.118s
user 0m0.012s
sys 0m14.729s

und “zuvor” wollen die 2,3 GB erst mal eingelesen sein.

Ciao,
Frank

Hallo Frank,
Weißt du, wo der Fehler aufgetreten ist? Kannst du eventuell mal mit dem Debugger schauen? Falls du keinen grafischen installiert hast, kann ich “nemiver” ganz besonders empfehlen.

Was mir noch eingefallen ist, vielleicht gibts immer noch Probleme mit der 4-GB-Grenze… Magst du mal eine Änderung versuchen?

Von:

#if __WIN32__
  #define NL "\r\n"  // use CR/LF as new-line sequence
  #define off_t off64_t
  #define lseek lseek64
#else
  #define NL "\n"  // use LF as new-line sequence
  #define O_BINARY 0
#endif

nach:

#define off_t off64_t
#define lseek lseek64
#if __WIN32__
  #define NL "\r\n"  // use CR/LF as new-line sequence
#else
  #define NL "\n"  // use LF as new-line sequence
  #define O_BINARY 0
#endif

Hallo Markus,

ulimit -c unlimited

gcc osmfilter.c -o osmfilter_debug -g -m32

./osmfilter_debug --drop-ways --drop-relations baden-wuerttemberg.osm > baden-wuerttemberg_nodes.osm

Speicherzugriffsfehler (Speicherabzug geschrieben)

gdb osmfilter_debug core
Reading symbols from /home/user/tmp/osmfilter_debug...done.

warning: Can’t read pathname for load map: Eingabe-/Ausgabefehler.
Reading symbols from /lib32/libc.so.6…(no debugging symbols found)…done.
Loaded symbols for /lib32/libc.so.6
Reading symbols from /lib/ld-linux.so.2…(no debugging symbols found)…done.
Loaded symbols for /lib/ld-linux.so.2
Core was generated by `./osmfilter_debug --drop-ways --drop-relations baden-wuerttemberg.osm’.
Program terminated with signal 11, Segmentation fault.
#0 0x08050ad7 in oo__findbb () at osmfilter.c:4000
4000 c= *bufsp;
(gdb) bt
#0 0x08050ad7 in oo__findbb () at osmfilter.c:4000
#1 0x080514ce in oo_main () at osmfilter.c:4340
#2 0x08054402 in main (argc=0, argv=0xffe26250) at osmfilter.c:5180
(gdb)

Ciao,
Frank

Sorry, mein Fehler.
Ich hatte die Erkennung für Bounding Boxes verbessert und einen Fehler eingebaut. :frowning: Korrigiert in Version 1.0C.

Danke fürs aufspüren! :slight_smile:

Hallo Markus,

prima, osmfilter wie auch osmfilter32 funzen jetzt auch unter Debian :slight_smile:

Danke fürs fixen.

Ciao,
Frank

Hallo
Ich hab das neuste osmosis unter Ubuntu 11.10
Das hier geht nicht ?

osmosis germany.osm.pbf --keep=“boundary=administrative” >grenzen.osm

Es sollen alle admin level drin sein bis 12 ?

ich möchte selbst eine aktuelle Datei mit bounds erstellen um sie dann ich mkgmap zu nutzen?
Ich hoffe ich bin hier richtig

Der andere Befehl
marko@marko-desktop:~/Dokumente/osmosis$ osmconvert germany.osm.pbf --out-o5m >germany.o5m
osmconvert: Befehl nicht gefunden.
marko@marko-desktop:~/Dokumente/osmosis$

Da geht auch was nicht ?
Beste Grüße

Hast du es denn mal mit dem hier besprochenen Programm osmfilter versucht? Deine Befehlszeilen sind ja allesamt für osmosis oder osmconvert. Wobei das Programm osmconvert im Verzeichnis von Osmosis sicher nicht bekannt ist wie die Fehlermeldung auch zeigt.

Falls es Dich interessiert. Hier steht wie ich es mache und wenn Du es nicht unbedingt selbst filtern willst, kannst Du Dir die aktuellen Bounds wöchentlich runterladen
http://mkgmap.osm4people.org/

Klar geht das nicht:
osmfilter&osmconvert sind eigenständige (C-)Programme und haben mit dem (java-)osmosis nüchts zu tun.
Ausser den ersten 3 Buchstaben :wink:

http://www.navmaps.eu/index.php/developers/bound

wäre auch eine Quelle für bounds :wink:

Hallo
Danke für die Infos
die von Navmaps habe ich vom 21 Januar
Das sind ca. 2 GB groß

Ich lad mal die 225 MB ich denke mal Deutschland.

Ich dachte das das hier für osmosis war ?

Was bräuchte ich denn?
Mit der osmconvert Linux 32 bib kann ich nichts anfangen ( wählen sie eine Anwendung aus ? )

Gibt es wo eine Seite wo man das nachlesen kann wie die europa bound erstellt werden ( halbwegs verständlich )
ich würde das gerne für meine LKW Karte selbst machen wollen.
Beste Grüße

http://wiki.openstreetmap.org/wiki/Mkgmap/help/options#Using_precompiled_bounds_for_the_address_index

Ich versteh nur nicht, warum du dir die Arbeit machen möchtest…die fertige Datei (world) hat 275mb

Hallo
Ja dann werd ich wohl warten bist die mal erneuert wird
Beste Grüße

Müsste bald kommen. Habe gestern für den Betreiber von Navmaps noch die Grenze von Bosnien repariert. Das ist dann heute in dem Extrakt

Hallo
Deine Grenzen sind Europa. bis zu welchen admin Level gehen die ?
Ich teste heute mal Deine.

Ich mache gerade routable Karten für die LKW.
Ich möchte noch D-DK usw. da bin ich grad dabei.
Beste Grüße

Ich filtere kein Admin-Level raus.


/usr/local/bin/osmfilter64 europe.o5m --keep-nodes= --keep-ways-relations="boundary=administrative =postal_code postal_code="  >europe-boundaries.osm

Es müssten also alle drin sein. Wie weit runter mkgmap beim Auswerten geht, weiß ich nicht. Morgen oder übermorgen gibts neue…nur falls Du warten willst.