Wegelängen (highway=...) in DE

Vielleicht interessiert es jemand oder es mag sich einer um die Bugs kümmern. In Metern aufsteigend.


germany    enter    4
germany    ex-path    5
germany    footway_gone    5
germany    stop    7
germany    Access_Ramp    9
germany    traboule    12
germany    weighing_machine    13
germany    cicleway    14
germany    cyclelane    15
germany    tram    16
germany    footway;steps    17
germany    steps_deactivate    18
germany    ser#    20
germany    not exist    21
germany    gate    23
germany    footway; cycleway    27
germany    footway_deactivate    27
germany    no_highway    29
germany    Fußweg    32
germany    virtual_connection    32
germany    virtual    35
germany    stairs    38
germany    tunnel    38
germany    sideway    42
germany    service;residential    43
germany    conveyor    46
germany    bridge    48
germany    animal_pass    50
germany    service road    53
germany    toll_bridge    56
germany    bus_lane    58
germany    slope    58
germany    cycleway;residential    62
germany    par    65
germany    service:no    65
germany    pontoon    69
germany    closed    70
germany    footway; steps    70
germany    f    71
germany    res    76
germany    Sandstraße    76
germany    path=grade 4    80
germany    y    82
germany    missing    83
germany    access_ramp    86
germany    drive-through    101
germany    grade3    105
germany    Weikersdorfer Weg    115
germany    old    116
germany    Privatstraße    118
germany    noexit    120
germany    city_wall    122
germany    former_track    122
germany    area:<unterschiedlich>    125
germany    track; disused    125
germany    not existant    128
germany    incline    132
germany    residental    134
germany    residential;service    134
germany    Hinterer Spielbach    141
germany    residential;road    167
germany    hallway    168
germany    sou    171
germany    Altmarkt    172
germany    animal_trail    175
germany    path;residential    178
germany    forestry    179
germany    private way    182
germany    escalator    200
germany    snoboard    201
germany    emergency_bay    224
germany    street_lamp    226
germany    ground    232
germany    undefined    234
germany    residential; tertiary    237
germany    paved    240
germany    no_path    245
germany    footway; footway; path; track    246
germany    footway/bikeway    256
germany    service; residential    273
germany    ind    290
germany    deconstruction    292
germany    track; residential; track    296
germany    footway;service    298
germany    tr#    312
germany    quartary    314
germany    abandonned    326
germany    *    331
germany    escape_lane    346
germany    t    348
germany    minor    352
germany    track;service    353
germany    grade1    366
germany    almost_path    373
germany    nothing    404
germany    service; track    406
germany    cycleway;footway    423
germany    not_really_a_path    490
germany    bridleway, track    510
germany    abendoned    522
germany    service;unclassified    538
germany    traffic_signals    538
germany    residential;residential;unclassified    547
germany    elevator    553
germany    fix me    569
germany    compacted    583
germany    private    598
germany    ramp    601
germany    generic path    683
germany    service;steps    695
germany    parking_aisle    743
germany    path-disused    761
germany    FIXME    773
germany    agriculture    801
germany    access    807
germany    yes    811
germany    itr    819
germany    forest_clearing    828
germany    footway; path    837
germany    passing_place    841
germany    path;road    848
germany    tracktype    858
germany    track; footway    933
germany    tra#    961
germany    pre-proposed    982
germany    footway;path    999
germany    residential;tertiary    1004
germany    cycleway;track    1010
germany    grade5    1048
germany    unused    1120
germany    track; unclassified    1128
germany    byway    1164
germany    unknown    1194
germany    driveway    1197
germany    path;track;path;track;track;track    1236
germany    incline_steep    1341
germany    not_existing_track    1351
germany    ford    1447
germany    racetrack    1460
germany    crossing    1465
germany    footway; track    1563
germany    hollow_way    1599
germany    cycleway;service    1642
germany    track; footway; track    1836
germany    track and path    1872
germany    footway; track; track    1968
germany    none    1992
germany    secondary;tertiary    2173
germany    fixme    2200
germany    residential; service    2233
germany    via_ferrata    2246
germany    razed    2364
germany    track; service    2486
germany    planned    2555
germany    trail    2834
germany    footway;track    2879
germany    track; path    2960
germany    lane    3019
germany    footpath    3058
germany    emergency_access_point    3767
germany    path; track    3795
germany    disused_track    4496
germany    bus_guideway    5897
germany    road;track    6421
germany    proposed;secondary    6436
germany    residential;unclassified    6870
germany    bus_stop    7215
germany    residential; track    7685
germany    residential;track    9539
germany    disused    10331
germany    unsurfaced    11255
germany    turning_circle    11504
germany    service;track    11575
germany    path;track    12564
germany    track;unclassified    12632
germany    abandoned    23195
germany    no    29861
germany    rest_area    46175
germany    services    50166
germany    centre_line    53175
germany    tertiary_link    61996
germany    preproposed    68836
germany    platform    132408
germany    secondary_link    258650
germany    raceway    281279
germany    primary_link    1272511
germany    trunk_link    1652791
germany    steps    1729337
germany    construction    2040246
germany    proposed    2158379
germany    bridleway    2192974
germany    pedestrian    3290662
germany    motorway_link    5579956
germany    trunk    6104534
germany    road    8641068
germany    living_street    10151177
germany    motorway    25607886
germany    cycleway    35218279
germany    primary    40485763
germany    footway    64451116
germany    service    83693344
germany    secondary    99161451
germany    path    100664069
germany    tertiary    100839401
germany    unclassified    131071485
germany    residential    292700729
germany    track    704508013
germany    TOTAL    1724448305

Hallo Thomas

Was willst du uns damit sagen?
Statistik oder Bug Report?

Edbert (EvanE)

ich denke es geht um Schreibfehler und Statistik.
Und neuen Trends, so gibt es jetzt neben proposed noch pre-proposed (mit und ohne Strich).
Chris

Prima, dann trage ich hier demnächst auch ein paar highway=dreamed_of_by_local_politicians bzw. highway=wanted_by_city_council_but_opposed_by_neighbouring_city usw. ein. Natürlich mit wanted_by_city_council_but_opposed_by_neighbouring_city=motorway_link etc.

Na wenigstens tauchen die dann nicht in der Mapnik-Karte auf :wink:

Gruß,
ajoessen

ich versuche eine von !i! gewünschte Seite mit OSM Stats zu erstellen, also Wegelängen über die Zeit pro Land. Ohne Hilfe wird das mangels Programmierkenntnissen wohl ein ziemliches Gefummel…aber schauen wir mal.
Die Stats oben fand ich persönlich interessant…nur mal so zum anschauen… und wenn man will, kann man ja mit dem Tool seiner Wahl filtern und die Fehler beheben.
Interessant ist auch die Geschwindigkeit bzw der extreme Unterschied.

germany.osm.pbf mit osmosis in xml wandeln und in /dev/null schreiben, dauert:
real 15m15.705s
user 15m34.858s
sys 0m5.300s

etwas ähnliches mal mit osmconvert
real 9m7.306s
user 8m57.678s
sys 0m13.905s

Die komplette Berechnung mit dem osmium Framework
real 3m31.396s
user 3m29.937s
sys 0m1.448s

Das klingt spannend. Hast du mit allen drei Programmen das gleiche gemacht? Welches Betriebssystem war im Einsatz? Wie waren die Aufrufe? Hast du irgendwas selbst kompiliert?
Fürs erste sieht es nach Linux aus.

nette Sachen dabei:
highway=path;track;path;track;track;track
highway=not exist
highway=weighing_machine
highway=not_really_a_path
:wink:

Ach so, also Statistik mit dem Nebeneffekt, dass man ungewöhnliche Werte sehen/finden kann.
Wer will kann die dann gezielt suchen und beheben, soweit das ohne Ortskenntnis (z.B. Tippfehler) oder mit Luftbild möglich ist.

PS: Danke, dass die Special Request Regions neu gerechnet wurden.

Edbert (EvanE)

Selber kompiliert ist osmium, das gibts nicht fertig. Aber mehr als make eintippen, muss man ja nicht :slight_smile:

BS
Linux suncobalt 2.6.32-5-amd64 #1 SMP Tue Jun 14 09:42:28 UTC 2011 x86_64 GNU/Linux

osmosis Aufruf
osmosis --read-pbf file=/home/wicking/osm/germany.osm.pbf --write-xml file=/dev/null

osmconvert (da hab ich auf die schnelle nicht direkt in /dev/null schreiben könnten)
./osmconvert32 /home/wicking/osm/germany.osm.pbf --out-osm | gzip -1 >/dev/null

osmium, das oben war eine echte Berechnung (die Weglängen)
~/osmium/examples/osmium_road_length ~/osmlength/pbffiles/germany.osm.pbf

eine Konvertierung dauert länger (kann auch an den unterschiedlichen HDDs liegen). Wenns wichtig ist, kann ich das mal komplett gleich durchlaufen lassen

@Edbert
Das Aktualisieren hat Wicking gemacht. Ist mir gar nicht aufgefallen :slight_smile:

Ich reserviere mir für heute abend mal folgende Korrekturen:
residental->residential (Hier kann ich nur eine Relation in Russland finden?)
cicleway->cycleway DONE
Fußweg->footway (overpass API kommt mit Umlaut nicht zurecht?)
grade5->track+tracktype=grade5 DONE
grade3->track+tracktype=grade3 DONE
grade1->track+tracktype=grade1 DONE
abendoned->abandoned DONE

Nein wichtig ist es nicht. Für mich ist nur interressant ob ein Programm schneller bestimmte Aufgaben erledigen kann als andere. Und da osmconvert von seinem Autor auf Schnelligkeit getrimmt wurde, hat mich das Ergebnis sehr verwundert. Bei mir dauert ein Umwandeln von europa mit osmconvert nach o5m knapp 6 Minuten.
Ein Umwandeln in XML ist aber sehr viel zeitaufwendiger. Weil viel mehr Daten erzeugt werden müssen.

Naja, von einem Vergleich kann man da nicht wirklich sprechen:

  • Osmium (ist natürlich auch von Haus aus flott) wurde auf deinem PC für 64 Bit übersetzt und ist deswegen auf diesen optimiert.

  • Von osmconvert nimmst du eine nicht optimierte Version. Noch dazu nimmst du die 32-Bit-version und lässt sie auf einem 64-Bit-System laufen. Weiter hängst du hinten einen Packer an, der für den Müll packt und nochmal einiges an Zeit frisst.

  • Im Fall von Osmosis und osmconvert erzeugst du (für den Mülleimer) zig GB große XML-Dateien während du bei Osmium praktisch nur liest und zählst.

P.S.:
Eigentlich gings hier um die Wegestatistik, deswegen dazu auch kurz ein Satz. :slight_smile:
Ich find sie sehr interessant! Es ist auch ein typisches Beispiel dafür, wofür sich Osmium sehr gut eignet, weil man dort bausteinartig selbst Analysetools basteln kann.

So direkt vergleichbar ist das zwischen osmconvert und osmium nicht!
Die 64 Bit-Version von osmconvert ist etwa doppelt so schnell und dann wird das noch an gzip weitergereicht war ja auch Zeit frist!

Mir persönlich sind solche Zeitbereiche fast egal ob 5 min oder 10 min.
Was anders ist wenn osmsis 1,5 - 3h an einem Ausschnitt der europe rumrödelt und noch nicht mal pipe was bringt das mehere Auschnitt geleichzeitig fertig werden sollen (jedenfalls auf meinem Win7 ! - soll angeblich nur 30% länger dafür viele Auschnitte - nö 4 mal solang und immer noch net fertig!=abbruch)

Genau daran liegts. Ich hab grad mal selber getestet - bin ja neugierig. :slight_smile:
Verwendet habe ich einen 64-Bit-Linux-Rechner, das Programm habe ich mit der üblichen Optimierung übersetzt (Option “-O3”).


$ time ./osmconvert germany.pbf --out-osm >/dev/null

real    1m39.356s

Ist gar nicht mal so langsam, trotz dass einige GB XML-Code generiert werden. Es gibt übrigens auch die Option “–out-none”, dann werden gar keine Daten geschrieben und man spart sich “/dev/null”. Das wäre aber ein unfairer Vorteil für osmconvert, denn die Osmium-Anwendung macht ja etwas mit den gelesenen Daten.

Realistischer ist ein Vergleich mit der osmconvert-Statistikfunktion, denn die tut auch nicht viel anderes als die Osmium-Anwendung, nämlich alle Daten zu lesen und nach verschiedenen Kriterien auszuwerten.


$ time ./osmconvert germany.pbf --out-statistics
timestamp min: 2005-07-05T02:14:17Z
timestamp max: 2011-11-21T19:59:55Z
lon min: -20.0712330
lon max: 25.2241302
lat min: 43.4945365
lat max: 60.2200233
nodes: 86720924
ways: 12750288
relations: 199905
node id min: 1
node id max: 1511888560
way id min: 92
way id max: 137876472
relation id min: 330
relation id max: 1857338

real    0m23.058s

Gehen wir noch einen Schritt weiter, denn intern gepackte .pbf-Dateien sind nicht wirklich geeignet für solche Auswertungen. Sinnvollerweise würde man eine solche gepackte PBF-Datei in eine ungepackte umwandeln oder das in diesem Fall platzsparendere Format o5m verwenden. Also, erstmal ein passenderes Format wählen:


$ time ./osmconvert germany.pbf -o=germany.o5m

real    0m43.959s

Und jetzt das Ganze nochmal laufen lassen:


$ time ./osmconvert germany.o5m --out-statistics
timestamp min: 2005-07-05T02:14:17Z
timestamp max: 2011-11-21T19:59:55Z
lon min: -20.0712330
lon max: 25.2241302
lat min: 43.4945365
lat max: 60.2200233
nodes: 86720924
ways: 12750288
relations: 199905
node id min: 1
node id max: 1511888560
way id min: 92
way id max: 137876472
relation id min: 330
relation id max: 1857338

real    0m13.700s

So, jetzt ist es aber wirklich schnell. :slight_smile:

Naja, eher ein Vergleich Äpfel mit Aprikosen :wink:

Wenn, dann müste man zuminderst eine Ausgabe generieren, die der Intention der Ursprungsaufgabe näher kommt, z. B.


osmcovert mittelfranken.osm.pbf --out-o5m > mittelfranken.o5m
osmfilter mittelfranken.o5m --keep="highway" --drop-nodes --drop-relations | grep "k=\"highway\"" | sed 's/^[ \t]*<tag k="highway" v="//;s/".*//' | sort -n | uniq -c | sort -n > alle_strassen.txt

Dann kann man zumiderst mit der Ausgabe etwas anfangen, sprich nach Fehler/Auffälligkeiten suchen.

Einverstanden. :slight_smile:
Ich versuchs mal Apfel-intern, sagen wir, es ist dann ein Vergleich zwischen “Golden Delicious” und “Granny Smith”:


$ time ./osmfilter germany.o5m --drop-nodes --drop-relations --out-count=highway
    1426976    track
    1367527    residential
     693176    service
     615269    footway
     398333    path
     238062    unclassified
     192312    secondary
     175365    tertiary
      88747    cycleway
      83890    steps
      82573    primary
(...)
          1    traboule
          1    track and path
          1    track; cycleway
          1    track; disused
          1    track; footway; track
          1    track;path
          1    track;service
          1    tram
          1    weighing_machine

real    0m11.254s

Der einzige Unterschied, der jetzt noch bleibt, ist die Längenberechnung. Die kostet Rechenzeit - je nachdem, wie genau man sie ausführt (mit Berücksichtigung der Erdkrümmung oder ohne, als Näherung oder exakt, usw.). Allerdings hält sich diese Rechenzeit bei weniger als 13 Mio. ways auch in Grenzen.

Aber wir sollten besser den Obstladen wieder beiseite räumen und Platz für die Diskussion über die Weglängen-Statistik lassen. :wink:
Vielleicht kann man diese Statistik für regionale Vollständigkeitsuntersuchungen verwenden?

Und zum Thema Osmium: Ich halte es für einen genialen Baukasten, aus dem man sich relativ leicht genau das bauen kann, was man braucht. Osmium ist bezüglich der Geschwindigkeit sicher nicht optimal, braucht es aber auch nicht sein, denn der Schwerpunkt liegt ganz woanders.

Eigentlich schon. Allerdings ist bei mir schon beim Apache kaputtes UTF8 angekommen:
[22/Nov/2011:15:27:42 +0100] query string: /api/xapi?[highway=Fu%E2%96%80weg], user agent: Wget/1.12 (cygwin)
[22/Nov/2011:15:29:23 +0100] query string: /api/xapi?
[highway=Fu%E2%94%9C%C6%92weg], user agent: Wget/1.12 (cygwin)

Das müsste eigentlich
/api/xapi?*[highway=Fu%C3%9Fweg]
heißen. Keine Ahnung, was da bei Cygwin passiert. Da die obigen gültige (aber eben in UTF8 anders belegte) Zeichenketten sind, kann ich das auf Server-Seite auch nicht mehr korrigieren.

spricht hier jemand fliessend html? Ich bräuchte eine Seite in 3 Bausteinen.

Baustein 1
-Überschrift: OSM Highway Length in country/region

  • irgendwie noch geschickt “in km”
  • Tabellekopf mit den Spalten “Date” sowie genau andersrum (von hinten nach vorne) services, tertiary_link, platform, secondary_link, raceway, primary_link, trunk_link, steps, construction, proposed, bridleway, pedestrian, motorway_link, trunk, road, living_street, motorway, cycleway, primary, footway, service, secondary, path, tertiary, unclassified, residential, track
    ^^ist vielleicht etwas viel. Ich würd vielleicht die *-link, platform und raceway weglassen wenns blöd aussieht

Baustein 2

  • Den String, den ich unter den Baustein 1 drunterschreiben muss, wenn ich die aktuellen (monatlichen) Werte anfügen will

Baustein 3

  • den Abschluss der html Seite

Ich will es dann so automatisieren, dass
1.) Berechnung → Baustein 1 + Baustein 2 + Baustein 3 → upload als country.html
2.) Baustein 1 neu = Baustein 1 alt + Baustein 2

Ganz OT:

Ah, Debian 6 mit fehlenden Kernelupdates :wink: