/// <summary>
 /// Creates a new edge difference calculator.
 /// </summary>
 /// <param name="data"></param>
 /// <param name="witness_calculator"></param>
 public EdgeDifferenceContractedSearchSpace(IDynamicGraphRouterDataSource<CHEdgeData> data, INodeWitnessCalculator witness_calculator)
 {
     _data = data;
     _witness_calculator = witness_calculator;
     _contraction_count = new Dictionary<uint, short>();
     _depth = new Dictionary<long, long>();
 }
Пример #2
0
        /// <summary>
        /// Creates a new processor target.
        /// </summary>
        /// <param name="dynamicGraph">The graph that will be filled.</param>
        /// <param name="interpreter">The interpreter to generate the edge data.</param>
        /// <param name="edgeComparer"></param>
        /// <param name="tagsIndex"></param>
        /// <param name="idTransformations"></param>
        /// <param name="box"></param>
        protected DynamicGraphOsmStreamWriter(
            IDynamicGraphRouterDataSource <TEdgeData> dynamicGraph, IOsmRoutingInterpreter interpreter, IDynamicGraphEdgeComparer <TEdgeData> edgeComparer,
            ITagsCollectionIndex tagsIndex, IDictionary <long, uint> idTransformations,
            GeoCoordinateBox box)
        {
            _dynamicGraph = dynamicGraph;
            _interpreter  = interpreter;
            _edgeComparer = edgeComparer;
            _box          = box;

            _tagsIndex         = tagsIndex;
            _idTransformations = idTransformations;
            _preIndexMode      = true;
            _preIndex          = new OsmSharp.Collections.HugeHashSet <long>();
            _usedTwiceOrMore   = new OsmSharp.Collections.HugeHashSet <long>();

            _dataCache = new OsmDataCacheMemory();
        }
Пример #3
0
        /// <summary>
        /// Creates a new pre-processor.
        /// </summary>
        /// <param name="target"></param>
        /// <param name="calculator"></param>
        /// <param name="witnessCalculator"></param>
        /// <param name="keepDirectNeighbours"></param>
        public CHPreProcessor(IDynamicGraphRouterDataSource <CHEdgeData> target,
                              INodeWeightCalculator calculator,
                              INodeWitnessCalculator witnessCalculator,
                              bool keepDirectNeighbours,
                              double preProcessingPercentage)
        {
            _comparer = new CHEdgeDataComparer();

            _keepDirectNeighbours = keepDirectNeighbours;

            _target = target;

            _calculator              = calculator;
            _witnessCalculator       = witnessCalculator;
            _preProcessingPercentage = preProcessingPercentage;

            _queue      = new CHPriorityQueue();
            _contracted = new bool[1000];
        }
Пример #4
0
        /// <summary>
        /// Creates a new processor target.
        /// </summary>
        /// <param name="dynamicGraph">The graph that will be filled.</param>
        /// <param name="interpreter">The interpreter to generate the edge data.</param>
        /// <param name="tagsIndex"></param>
        /// <param name="idTransformations"></param>
        /// <param name="collectIntermediates"></param>
        /// <param name="coordinates"></param>
        protected DynamicGraphOsmStreamWriter(
            IDynamicGraphRouterDataSource <TEdgeData> dynamicGraph, IOsmRoutingInterpreter interpreter,
            ITagsCollectionIndex tagsIndex, HugeDictionary <long, uint> idTransformations, bool collectIntermediates, ICoordinateIndex coordinates)
        {
            _dynamicGraph = dynamicGraph;
            _interpreter  = interpreter;

            _tagsIndex         = tagsIndex;
            _idTransformations = idTransformations;
            _preIndexMode      = true;
            _preIndex          = new OsmSharp.Collections.LongIndex.LongIndex.LongIndex();
            _relevantNodes     = new OsmSharp.Collections.LongIndex.LongIndex.LongIndex();
            _restricedWays     = new HashSet <long>();
            _collapsedNodes    = new Dictionary <long, KeyValuePair <KeyValuePair <long, uint>, KeyValuePair <long, uint> > >();

            _collectIntermediates = collectIntermediates;
            _dataCache            = new OsmDataCacheMemory();
            _coordinates          = coordinates;
        }
Пример #5
0
 /// <summary>
 /// Creates a new osm edge data processing target.
 /// </summary>
 /// <param name="dynamicGraph"></param>
 /// <param name="interpreter"></param>
 /// <param name="tagsIndex"></param>
 /// <param name="idTransformations"></param>
 public LiveGraphOsmStreamTarget(IDynamicGraphRouterDataSource <LiveEdge> dynamicGraph,
                                 IOsmRoutingInterpreter interpreter, ITagsIndex tagsIndex, IDictionary <long, uint> idTransformations, IEnumerable <Vehicle> vehicles)
     : this(dynamicGraph, interpreter, tagsIndex, idTransformations, null, vehicles)
 {
 }
Пример #6
0
        /// <summary>
        /// Creates a new pre-processor.
        /// </summary>
        /// <param name="target"></param>
        /// <param name="calculator"></param>
        /// <param name="witnessCalculator"></param>
        public CHPreProcessor(IDynamicGraphRouterDataSource<CHEdgeData> target,
                INodeWeightCalculator calculator,
                INodeWitnessCalculator witnessCalculator)
        {
            _comparer = null;

            _target = target;

            _calculator = calculator;
            _witnessCalculator = witnessCalculator;

            _queue = new BinairyHeap<uint>(target.VertexCount + (uint)System.Math.Max(target.VertexCount * 0.1, 5));
            _lowestPriorities = new float[target.VertexCount + (uint)System.Math.Max(target.VertexCount * 0.1, 5)];
            for(int idx = 0; idx < _lowestPriorities.Length; idx++)
            { // uncontracted = priority != float.MinValue.
                _lowestPriorities[idx] = float.MaxValue;
            }
        }
Пример #7
0
 /// <summary>
 /// Creates a new osm edge data processing target.
 /// </summary>
 /// <param name="dynamicGraph"></param>
 /// <param name="interpreter"></param>
 /// <param name="tagsIndex"></param>
 /// <param name="box"></param>
 public LiveGraphOsmStreamTarget(IDynamicGraphRouterDataSource <LiveEdge> dynamicGraph,
                                 IOsmRoutingInterpreter interpreter, ITagsIndex tagsIndex, GeoCoordinateBox box)
     : this(dynamicGraph, interpreter, tagsIndex, new Dictionary <long, uint>(), box, null)
 {
 }
 /// <summary>
 /// Creates a new osm edge data processing target.
 /// </summary>
 /// <param name="dynamicGraph"></param>
 /// <param name="interpreter"></param>
 /// <param name="tagsIndex"></param>
 /// <param name="vehicles">The vehicle profiles to build routing information for.</param>
 /// <param name="collectIntermediates"></param>
 public LiveGraphOsmStreamTarget(IDynamicGraphRouterDataSource <LiveEdge> dynamicGraph,
                                 IOsmRoutingInterpreter interpreter, ITagsCollectionIndex tagsIndex,
                                 IEnumerable <Vehicle> vehicles, bool collectIntermediates)
     : this(dynamicGraph, interpreter, tagsIndex, vehicles, collectIntermediates, new CoordinateIndex())
 {
 }
Пример #9
0
 /// <summary>
 /// Creates a new osm edge data processing target.
 /// </summary>
 /// <param name="dynamicGraph"></param>
 /// <param name="vehicles"></param>
 /// <param name="interpreter">Inteprets the OSM-data.</param>
 /// <param name="tagsIndex">Holds all the tags.</param>
 public LiveGraphOsmStreamTarget(IDynamicGraphRouterDataSource <LiveEdge> dynamicGraph,
                                 IOsmRoutingInterpreter interpreter, ITagsCollectionIndex tagsIndex, IEnumerable <Vehicle> vehicles)
     : this(dynamicGraph, interpreter, tagsIndex, new Dictionary <long, uint>(), vehicles)
 {
 }
Пример #10
0
        /// <summary>
        /// Creates a new pre-processor.
        /// </summary>
        /// <param name="target"></param>
        /// <param name="calculator"></param>
        /// <param name="witnessCalculator"></param>
        /// <param name="keepDirectNeighbours"></param>
        public CHPreProcessor(IDynamicGraphRouterDataSource<CHEdgeData> target,
                INodeWeightCalculator calculator,
                INodeWitnessCalculator witnessCalculator,
                bool keepDirectNeighbours,
                double preProcessingPercentage)
        {
            _comparer = new CHEdgeDataComparer();

            _keepDirectNeighbours = keepDirectNeighbours;

            _target = target;

            _calculator = calculator;
            _witnessCalculator = witnessCalculator;
            _preProcessingPercentage = preProcessingPercentage;

            _queue = new CHPriorityQueue();
            _contracted = new bool[1000];
        }
Пример #11
0
 /// <summary>
 /// Creates a new pre-processor.
 /// </summary>
 /// <param name="target"></param>
 /// <param name="calculator"></param>
 /// <param name="witnessCalculator"></param>
 public CHPreProcessor(IDynamicGraphRouterDataSource<CHEdgeData> target,
         INodeWeightCalculator calculator,
         INodeWitnessCalculator witnessCalculator)
     : this(target, calculator, witnessCalculator, true)
 {
 }
Пример #12
0
 /// <summary>
 /// Creates a new pre-processor.
 /// </summary>
 /// <param name="target"></param>
 /// <param name="calculator"></param>
 /// <param name="witnessCalculator"></param>
 public CHPreProcessor(IDynamicGraphRouterDataSource <CHEdgeData> target,
                       INodeWeightCalculator calculator,
                       INodeWitnessCalculator witnessCalculator)
     : this(target, calculator, witnessCalculator, true)
 {
 }
Пример #13
0
 /// <summary>
 /// Creates a new processor target.
 /// </summary>
 /// <param name="dynamicGraph">The graph that will be filled.</param>
 /// <param name="interpreter">The interpreter to generate the edge data.</param>
 /// <param name="edgeComparer"></param>
 /// <param name="tagsIndex"></param>
 protected DynamicGraphOsmStreamWriter(IDynamicGraphRouterDataSource <TEdgeData> dynamicGraph,
                                       IOsmRoutingInterpreter interpreter, IDynamicGraphEdgeComparer <TEdgeData> edgeComparer, ITagsCollectionIndex tagsIndex)
     : this(dynamicGraph, interpreter, edgeComparer, tagsIndex, new Dictionary <long, uint>())
 {
 }
Пример #14
0
 /// <summary>
 /// Creates a new processor target.
 /// </summary>
 /// <param name="dynamicGraph">The graph that will be filled.</param>
 /// <param name="interpreter">The interpreter to generate the edge data.</param>
 /// <param name="tagsIndex"></param>
 protected DynamicGraphOsmStreamWriter(IDynamicGraphRouterDataSource <TEdgeData> dynamicGraph,
                                       IOsmRoutingInterpreter interpreter, ITagsCollectionIndex tagsIndex)
     : this(dynamicGraph, interpreter, tagsIndex, new HugeDictionary <long, uint>(), true, new CoordinateIndex())
 {
 }
Пример #15
0
 /// <summary>
 /// Creates a reference stream target.
 /// </summary>
 /// <param name="dynamicGraph"></param>
 /// <param name="interpreter"></param>
 /// <param name="tagsIndex"></param>
 /// <param name="vehicles"></param>
 public ReferenceGraphTarget(IDynamicGraphRouterDataSource <LiveEdge> dynamicGraph, IOsmRoutingInterpreter interpreter, ITagsCollectionIndex tagsIndex, IEnumerable <Vehicle> vehicles)
     : base(dynamicGraph, interpreter, tagsIndex, vehicles, false)
 {
 }
Пример #16
0
 /// <summary>
 /// Creates a new edge difference calculator.
 /// </summary>
 /// <param name="data"></param>
 /// <param name="witness_calculator"></param>
 public EdgeDifference(IDynamicGraphRouterDataSource<CHEdgeData> data, INodeWitnessCalculator witness_calculator)
 {
     _data = data;
     _witness_calculator = witness_calculator;
 }
 /// <summary>
 /// Creates a new osm edge data processing target.
 /// </summary>
 /// <param name="dynamicGraph"></param>
 /// <param name="interpreter">Inteprets the OSM-data.</param>
 /// <param name="tagsIndex">Holds all the tags.</param>
 public LiveGraphOsmStreamWriter(IDynamicGraphRouterDataSource <LiveEdge> dynamicGraph,
                                 IRoutingInterpreter interpreter, ITagsIndex tagsIndex)
     : this(dynamicGraph, interpreter, tagsIndex, new Dictionary <long, uint>())
 {
 }
 /// <summary>
 /// Creates a new processor target.
 /// </summary>
 /// <param name="dynamicGraph">The graph that will be filled.</param>
 /// <param name="interpreter">The interpreter to generate the edge data.</param>
 /// <param name="edgeComparer"></param>
 /// <param name="tagsIndex"></param>
 /// <param name="idTransformations"></param>
 protected DynamicGraphOsmStreamWriter(IDynamicGraphRouterDataSource <TEdgeData> dynamicGraph,
                                       IOsmRoutingInterpreter interpreter, IDynamicGraphEdgeComparer <TEdgeData> edgeComparer, ITagsIndex tagsIndex,
                                       IDictionary <long, uint> idTransformations)
     : this(dynamicGraph, interpreter, edgeComparer, tagsIndex, idTransformations, null)
 {
 }
Пример #19
0
 /// <summary>
 /// Creates a new edge difference calculator.
 /// </summary>
 /// <param name="data"></param>
 /// <param name="witnessCalculator"></param>
 public EdgeDifference(IDynamicGraphRouterDataSource <CHEdgeData> data, INodeWitnessCalculator witnessCalculator)
 {
     _data = data;
     _witnessCalculator = witnessCalculator;
 }
Пример #20
0
 /// <summary>
 /// Creates a new osm edge data processing target.
 /// </summary>
 /// <param name="dynamicGraph"></param>
 /// <param name="interpreter">Inteprets the OSM-data.</param>
 /// <param name="tagsIndex">Holds all the tags.</param>
 public LiveGraphOsmStreamTarget(IDynamicGraphRouterDataSource <LiveEdge> dynamicGraph,
                                 IOsmRoutingInterpreter interpreter, ITagsCollectionIndex tagsIndex)
     : this(dynamicGraph, interpreter, tagsIndex, new HugeDictionary <long, uint>())
 {
 }
Пример #21
0
        /// <summary>
        /// Creates a new pre-processor.
        /// </summary>
        /// <param name="target"></param>
        /// <param name="calculator"></param>
        /// <param name="witnessCalculator"></param>
        /// <param name="keepReverseEdges"></param>
        public CHPreProcessor(IDynamicGraphRouterDataSource<CHEdgeData> target,
                INodeWeightCalculator calculator,
                INodeWitnessCalculator witnessCalculator,
                bool keepReverseEdges)
        {
            _comparer = new CHEdgeDataComparer();

            _target = target;

            _calculator = calculator;
            _witnessCalculator = witnessCalculator;

            _queue = new CHPriorityQueue();
            _contracted = new bool[1000];
        }
Пример #22
0
 /// <summary>
 /// Creates a reference stream target.
 /// </summary>
 /// <param name="dynamicGraph"></param>
 /// <param name="interpreter"></param>
 /// <param name="tagsIndex"></param>
 /// <param name="vehicles"></param>
 public ReferenceGraphTarget(IDynamicGraphRouterDataSource<LiveEdge> dynamicGraph, IOsmRoutingInterpreter interpreter, ITagsCollectionIndex tagsIndex, IEnumerable<Vehicle> vehicles)
     : base(dynamicGraph, interpreter, tagsIndex, vehicles, false)
 {
 }
Пример #23
0
 /// <summary>
 /// Creates a new pre-processor.
 /// </summary>
 /// <param name="target"></param>
 /// <param name="calculator"></param>
 /// <param name="witnessCalculator"></param>
 /// <param name="keepDirectNeighbours"></param>
 public CHPreProcessor(IDynamicGraphRouterDataSource<CHEdgeData> target,
         INodeWeightCalculator calculator,
         INodeWitnessCalculator witnessCalculator,
         bool keepDirectNeighbours)
     : this(target, calculator, witnessCalculator, true, 1)
 {
 }
Пример #24
0
 /// <summary>
 /// Creates a new osm edge data processing target.
 /// </summary>
 /// <param name="dynamicGraph"></param>
 /// <param name="interpreter"></param>
 /// <param name="tagsIndex"></param>
 /// <param name="idTransformations"></param>
 public LiveGraphOsmStreamTarget(IDynamicGraphRouterDataSource <LiveEdge> dynamicGraph,
                                 IOsmRoutingInterpreter interpreter, ITagsCollectionIndex tagsIndex, IDictionary <long, uint> idTransformations)
     : this(dynamicGraph, interpreter, tagsIndex, idTransformations, null, null)
 {
 }
 /// <summary>
 /// Creates a CH data processing target.
 /// </summary>
 /// <param name="dynamicGraph"></param>
 /// <param name="interpreter"></param>
 /// <param name="tagsIndex"></param>
 /// <param name="vehicle"></param>
 public CHEdgeGraphOsmStreamTarget(IDynamicGraphRouterDataSource <CHEdgeData> dynamicGraph,
                                   IOsmRoutingInterpreter interpreter, ITagsCollectionIndex tagsIndex, Vehicle vehicle)
     : base(dynamicGraph, interpreter, new CHEdgeDataComparer(), tagsIndex)
 {
     _vehicle = vehicle;
 }
Пример #26
0
 /// <summary>
 /// Creates a new osm edge data processing target.
 /// </summary>
 /// <param name="dynamicGraph"></param>
 /// <param name="interpreter">Inteprets the OSM-data.</param>
 /// <param name="tagsIndex">Holds all the tags.</param>
 /// <param name="coordinates"></param>
 public LiveGraphOsmStreamTarget(IDynamicGraphRouterDataSource <LiveEdge> dynamicGraph,
                                 IOsmRoutingInterpreter interpreter, ITagsCollectionIndex tagsIndex, ICoordinateIndex coordinates)
     : this(dynamicGraph, interpreter, tagsIndex, null, true, coordinates)
 {
 }