< Summary

Class:Itinero.IO.Osm.RouterDbExtensions
Assembly:Itinero.IO.Osm
File(s):/home/runner/work/routing2/routing2/src/Itinero.IO.Osm/RouterDbExtensions.cs
Covered lines:19
Uncovered lines:6
Coverable lines:25
Total lines:65
Line coverage:76% (19 of 25)
Covered branches:8
Total branches:10
Branch coverage:80% (8 of 10)
Tag:251_23667616543

Metrics

MethodBranch coverage Cyclomatic complexity Line coverage
UseOsmData(...)80%1076%

File(s)

/home/runner/work/routing2/routing2/src/Itinero.IO.Osm/RouterDbExtensions.cs

#LineLine coverage
 1using System;
 2using System.Collections.Generic;
 3using System.Linq;
 4using Itinero.IO.Osm.Streams;
 5using OsmSharp;
 6using OsmSharp.Complete;
 7using OsmSharp.Streams;
 8using OsmSharp.Tags;
 9
 10namespace Itinero.IO.Osm;
 11
 12/// <summary>
 13/// Contains extensions method for the router db.
 14/// </summary>
 15public static class RouterDbExtensions
 16{
 17    /// <summary>
 18    /// Loads the given OSM data into the router db.
 19    /// </summary>
 20    /// <param name="routerDb">The router db.</param>
 21    /// <param name="data">The data.</param>
 22    /// <param name="configure">The configure function.</param>
 23    public static void UseOsmData(this RouterDb routerDb, OsmStreamSource data,
 24        Action<DataProviderSettings>? configure = null)
 4125    {
 26        // get writer.
 4127        if (routerDb.HasMutableNetwork)
 028        {
 029            throw new InvalidOperationException(
 030                $"Cannot add data to a {nameof(RouterDb)} that is only being written to.");
 31        }
 32
 4133        using var routerDbWriter = routerDb.GetMutableNetwork();
 34
 35        // create settings.
 4136        var settings = new DataProviderSettings();
 4137        configure?.Invoke(settings);
 38
 39        // do filtering.
 40
 41        // 1: complete objects.
 4142        if (settings.TagsFilter.CompleteFilter != null)
 043        {
 044            data = data.ApplyCompleteFilter(settings.TagsFilter.CompleteFilter);
 045        }
 46
 47        // 2: filter relations.
 4148        if (settings.TagsFilter.MemberFilter != null)
 1949        {
 1950            data = data.ApplyRelationMemberFilter(settings.TagsFilter.MemberFilter);
 1951        }
 52
 53        // 3: filter tags on ways and relations.
 4154        if (settings.TagsFilter.Filter != null)
 2155        {
 2156            data = data.ApplyFilter(settings.TagsFilter.Filter);
 2157        }
 58
 59        // use writer to fill router db.
 4160        var routerDbStreamTarget = new RouterDbStreamTarget(routerDbWriter, settings.ElevationHandler);
 4161        routerDbStreamTarget.RegisterSource(data);
 4162        routerDbStreamTarget.Initialize();
 4163        routerDbStreamTarget.Pull();
 8264    }
 65}

Methods/Properties

UseOsmData(...)