Skip to content

NetworkForge 1.1.0

Choose a tag to compare

@github-actions github-actions released this 16 Oct 13:20
· 8 commits to main since this release

Added

  • ramp, ramp:wheelchair, ramp:stroller and ramp:bicycle are
    written for your own lines and for changes to existing streets (they
    were dropped), and their values are checked. Valhalla tests record
    what 3.9 does with them and with kerbs: nothing yet. Steps with a
    ramp still stop a wheelchair, and no kerb does.
  • A warning names fields that look like OpenStreetMap tags
    (tactile_paving, cycleway:surface ...) but that NetworkForge
    doesn't write, so routers won't see them. Names, sources, notes and
    addresses (name:en, source:maxspeed ...) aren't warned about.
  • A warning when a local OSM file (osm_source= / --osm-source)
    doesn't cover the whole area. A region's extract stops at its
    boundary, so a box reaching across it quietly lost streets: built from
    Geofabrik's Berkshire file, a box around Reading lost about 1,800
    streets north of the Thames, with no warning. The build now finds the
    part of the area where the file has no streets at all, reaching the
    area's edge and covering at least 5% of it, and says where it is.
    The sea side of a coastline doesn't count. With --json the warning
    event carries gaps, a [west, south, east, north] box for each part.

Fixed

Found by probing the build with shapes the tests didn't draw
(tests/integration/test_edge_cases.py; the first four changed routes
in Valhalla).

  • A custom bridge, tunnel, ferry or line on another layer was joined
    to a custom road it crosses wherever either had a vertex within
    snap_tolerance of the crossing. A vertex of a bridge drawn exactly
    on a junction (or of a road on a motorway's node) joined it too. Only
    ends join now, as documented.
  • A line crossing or ending on a street right beside the dead end of
    another way (within snap_tolerance) was pulled onto the dead end and
    never joined the street.
  • Making a street one-way when its OSM way closes on itself (a loop, a
    crescent): drawn against the way's direction it was written the wrong
    way round, and the closing stretch was reversed in the GeoPackage
    either way.
  • An existing turn restriction over a via way was dropped, silently,
    when any part of one of its ways was changed. It now follows the
    pieces, as restrictions with a via node did. (It still goes, rightly,
    if part of the via way is removed.)
  • About one line end in ten moved onto a street mid-block became two
    nodes in one place joined by an edge of no length; so did three lines
    crossing at one point.
  • --gpkg (or another output) naming the --custom file overwrote the
    custom data and reported success. Outputs that would replace an input
    or each other are refused, and a missing output folder is reported
    before the build rather than after it.
  • An extent or custom layer in a projection measured in feet (US State
    Plane) was built in feet: length_m and travel times 3.28 times too
    large. Such projections are replaced by the UTM zone.
  • Attributes named index_right / index_left crashed the build; fid,
    a name differing from another only in capitals, or a GeoPackage
    analysis column name (car, length_m ...) stopped the GeoPackage
    being written. The first and last are set aside with the other
    internal names; the others get a trailing underscore in the
    GeoPackage.
  • --json: a feature whose --id-field is empty was written as NaN,
    which is not JSON; it is null.
  • Control characters in a tag value made OSM XML that could not be read;
    an extent file without features and an infinite --snap-tolerance are
    input errors (exit 3), not crashes.
  • A new line drawn to the pier of an existing ferry that no street
    reaches got a node of its own beside the ferry's, so the ferry stayed
    out of reach in Valhalla. Its end now joins the ferry.
  • maxspeed=0 gave endless travel times (GeoPackage minutes, OSMnx
    routing): a speed of 0 is ignored, as routers do, and on a custom
    feature it is an error.
  • bridge=0 / bridge=false (and the same for tunnel) counted as a
    bridge, so the line didn't join the streets it crossed. They mean no.
  • A change to an existing street drawn ACROSS a block (through the
    middle of it) was applied to that block. A feature must now run along
    the stretch, within 45 degrees.

Tests

  • Cycling infrastructure is now tested in Valhalla
    (tests/valhalla/test_cycling.py): a cycle lane, a track or a
    cycleway draws cyclists off a shorter street and nobody else; a lane
    added to an existing street makes it cheaper to cycle; unpaved
    surfaces close a street to the bicycles that can't take them.

  • Wheelchair routing (tests/valhalla/test_wheelchair.py): steps,
    wheelchair=no and gravel turn a wheelchair back and nobody else.

  • Less common tags (tests/valhalla/test_less_common_tags.py):
    motorcycles, mopeds and taxis, buses against a one-way street,
    roundabouts, maxspeed:hgv, rough surfaces and mountain paths.

Documentation

  • network-analyst.md
    says which cycling tags Valhalla routes by and which it ignores
    (cycleway:both, bicycle_road, cyclestreet).
  • The tagging guide is now network-rules.md,
    "Network rules: how your lines become a network", written for people
    using the QGIS plugin. It opens with a short summary of the rules
    instead of code, names each setting as the QGIS form does, and ends
    with a table of each setting in QGIS, on the command line and in
    Python. The code examples are in the README. docs/tagging-guide.md
    is now a short page pointing to the new one. Errors' guide (in
    --json error events too) now names the file:
    network-rules.md#presets, not presets.
  • The guide brought up to date. The
    quick start shows the command line, the PBF and the GeoPackage, plus
    a table of Python options with their CLI flags. Points are allowed in
    the layer, and lines that join nothing are kept with a warning (the
    guide said both were refused). Attributes that aren't tags are kept in
    the GeoPackage. The reserved names list is complete. New: wheelchair,
    maxspeed:hgv, time-of-day access, line ends that nearly meet, loops,
    an error table for points, and a list of the warnings and what to do
    about each.