Neues Filterprogramm für .osm- und .o5m-Dateien: osmfilter

Sehr nützlich das, deckt doch sofort einen weiteren Unterschied (beim JOSM) auf:

$ diff tag_list_bremen_josm.txt tag_list_bremen_osm.txt
1a2

  22674   created_by

:wink:

Ciao,
Frank

Hi Marqqs

Zitat aus dem pbftoosm-Thread:

irgendwas.osm ist klar

out-keys ?
Da schreibe ich dann alle Schlüssel=Wertpaare auf?
Beispiel:

o5mfilter reitgebiet.osm --highway=bridleway --horse=yes|no|designated|official (da würde ich jetzt lieber anzeigen, daß der Wert beliebig sein kann) >tagliste.txt

Am Ende kommt dann eine *.txt heraus.
Die brauch ich nicht.
Im Composer gibt es schon einen Assistenten und Listen, die mir alle möglichen Dinge anzeigen.

Ich hätte lieber als Ausgabe eine Datei, aus der sich eine Karte erstellen läßt.

Viele Grüße
tippeltappel

Hi tippeltappel,

es soll auch Leute geben, die den (unfreien) composer nicht verwenden :wink:
Und auch keine postgis-datenbank haben.
Umd fuer die ist das tool von Markus schon toll :slight_smile:

Um zu filtern nimm “–keep”.

Ciao,
Frank

Der Download der Binary klappt derzeit bei mir nicht. ist dies korrekt?
http://m.m.i24.cc/o5mfilter.exe bringt Eror 404

Sorry, war mein Fehler. Ich hatte mitten in der Nacht die Datei osmfilter.exe (ohne 5) überschrieben, anstatt eine neue o5mfilter.exe anzulegen. Schaden ist inzwischen repariert. :slight_smile:

Gibt dafür zwei neue Optionen:
–fake-history
–fake-version
Beide sind dafür gedacht, die einmal rausgeworfene History-Information wieder einzubinden. Manche Programme bestehen drauf, obwohl sie die Infos gar nicht auswerten. JOSM zum Beispiel braucht unbedingt die Versionsnummer, sonst öffnet er eine Datei nicht. Deswegen auch die Möglichkeit, speziell die Versionsnummer zu faken: alle Objekte erhalten dann version=“1”. Damit kann man die Datei per JOSM anschauen - hochladen geht natürlich nicht, denn dazu bräuchte man die echten Versionsnummern.

Gibt es einen Vorteil der Optionen? Außer damit ich damit den Schaden “reparieren” kann. Aber wenn ich von vornherein weiß, das ich das mit Josm öffnen möchte, dann ist es doch sicher besser auf drop history zu verzichten denn der Speicherplatzvorteil geht ja dann wieder verloren oder?

Hi,

ist das jetzt ein richtiger (C99-)Fehler? (Zeile 2560)

$ gcc -std=c99 o5mfilter.c
o5mfilter.c: In function ‘write_timestamp’:
o5mfilter.c:1291: warning: implicit declaration of function ‘gmtime_r’
o5mfilter.c: In function ‘rr_ini’:
o5mfilter.c:1859: warning: implicit declaration of function ‘fchmod’
o5mfilter.c: In function ‘stw_write’:
o5mfilter.c:2407: warning: implicit declaration of function ‘stpcpy’
o5mfilter.c:2407: warning: assignment makes pointer from integer without a cast
o5mfilter.c: In function ‘str_read’:
o5mfilter.c:2560: error: subscripted value is neither array nor pointer
o5mfilter.c: In function ‘oo__strtimetosint64’:
o5mfilter.c:3315: warning: implicit declaration of function ‘timegm’
o5mfilter.c: In function ‘oo__end’:
o5mfilter.c:3721: warning: implicit declaration of function ‘putenv’
o5mfilter.c:3722: warning: implicit declaration of function ‘tzset’
$

Über den bin ich auch schon gestolpert. Es ist ein Fehler, aber meiner Vermutung nach einer in gcc - doch sicher bin ich mir nicht ganz. Der Compiler meckert, dass die mit einem Index versehene Variable weder Feld noch Zeiger ist. Es geht also entweder um str__infop->tab oder um das Funktionsergebnis.
str__infop->tab ist eindeutig ein Feld, siehe Zeile 2466.
Das Funktionsergebnis ist eindeutig ein Zeiger, siehe Linux-Hilfe “man stpcpy” oder http://www.kernel.org/doc/man-pages/online/pages/man3/stpcpy.3.html

Rätselhafte Sache… :slight_smile:

Du hast natürlich Recht, wenn du weißt, dass du die History später wieder brauchst, wärs doof, sie rauszuwerfen. :slight_smile:

Die Option ist eher für die Fälle gedacht, in denen man aus Platzgründen mit einigen Dateien ohne History-Informationen hantiert, dann aber für die Fehlersuche eine davon mal schnell mit JOSM anschauen will.

Hi,

willst Du sowas

o5mfilter bremen.osm --keep="highway=bridleway horse=" > alles_mit_Reiten_in_Bremen.osm

?

Ciao,
Frank

Oh, daß das Tool von Markus prima ist, wollte ich auch gar nicht in Frage stellen.

Meine Bemerkung “brauch ich nicht” und die Begründung warum, war nicht als Kritik gedacht.
Ich wollte nur erklären, was ich suche.

Danke für den Tipp! :slight_smile:

Gruß
tippeltappel

Ja, das geht schon in die richtige Richtung.

horse=
und dann nichts dahinter geht also, bzw. bedeutet alles einsammeln.

Das Ergebnis sind dann sämtliche Objekte, an denen dieser Schlüssel unabhängig vom Wert hängt.
Da stellt sich für mich nun die Frage, ob die anderen Schlüssel, die zu diesen Objekten gehören mit in die Ausgabedatei (z.B. Reiten.osm) geschrieben werden oder ob die bei diesem Filtervorgang verloren gehen?

Habe leider gerade keine Zeit zum Probieren.

Ja, die sind alle mit drin. Außer, du filterst sie auch mit raus, z.B. mit den Optionen --keep-tags= und --drop-tags=

Wie würde ich aus einer OSM Datei alle Straßenbahn und Buslinien ausfiltern? --keep=“route=bus route=tram” ?

Ein Fehler trat bei mir jetzt auf. Nachdem ich die Kommandozeile ausführen wollte bekam ich:
o5mfilter Error: could not open temporary file: o5mfilter_tempfile.0
Ein manuelles löschen der Datei hilft.

Interessant. Normalerweise löscht o5mfilter diese Datei sowohl beim Start als auch beim Ende selber.

Und ja, ich meine das müsste so richtig sein:

--keep="route=bus route=tram"

Oder verkürzt:

--keep="route=bus =tram"

Oder, wenn du U-Bahnen dabei haben willst, aber keine Bahnsteige:

--keep="route=bus =tram =subway" --drop="highway=platform railway=platform public_transport=platform"

Auch diesmal wieder das gleiche Spiel. die tempdatei ist noch da und das Programm verweigert seinen Dienst.

Hi,

theoretisch müsste das
route=bus
genügen. Da aber es sehr viel Kuddelmuddel beim ÖPNV-Schema gab, gibt es z. B. in Bremen die Relatiion
376492
in welcher das “route=bus” fehlt und nur noch
type=route
line=bus
vorhanden ist. Könnt mir auch noch gut vorstellen, dass
line_variants
noch “unterwegs” sind.

Ciao,
Frank

Vorteil:

  • es funktioniert technisch

Nachteile:

  • kommandozeilenbasiert (unter Windows nicht ganz einfach: WINDOWS-Taste+R drücken, cmd eingeben, mit chdir den Ordner wechseln, dann o5mfilter.exe --h (anders als in der Anleitung beschrieben) eingeben - dafür braucht man schon fortgeschrittene DOS-Kenntnisse)
  • braucht immer noch riesige, gigabytegroße Ausgangsdateien (Europe.osm hat 82 GB)
  • funktioniert noch nicht mit pbf-Dateien

(ich schreibe das jetzt einfach mal so auf)

Na,jetzt übertreibst Du aber ein bischen :wink:
Fortgeschrittene DOS-kenntnisse sind IMHO Batch-Dateien schreiben; “cmd” eintippen gehört noch nicht dazu.

Die braucht man immer, - wenn mal lokal arbeiten will und niemand anderen (den Serverbetreiber einer funktionierenden XAPI z. B. ) zur Last fallen will und grenzüberschreitene Gebiete benötigt. Hätt’ ich z. B. auch, wenn ich eine DB aufsetzen würde für die initial-Befüllung.

Meiner einer kommt z. B. mit mittefranken.osm zurecht, hat ca. 500 MB, manchmal reicht schon “Bremen” :wink:

Ciao,
Frank