@osmix/router 0.0.13 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +64 -0
- package/LICENSE +21 -0
- package/README.md +138 -53
- package/dist/algorithms/bidirectional.d.ts +6 -9
- package/dist/algorithms/bidirectional.d.ts.map +1 -1
- package/dist/algorithms/bidirectional.js +84 -104
- package/dist/algorithms/bidirectional.js.map +1 -1
- package/dist/algorithms/index.d.ts +1 -1
- package/dist/algorithms/index.d.ts.map +1 -1
- package/dist/algorithms/index.js +1 -1
- package/dist/algorithms/index.js.map +1 -1
- package/dist/algorithms/shortest-path.d.ts +2 -1
- package/dist/algorithms/shortest-path.d.ts.map +1 -1
- package/dist/algorithms/shortest-path.js +9 -7
- package/dist/algorithms/shortest-path.js.map +1 -1
- package/dist/binary-heap.d.ts +5 -0
- package/dist/binary-heap.d.ts.map +1 -1
- package/dist/binary-heap.js +11 -4
- package/dist/binary-heap.js.map +1 -1
- package/dist/graph.d.ts +35 -7
- package/dist/graph.d.ts.map +1 -1
- package/dist/graph.js +161 -119
- package/dist/graph.js.map +1 -1
- package/dist/index.d.ts +9 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -4
- package/dist/index.js.map +1 -1
- package/dist/router.d.ts +1 -1
- package/dist/router.d.ts.map +1 -1
- package/dist/router.js +6 -3
- package/dist/router.js.map +1 -1
- package/dist/topology-stats.d.ts +37 -0
- package/dist/topology-stats.d.ts.map +1 -0
- package/dist/topology-stats.js +62 -0
- package/dist/topology-stats.js.map +1 -0
- package/dist/types.d.ts +15 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/utils.d.ts +1 -1
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +1 -7
- package/dist/utils.js.map +1 -1
- package/package.json +32 -29
- package/src/algorithms/bidirectional.ts +124 -136
- package/src/algorithms/index.ts +10 -10
- package/src/algorithms/shortest-path.ts +96 -92
- package/src/binary-heap.ts +133 -129
- package/src/graph.ts +389 -355
- package/src/index.ts +14 -9
- package/src/router.ts +221 -233
- package/src/topology-stats.ts +84 -0
- package/src/types.ts +102 -87
- package/src/utils.ts +67 -74
- package/test/algorithms.test.ts +396 -353
- package/test/binary-heap.test.ts +27 -0
- package/test/limits.test.ts +82 -0
- package/test/no-shared-array-buffer.test.ts +37 -0
- package/test/router.bench.ts +171 -188
- package/test/router.test.ts +685 -726
- package/test/spatial-capability.test.ts +23 -0
- package/test/topology-stats.test.ts +82 -0
- package/tsconfig.build.json +6 -6
- package/tsconfig.json +7 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bidirectional.js","sourceRoot":"","sources":["../../src/algorithms/bidirectional.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;
|
|
1
|
+
{"version":3,"file":"bidirectional.js","sourceRoot":"","sources":["../../src/algorithms/bidirectional.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Provides three algorithms:
|
|
5
5
|
* - `dijkstra`: Optimal shortest path, explores all directions equally.
|
|
6
6
|
* - `astar`: Optimal with heuristic guidance, faster for point-to-point.
|
|
7
|
-
* - `bidirectional`:
|
|
7
|
+
* - `bidirectional`: Optimal Dijkstra from both ends; needs `context.reverseGraph`.
|
|
8
8
|
*
|
|
9
9
|
* @module
|
|
10
10
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/algorithms/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,aAAa,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/algorithms/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAErD,YAAY,EAAE,kBAAkB,EAAE,CAAC;AACnC,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC;AAE1C,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,gBAAgB,EAAE,kBAAkB,CAI1E,CAAC"}
|
package/dist/algorithms/index.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Provides three algorithms:
|
|
5
5
|
* - `dijkstra`: Optimal shortest path, explores all directions equally.
|
|
6
6
|
* - `astar`: Optimal with heuristic guidance, faster for point-to-point.
|
|
7
|
-
* - `bidirectional`:
|
|
7
|
+
* - `bidirectional`: Optimal Dijkstra from both ends; needs `context.reverseGraph`.
|
|
8
8
|
*
|
|
9
9
|
* @module
|
|
10
10
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/algorithms/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/algorithms/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAGrD,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC;AAE1C,MAAM,CAAC,MAAM,iBAAiB,GAAiD;IAC7E,QAAQ;IACR,KAAK;IACL,aAAa;CACd,CAAC"}
|
|
@@ -18,7 +18,8 @@ export declare const dijkstra: RoutingAlgorithmFn;
|
|
|
18
18
|
*
|
|
19
19
|
* The heuristic is adapted based on the metric:
|
|
20
20
|
* - distance: haversine distance in meters
|
|
21
|
-
* - time: haversine distance /
|
|
21
|
+
* - time: haversine distance / `context.maxSpeedMps` (lower bound on travel time in seconds).
|
|
22
|
+
* Pass the graph's real maximum; the 130 km/h default overestimates on faster roads.
|
|
22
23
|
*/
|
|
23
24
|
export declare const astar: RoutingAlgorithmFn;
|
|
24
25
|
//# sourceMappingURL=shortest-path.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shortest-path.d.ts","sourceRoot":"","sources":["../../src/algorithms/shortest-path.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"shortest-path.d.ts","sourceRoot":"","sources":["../../src/algorithms/shortest-path.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,KAAK,EAA0B,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAkG9E;;;GAGG;AACH,eAAO,MAAM,QAAQ,EAAE,kBAEtB,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,KAAK,EAAE,kBAyBnB,CAAC"}
|
|
@@ -6,13 +6,13 @@
|
|
|
6
6
|
*
|
|
7
7
|
* @module
|
|
8
8
|
*/
|
|
9
|
-
import { haversineDistance } from "@osmix/
|
|
9
|
+
import { haversineDistance } from "@osmix/geo/haversine-distance";
|
|
10
10
|
import { BinaryHeap } from "../binary-heap.js";
|
|
11
11
|
/**
|
|
12
|
-
*
|
|
13
|
-
*
|
|
12
|
+
* Default maximum speed (m/s) for the time heuristic when the caller does not
|
|
13
|
+
* pass the graph's real maximum: 130 km/h (~36.1 m/s).
|
|
14
14
|
*/
|
|
15
|
-
const
|
|
15
|
+
const DEFAULT_MAX_SPEED_MPS = (130 * 1000) / 3600;
|
|
16
16
|
/**
|
|
17
17
|
* A* shortest path algorithm with configurable heuristic.
|
|
18
18
|
*
|
|
@@ -93,11 +93,13 @@ export const dijkstra = (graph, start, end, getWeight) => {
|
|
|
93
93
|
*
|
|
94
94
|
* The heuristic is adapted based on the metric:
|
|
95
95
|
* - distance: haversine distance in meters
|
|
96
|
-
* - time: haversine distance /
|
|
96
|
+
* - time: haversine distance / `context.maxSpeedMps` (lower bound on travel time in seconds).
|
|
97
|
+
* Pass the graph's real maximum; the 130 km/h default overestimates on faster roads.
|
|
97
98
|
*/
|
|
98
|
-
export const astar = (graph, start, end, getWeight, getCoord, metric) => {
|
|
99
|
+
export const astar = (graph, start, end, getWeight, getCoord, metric, context) => {
|
|
99
100
|
if (!getCoord)
|
|
100
101
|
return null;
|
|
102
|
+
const maxSpeedMps = context?.maxSpeedMps ?? DEFAULT_MAX_SPEED_MPS;
|
|
101
103
|
const endCoord = getCoord(end);
|
|
102
104
|
if (!endCoord)
|
|
103
105
|
return null;
|
|
@@ -108,7 +110,7 @@ export const astar = (graph, start, end, getWeight, getCoord, metric) => {
|
|
|
108
110
|
if (!coord)
|
|
109
111
|
return 0;
|
|
110
112
|
const distance = haversineDistance(endCoord, coord);
|
|
111
|
-
return metric === "time" ? distance /
|
|
113
|
+
return metric === "time" ? distance / maxSpeedMps : distance;
|
|
112
114
|
};
|
|
113
115
|
return shortestPath(graph, start, end, getWeight, heuristic);
|
|
114
116
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shortest-path.js","sourceRoot":"","sources":["../../src/algorithms/shortest-path.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"shortest-path.js","sourceRoot":"","sources":["../../src/algorithms/shortest-path.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAElE,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAG/C;;;GAGG;AACH,MAAM,qBAAqB,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;AAElD;;;;;GAKG;AACH,SAAS,YAAY,CACnB,KAAyC,EACzC,KAAa,EACb,GAAW,EACX,SAAsC,EACtC,SAAwC;IAExC,2BAA2B;IAC3B,IAAI,KAAK,KAAK,GAAG;QAAE,OAAO,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;IAE1D,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC,CAAC,gCAAgC;IAC1E,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAuB,CAAC,CAAC,2BAA2B;IAC5E,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC,CAAC,wBAAwB;IAC1D,MAAM,IAAI,GAAG,IAAI,UAAU,EAAE,CAAC;IAE9B,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACrB,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;IAEnC,OAAO,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QACrB,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAG,CAAC;QAE5B,sBAAsB;QACtB,IAAI,OAAO,KAAK,GAAG;YAAE,OAAO,eAAe,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;QAElE,yBAAyB;QACzB,IAAI,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC;YAAE,SAAS;QAClC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAEpB,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAE,CAAC;QAEtC,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;YAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC;YAEtC,IAAI,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;gBAAE,SAAS;YAEnC,MAAM,UAAU,GAAG,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;YAC9C,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAEvC,IAAI,SAAS,KAAK,SAAS,IAAI,UAAU,GAAG,SAAS,EAAE,CAAC;gBACtD,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;gBACjC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE;oBACrB,SAAS,EAAE,QAAQ;oBACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;oBACvB,iBAAiB,EAAE,OAAO;oBAC1B,IAAI,EAAE,UAAU;iBACjB,CAAC,CAAC;gBAEH,MAAM,CAAC,GAAG,UAAU,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;gBAC3C,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CACtB,QAAkC,EAClC,KAAa,EACb,GAAW;IAEX,MAAM,IAAI,GAAkB,EAAE,CAAC;IAC/B,IAAI,OAAO,GAAuB,GAAG,CAAC;IAEtC,OAAO,OAAO,KAAK,SAAS,EAAE,CAAC;QAC7B,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACtC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,IAAI,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;YAC9C,MAAM;QACR,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACtB,OAAO,GAAG,OAAO,CAAC,iBAAiB,CAAC;IACtC,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,KAAK,KAAK,EAAE,CAAC;QACtD,IAAI,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;IAC9C,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAuB,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE;IAC3E,OAAO,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AAC7D,CAAC,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,KAAK,GAAuB,CACvC,KAAK,EACL,KAAK,EACL,GAAG,EACH,SAAS,EACT,QAAQ,EACR,MAAM,EACN,OAAO,EACP,EAAE;IACF,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC3B,MAAM,WAAW,GAAG,OAAO,EAAE,WAAW,IAAI,qBAAqB,CAAC;IAElE,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC/B,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAE3B,uCAAuC;IACvC,gEAAgE;IAChE,MAAM,SAAS,GAAG,CAAC,SAAiB,EAAU,EAAE;QAC9C,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;QAClC,IAAI,CAAC,KAAK;YAAE,OAAO,CAAC,CAAC;QACrB,MAAM,QAAQ,GAAG,iBAAiB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QACpD,OAAO,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC/D,CAAC,CAAC;IAEF,OAAO,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;AAC/D,CAAC,CAAC"}
|
package/dist/binary-heap.d.ts
CHANGED
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
* Operations:
|
|
12
12
|
* - `push(item, priority)`: O(log n) - adds or updates item priority.
|
|
13
13
|
* - `pop()`: O(log n) - removes and returns minimum priority item.
|
|
14
|
+
* - `peekPriority()`: O(1) - priority of the minimum item.
|
|
14
15
|
* - `has(item)`: O(1) - checks if item is in heap.
|
|
15
16
|
*/
|
|
16
17
|
export declare class BinaryHeap {
|
|
@@ -26,6 +27,10 @@ export declare class BinaryHeap {
|
|
|
26
27
|
* Remove and return the minimum-priority item.
|
|
27
28
|
*/
|
|
28
29
|
pop(): number | undefined;
|
|
30
|
+
/**
|
|
31
|
+
* Priority of the minimum item, or `Infinity` when the heap is empty.
|
|
32
|
+
*/
|
|
33
|
+
peekPriority(): number;
|
|
29
34
|
/**
|
|
30
35
|
* Check if item is in the heap.
|
|
31
36
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"binary-heap.d.ts","sourceRoot":"","sources":["../src/binary-heap.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH
|
|
1
|
+
{"version":3,"file":"binary-heap.d.ts","sourceRoot":"","sources":["../src/binary-heap.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;GAWG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,IAAI,CAAgB;IAC5B,OAAO,CAAC,UAAU,CAAgB;IAClC,OAAO,CAAC,SAAS,CAAkC;IAEnD,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;OAEG;IACH,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAezC;IAED;;OAEG;IACH,GAAG,IAAI,MAAM,GAAG,SAAS,CAiBxB;IAED;;OAEG;IACH,YAAY,IAAI,MAAM,CAErB;IAED;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEzB;IAED;;OAEG;IACH,KAAK,IAAI,IAAI,CAIZ;IAED,OAAO,CAAC,QAAQ;IAwBhB,OAAO,CAAC,UAAU;CAmCnB"}
|
package/dist/binary-heap.js
CHANGED
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
* Operations:
|
|
12
12
|
* - `push(item, priority)`: O(log n) - adds or updates item priority.
|
|
13
13
|
* - `pop()`: O(log n) - removes and returns minimum priority item.
|
|
14
|
+
* - `peekPriority()`: O(1) - priority of the minimum item.
|
|
14
15
|
* - `has(item)`: O(1) - checks if item is in heap.
|
|
15
16
|
*/
|
|
16
17
|
export class BinaryHeap {
|
|
@@ -56,6 +57,12 @@ export class BinaryHeap {
|
|
|
56
57
|
}
|
|
57
58
|
return min;
|
|
58
59
|
}
|
|
60
|
+
/**
|
|
61
|
+
* Priority of the minimum item, or `Infinity` when the heap is empty.
|
|
62
|
+
*/
|
|
63
|
+
peekPriority() {
|
|
64
|
+
return this.priorities[0] ?? Number.POSITIVE_INFINITY;
|
|
65
|
+
}
|
|
59
66
|
/**
|
|
60
67
|
* Check if item is in the heap.
|
|
61
68
|
*/
|
|
@@ -98,12 +105,12 @@ export class BinaryHeap {
|
|
|
98
105
|
const leftIndex = (index << 1) + 1;
|
|
99
106
|
const rightIndex = leftIndex + 1;
|
|
100
107
|
let smallest = index;
|
|
101
|
-
|
|
102
|
-
|
|
108
|
+
let smallestPriority = priority;
|
|
109
|
+
if (leftIndex < length && this.priorities[leftIndex] < smallestPriority) {
|
|
103
110
|
smallest = leftIndex;
|
|
111
|
+
smallestPriority = this.priorities[leftIndex];
|
|
104
112
|
}
|
|
105
|
-
if (rightIndex < length &&
|
|
106
|
-
this.priorities[rightIndex] < this.priorities[smallest]) {
|
|
113
|
+
if (rightIndex < length && this.priorities[rightIndex] < smallestPriority) {
|
|
107
114
|
smallest = rightIndex;
|
|
108
115
|
}
|
|
109
116
|
if (smallest === index)
|
package/dist/binary-heap.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"binary-heap.js","sourceRoot":"","sources":["../src/binary-heap.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH
|
|
1
|
+
{"version":3,"file":"binary-heap.js","sourceRoot":"","sources":["../src/binary-heap.ts"],"names":[],"mappings":"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"}
|
package/dist/graph.d.ts
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* @module
|
|
12
12
|
*/
|
|
13
13
|
import { type Osm } from "@osmix/core";
|
|
14
|
-
import type { LonLat } from "@osmix/
|
|
14
|
+
import type { LonLat } from "@osmix/types";
|
|
15
15
|
import type { DefaultSpeeds, GraphEdge, HighwayFilter, RoutingGraphTransferables } from "./types.ts";
|
|
16
16
|
/**
|
|
17
17
|
* Routing graph built from OSM ways and nodes.
|
|
@@ -22,7 +22,8 @@ import type { DefaultSpeeds, GraphEdge, HighwayFilter, RoutingGraphTransferables
|
|
|
22
22
|
* @example Build from OSM data
|
|
23
23
|
* ```ts
|
|
24
24
|
* const graph = new RoutingGraph(osm)
|
|
25
|
-
* const
|
|
25
|
+
* const router = new Router(osm, graph)
|
|
26
|
+
* const path = router.route(startNodeIndex, endNodeIndex)
|
|
26
27
|
* ```
|
|
27
28
|
*
|
|
28
29
|
* @example Transfer between workers
|
|
@@ -45,8 +46,13 @@ export declare class RoutingGraph {
|
|
|
45
46
|
private edgeWayIndexes;
|
|
46
47
|
private edgeDistances;
|
|
47
48
|
private edgeTimes;
|
|
48
|
-
private
|
|
49
|
-
private
|
|
49
|
+
private routable;
|
|
50
|
+
private intersections;
|
|
51
|
+
private reverseOffsets;
|
|
52
|
+
/** Forward edge index for each incoming edge, grouped by target node. */
|
|
53
|
+
private reverseEdges;
|
|
54
|
+
private reverseSources;
|
|
55
|
+
private cachedMaxSpeedMps;
|
|
50
56
|
readonly filter: HighwayFilter;
|
|
51
57
|
readonly defaultSpeeds: DefaultSpeeds;
|
|
52
58
|
/**
|
|
@@ -62,9 +68,15 @@ export declare class RoutingGraph {
|
|
|
62
68
|
*/
|
|
63
69
|
private fromTransferables;
|
|
64
70
|
/**
|
|
65
|
-
* Build the graph from OSM data
|
|
71
|
+
* Build the graph from OSM data in two passes over the routable ways, straight into typed
|
|
72
|
+
* arrays: the first counts each node's outgoing edges and sets the node flags, the second
|
|
73
|
+
* fills the CSR arrays. No per-edge objects or `Map`/`Set` (V8 caps those near 2^24 entries).
|
|
66
74
|
*/
|
|
67
75
|
private buildFromOsm;
|
|
76
|
+
/** Visit each segment of each routable way, in way order, with its direction and speed. */
|
|
77
|
+
private forEachSegment;
|
|
78
|
+
/** Mark a node routable, or an intersection if it was already routable. */
|
|
79
|
+
private markRoutable;
|
|
68
80
|
/**
|
|
69
81
|
* Check if a node is part of the routable network.
|
|
70
82
|
*/
|
|
@@ -77,12 +89,25 @@ export declare class RoutingGraph {
|
|
|
77
89
|
* Get outgoing edges from a node.
|
|
78
90
|
*/
|
|
79
91
|
getEdges(nodeIndex: number): GraphEdge[];
|
|
92
|
+
/**
|
|
93
|
+
* Get incoming edges of a node. In each returned edge, `targetNodeIndex` is the
|
|
94
|
+
* edge's source node. The reverse index (4 bytes per node plus 8 bytes per edge)
|
|
95
|
+
* is built on the first call.
|
|
96
|
+
*/
|
|
97
|
+
getIncomingEdges(nodeIndex: number): GraphEdge[];
|
|
98
|
+
private buildReverseIndex;
|
|
99
|
+
/**
|
|
100
|
+
* Fastest edge speed in the graph, in meters per second. The A* time heuristic
|
|
101
|
+
* divides by this so that it never overestimates travel time.
|
|
102
|
+
*/
|
|
103
|
+
get maxSpeedMps(): number;
|
|
80
104
|
/**
|
|
81
105
|
* Get transferable buffers for passing to another thread.
|
|
82
106
|
*/
|
|
83
107
|
transferables(): RoutingGraphTransferables;
|
|
84
108
|
/**
|
|
85
|
-
*
|
|
109
|
+
* Number of node slots in the graph: every node in the source OSM data, not only
|
|
110
|
+
* routable ones. Use `isRoutable()` to test a node.
|
|
86
111
|
*/
|
|
87
112
|
get size(): number;
|
|
88
113
|
/**
|
|
@@ -96,6 +121,9 @@ export declare class RoutingGraph {
|
|
|
96
121
|
* graph (i.e., lie on a routable way). Returns the closest match with its
|
|
97
122
|
* coordinates and distance.
|
|
98
123
|
*
|
|
124
|
+
* Snaps to graph nodes only, not to points along edges. Requires the "all" node
|
|
125
|
+
* spatial index; throws `SpatialIndexNotBuiltError` without it.
|
|
126
|
+
*
|
|
99
127
|
* @param osm - The OSM dataset.
|
|
100
128
|
* @param point - The [lon, lat] coordinates to search from.
|
|
101
129
|
* @param maxDistanceM - Maximum search radius in meters.
|
|
@@ -103,7 +131,7 @@ export declare class RoutingGraph {
|
|
|
103
131
|
*
|
|
104
132
|
* @example
|
|
105
133
|
* ```ts
|
|
106
|
-
* const nearest = graph.
|
|
134
|
+
* const nearest = graph.findNearestRoutableNode(osm, [-73.989, 40.733], 500)
|
|
107
135
|
* if (nearest) {
|
|
108
136
|
* console.log(`Found node ${nearest.nodeIndex} at ${nearest.distance}m`)
|
|
109
137
|
* }
|
package/dist/graph.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../src/graph.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAsC,KAAK,GAAG,EAAE,MAAM,aAAa,
|
|
1
|
+
{"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../src/graph.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAsC,KAAK,GAAG,EAAE,MAAM,aAAa,CAAC;AAG3E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAG3C,OAAO,KAAK,EACV,aAAa,EACb,SAAS,EACT,aAAa,EACb,yBAAyB,EAC1B,MAAM,YAAY,CAAC;AAGpB;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,YAAY;IACvB,oDAAoD;IACpD,OAAO,CAAC,SAAS,CAAK;IACtB,0CAA0C;IAC1C,OAAO,CAAC,SAAS,CAAK;IAGtB,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,cAAc,CAA4B;IAClD,OAAO,CAAC,aAAa,CAA6B;IAClD,OAAO,CAAC,SAAS,CAA6B;IAC9C,OAAO,CAAC,QAAQ,CAAuB;IACvC,OAAO,CAAC,aAAa,CAAuB;IAG5C,OAAO,CAAC,cAAc,CAA4B;IAClD,yEAAyE;IACzE,OAAO,CAAC,YAAY,CAA4B;IAChD,OAAO,CAAC,cAAc,CAA4B;IAClD,OAAO,CAAC,iBAAiB,CAAuB;IAGhD,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IAEtC;;;;;;OAMG;IACH,YACE,MAAM,EAAE,GAAG,GAAG,yBAAyB,EACvC,MAAM,GAAE,aAAoC,EAC5C,aAAa,GAAE,aAA8B,EAW9C;IAED;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAYzB;;;;OAIG;IACH,OAAO,CAAC,YAAY;IA4DpB,2FAA2F;IAC3F,OAAO,CAAC,cAAc;IAyCtB,2EAA2E;IAC3E,OAAO,CAAC,YAAY;IAMpB;;OAEG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAGrC;IAED;;OAEG;IACH,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAGzC;IAED;;OAEG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,CAmBvC;IAED;;;;OAIG;IACH,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,CAkB/C;IAED,OAAO,CAAC,iBAAiB;IAuBzB;;;OAGG;IACH,IAAI,WAAW,IAAI,MAAM,CAUxB;IAED;;OAEG;IACH,aAAa,IAAI,yBAAyB,CAYzC;IAED;;;OAGG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;OAEG;IACH,IAAI,KAAK,IAAI,MAAM,CAElB;IAED;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,uBAAuB,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM;mBAItD,MAAM;qBACJ,MAAM;kBACT,MAAM;aAgBnB;CACF;AAED;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CACxB,GAAG,EAAE,GAAG,EACR,MAAM,GAAE,aAAoC,EAC5C,aAAa,GAAE,aAA8B,GAC5C,YAAY,CAEd;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,yBAAyB,GAAG,WAAW,EAAE,CAYlF"}
|