osmconvert o5mfilter

Tschuldigung. :wink:

Hab in der 0.1K die Statistikfunktion ein bisschen ergänzt. Hier ein paar Beispiele…

Alle Keys inklusive Häufigkeit ausgeben (gabs schon):

o5mfilter bremen.o5m --out-key=
          3    _comment_
         18    _description_
         20    _waypoint_
        152    abandoned
       1403    access
       4914    addr:city
       3764    addr:country
         35    addr:housename
       9841    addr:housenumber
        177    addr:interpolation
(...)

Alle Keys sortiert nach Häufigkeit ausgeben (gabs schon):

o5mfilter bremen.o5m --out-count=
      26975    created_by
      26170    highway
      20154    name
      12526    building
      11665    source
       9841    addr:housenumber
       9567    addr:street
       5283    foot
       4914    addr:city
       4865    amenity
(...)

Alle Vals eines Keys inklusive Häufigkeit ausgeben (neu):

o5mfilter bremen.o5m --out-key=highway
          7    abandoned
          5    bridleway
          2    bus_guideway
       1267    bus_stop
         22    construction
        132    crossing
       2048    cycleway
          5    elevator
          1    emergency_access_point
       4735    footway
(...)

Alle Vals eines Keys sortiert nach Häufigkeit ausgeben (neu):

o5mfilter bremen.o5m --out-count=highway
       4735    footway
       4648    residential
       3778    service
       2048    cycleway
       1459    unclassified
       1267    bus_stop
       1178    path
       1141    track
        898    traffic_signals
        852    secondary
        720    tertiary
(...)

Im Prinzip nichts anderes als eine Art Offline-Tagwatch. Viel Spaß beim Spielen! :slight_smile:

Hi,

hab heut mehrmals festgestellt, dass die temporaere Datei nicht immer geloescht wird am Ende von o5mfilter, vor allem wenn der output ge-piped wird.
Konnte aber leider die genauen Bedingungen nicht ermitteln, wann dies geschieht. Evtl. ein timingproblem.

Ciao,
Frank

Hallo, ja, ist mir auch schon mal aufgefallen. Zunächst: es ist unschädlich, wenn die temporären Dateien stehen bleiben, sie werden beim nächsten Lauf wieder gelöscht. Aber es schaut natürlich doof aus und ist nicht sauber.

Gelöscht werden die Dateien in einer atexit()-Prozedur. Anscheinend wird diese Prozedur nicht aufgerufen, wenn man das Programm nicht normal beendet, sondern abbricht. Das passiert in einer Pipe offenbar automatisch, wenn die nachgelagerten Programme schneller fertig werden als o5mfilter bzw. osmconvert, wenn also nicht bis zum Ende der Pipe gelesen wird. Beispiel: das Kommando “head”.

Im Moment hab ich noch keine Idee, wie ich das ändern kann… ich werd eine Runde drüber nachdenken. :slight_smile:

EDIT:
Erledigt (Version 0.1L). Hab einen kleinen Signal-Handler reingehängt, der “SIGPIPE” abfängt, eine Meldung bringt und das Programm ordentlich beendet.
Das Signal “SIGPIPE” wird vom Programm immer dann empfangen, wenn die Output-Pipe gebrochen ist, wenn sich z.B. das nachgeschaltete Programm schon beendet hat.

Hi,

supi, funzt, danke :slight_smile:

Ciao,
Frank