@wemap/routers 12.10.8 → 12.10.9
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/dist/helpers/InstructionManager.d.ts +20 -0
- package/dist/helpers/InstructionManagerV1.d.ts +7 -0
- package/{index.ts → dist/index.d.ts} +1 -11
- package/dist/index.js +1 -5099
- package/dist/index.js.map +1 -1
- package/dist/src/ItineraryInfoManager.d.ts +31 -0
- package/dist/src/RoutingError.d.ts +24 -0
- package/{src/StatusCode.ts → dist/src/StatusCode.d.ts} +2 -3
- package/dist/src/Utils.d.ts +6 -0
- package/dist/src/graph/Edge.d.ts +32 -0
- package/dist/src/graph/Graph.d.ts +40 -0
- package/dist/src/graph/GraphProjection.d.ts +11 -0
- package/dist/src/graph/GraphProjectionOptions.d.ts +7 -0
- package/dist/src/graph/GraphRoute.d.ts +19 -0
- package/dist/src/graph/GraphRouter.d.ts +20 -0
- package/dist/src/graph/GraphRouterEngine.d.ts +77 -0
- package/{src/graph/GraphRouterOptions.ts → dist/src/graph/GraphRouterOptions.d.ts} +5 -7
- package/dist/src/graph/GraphRouterOptionsBuilder.d.ts +20 -0
- package/dist/src/graph/NoRouteFoundError.d.ts +12 -0
- package/dist/src/graph/Vertex.d.ts +19 -0
- package/dist/src/model/Itinerary.d.ts +81 -0
- package/dist/src/model/Leg.d.ts +66 -0
- package/dist/src/model/LevelChange.d.ts +7 -0
- package/dist/src/model/RouterRequest.d.ts +40 -0
- package/dist/src/model/Step.d.ts +42 -0
- package/dist/src/model/StepExtra.d.ts +3 -0
- package/dist/src/model/StepsBuilder.d.ts +16 -0
- package/dist/src/model/TransitMode.d.ts +5 -0
- package/{src/model/TravelMode.ts → dist/src/model/TravelMode.d.ts} +1 -2
- package/dist/src/model/generateSteps.d.ts +0 -0
- package/{src/remote/RemoteRouter.ts → dist/src/remote/RemoteRouter.d.ts} +2 -7
- package/dist/src/remote/RemoteRouterManager.d.ts +731 -0
- package/dist/src/remote/RemoteRouterUtils.d.ts +6 -0
- package/dist/src/remote/cityway/CitywayRemoteRouter.d.ts +109 -0
- package/dist/src/remote/deutsche-bahn/DeutscheBahnRemoteRouter.d.ts +31 -0
- package/dist/src/remote/geovelo/GeoveloRemoteRouter.d.ts +106 -0
- package/dist/src/remote/idfm/IdfmRemoteRouter.d.ts +123 -0
- package/dist/src/remote/navitia/NavitiaRemoteRouter.d.ts +34 -0
- package/dist/src/remote/navitia/types.d.ts +87 -0
- package/dist/src/remote/osrm/OsrmRemoteRouter.d.ts +70 -0
- package/dist/src/remote/otp/OtpRemoteRouter.d.ts +69 -0
- package/dist/src/remote/wemap-multi/WemapMultiRemoteRouter.d.ts +19 -0
- package/dist/src/types.d.ts +31 -0
- package/dist/src/wemap-multi/CustomGraphMap.d.ts +56 -0
- package/dist/src/wemap-multi/CustomGraphMapTester.d.ts +39 -0
- package/dist/src/wemap-multi/WemapMultiRouter.d.ts +14 -0
- package/dist/src/wemap-osm/OsmGraphUtils.d.ts +11 -0
- package/dist/tests/CommonTest.d.ts +8 -0
- package/package.json +11 -8
- package/assets/biocbon-bergere-rdc-network.osm +0 -163
- package/assets/bureaux-wemap-montpellier-network.osm +0 -174
- package/assets/components.osm +0 -146
- package/assets/elevator-models-4.osm +0 -89
- package/assets/elevator-models.osm +0 -354
- package/assets/exit-graph.osm +0 -25
- package/assets/gare-de-lest-network-pp-bounds.osm +0 -1613
- package/assets/gare-de-lyon-extract.osm +0 -174
- package/assets/geovelo-montpellier.json +0 -1144
- package/assets/horizontal-elevator.osm +0 -12
- package/assets/itinerary-deutsche-bahn-1.json +0 -368
- package/assets/itinerary-grenoble-otp-1.json +0 -1536
- package/assets/itinerary-grenoble-otp-2.json +0 -1092
- package/assets/itinerary-info-two-points-proj.osm +0 -39
- package/assets/itinerary-info-two-points.osm +0 -24
- package/assets/itinerary-lehavre-cityway-1.json +0 -6799
- package/assets/itinerary-lehavre-cityway-2.json +0 -2133
- package/assets/itinerary-lehavre-cityway-3.json +0 -12577
- package/assets/itinerary-lehavre-cityway-4.json +0 -1451
- package/assets/itinerary-lehavre-cityway-5.json +0 -5925
- package/assets/itinerary-lemans-navitia.json +0 -7768
- package/assets/itinerary-montpellier-osrm-3.json +0 -185
- package/assets/itinerary-montpellier-outdoor-without-steps.json +0 -110
- package/assets/itinerary-montpellier-outdoor.json +0 -513
- package/assets/itinerary-paris-idfm-2.json +0 -1838
- package/assets/itinerary-paris-idfm.json +0 -27727
- package/assets/itinerary-step-not-on-path-osrm.json +0 -457
- package/assets/itinerary-with-duplicate-nodes.json +0 -110
- package/assets/network-conveying-backward.osm +0 -74
- package/assets/network-elevator.osm +0 -48
- package/assets/network-escalators.osm +0 -50
- package/assets/network-simple.osm +0 -27
- package/assets/network-steps-same-level.osm +0 -283
- package/assets/network-with-modifiers.osm +0 -39
- package/assets/one-way.osm +0 -46
- package/assets/report-map-1.osm +0 -36
- package/assets/report-map-2.osm +0 -29
- package/assets/report-map-3.osm +0 -15
- package/assets/rr-wemap-multi-indoor-outdoor-indoor.json +0 -1352
- package/assets/rr-wemap-multi-indoor-outdoor.json +0 -145
- package/assets/rr-wemap-multi-multi-level.json +0 -262
- package/assets/rr-wemap-multi-outdoor-indoor.json +0 -145
- package/assets/rr-wemap-multi-outdoor-outdoor.json +0 -207
- package/assets/rr-wemap-multi-remote-indoor-indoor.json +0 -155
- package/assets/rr-wemap-multi-remote-indoor-outdoor-indoor.json +0 -668
- package/assets/rr-wemap-multi-remote-indoor-outdoor.json +0 -154
- package/assets/rr-wemap-multi-remote-outdoor-indoor.json +0 -179
- package/assets/rr-wemap-multi-remote-outdoor-outdoor.json +0 -109
- package/assets/stairs-and-exit.osm +0 -47
- package/helpers/InstructionManager.ts +0 -184
- package/helpers/InstructionManagerV1.ts +0 -95
- package/src/ItineraryInfoManager.spec.ts +0 -183
- package/src/ItineraryInfoManager.ts +0 -181
- package/src/RoutingError.ts +0 -60
- package/src/Utils.ts +0 -8
- package/src/graph/Edge.spec.ts +0 -32
- package/src/graph/Edge.ts +0 -64
- package/src/graph/Graph.spec.ts +0 -509
- package/src/graph/Graph.ts +0 -272
- package/src/graph/GraphProjection.ts +0 -15
- package/src/graph/GraphProjectionOptions.ts +0 -8
- package/src/graph/GraphRoute.spec.ts +0 -15
- package/src/graph/GraphRoute.ts +0 -43
- package/src/graph/GraphRouter.spec.ts +0 -317
- package/src/graph/GraphRouter.ts +0 -229
- package/src/graph/GraphRouterEngine.ts +0 -248
- package/src/graph/GraphRouterOptionsBuilder.ts +0 -98
- package/src/graph/NoRouteFoundError.ts +0 -39
- package/src/graph/Vertex.spec.ts +0 -42
- package/src/graph/Vertex.ts +0 -45
- package/src/model/Itinerary.spec.ts +0 -134
- package/src/model/Itinerary.ts +0 -370
- package/src/model/Leg.spec.ts +0 -107
- package/src/model/Leg.ts +0 -224
- package/src/model/LevelChange.spec.ts +0 -50
- package/src/model/LevelChange.ts +0 -14
- package/src/model/RouterRequest.ts +0 -33
- package/src/model/Step.spec.ts +0 -99
- package/src/model/Step.ts +0 -90
- package/src/model/StepExtra.ts +0 -1
- package/src/model/StepsBuilder.ts +0 -242
- package/src/model/TransitMode.spec.ts +0 -31
- package/src/model/TransitMode.ts +0 -28
- package/src/model/generateSteps.ts +0 -102
- package/src/remote/RemoteRouterManager.spec.ts +0 -178
- package/src/remote/RemoteRouterManager.ts +0 -72
- package/src/remote/RemoteRouterUtils.ts +0 -25
- package/src/remote/cityway/CitywayRemoteRouter.spec.ts +0 -122
- package/src/remote/cityway/CitywayRemoteRouter.ts +0 -435
- package/src/remote/deutsche-bahn/DeutscheBahnRemoteRouter.spec.ts +0 -52
- package/src/remote/deutsche-bahn/DeutscheBahnRemoteRouter.ts +0 -85
- package/src/remote/geovelo/GeoveloRemoteRouter.spec.ts +0 -54
- package/src/remote/geovelo/GeoveloRemoteRouter.ts +0 -293
- package/src/remote/idfm/IdfmRemoteRouter.spec.ts +0 -102
- package/src/remote/idfm/IdfmRemoteRouter.ts +0 -523
- package/src/remote/navitia/NavitiaRemoteRouter.spec.ts +0 -116
- package/src/remote/navitia/NavitiaRemoteRouter.ts +0 -445
- package/src/remote/navitia/types.ts +0 -73
- package/src/remote/osrm/OsrmRemoteRouter.spec.ts +0 -127
- package/src/remote/osrm/OsrmRemoteRouter.ts +0 -303
- package/src/remote/otp/OtpRemoteRouter.spec.ts +0 -103
- package/src/remote/otp/OtpRemoteRouter.ts +0 -223
- package/src/remote/wemap-multi/WemapMultiRemoteRouter.spec.ts +0 -103
- package/src/remote/wemap-multi/WemapMultiRemoteRouter.ts +0 -56
- package/src/types.ts +0 -32
- package/src/wemap-multi/CustomGraphMap.spec.ts +0 -40
- package/src/wemap-multi/CustomGraphMap.ts +0 -213
- package/src/wemap-multi/CustomGraphMapTester.spec.ts +0 -48
- package/src/wemap-multi/CustomGraphMapTester.ts +0 -90
- package/src/wemap-multi/WemapMultiRouter.spec.ts +0 -138
- package/src/wemap-multi/WemapMultiRouter.ts +0 -329
- package/src/wemap-osm/OsmGraphUtils.spec.ts +0 -165
- package/src/wemap-osm/OsmGraphUtils.ts +0 -173
- package/src/wemap-osm/OsmRouter.elevators.spec.ts +0 -106
- package/src/wemap-osm/OsmRouter.spec.ts +0 -292
- package/tests/CommonTest.ts +0 -78
- package/tsconfig.json +0 -3
- package/vite.config.ts +0 -4
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { Coordinates } from '@wemap/geo';
|
|
2
|
+
import { default as Itinerary } from './model/Itinerary.js';
|
|
3
|
+
import { default as Leg } from './model/Leg.js';
|
|
4
|
+
import { Step } from './model/Step.js';
|
|
5
|
+
import { default as Graph } from './graph/Graph.js';
|
|
6
|
+
import { default as GraphProjection } from './graph/GraphProjection.js';
|
|
7
|
+
export type ItineraryInfo<U extends Coordinates = Coordinates> = {
|
|
8
|
+
nextStep: Step | null;
|
|
9
|
+
previousStep: Step | null;
|
|
10
|
+
projection: GraphProjection<U>;
|
|
11
|
+
leg: Leg;
|
|
12
|
+
traveledDistance: number;
|
|
13
|
+
remainingDistance: number;
|
|
14
|
+
traveledPercentage: number;
|
|
15
|
+
remainingPercentage: number;
|
|
16
|
+
};
|
|
17
|
+
declare class ItineraryInfoManager {
|
|
18
|
+
_itinerary: Itinerary | null;
|
|
19
|
+
_graph: Graph | null;
|
|
20
|
+
_steps: Step[];
|
|
21
|
+
_coordsNextStep: (Step | null)[];
|
|
22
|
+
_coordsPreviousStep: (Step | null)[];
|
|
23
|
+
_coordsDistanceTraveled: number[];
|
|
24
|
+
_coordsLeg: Leg[];
|
|
25
|
+
_itineraryDistanceWithoutProjections: number;
|
|
26
|
+
constructor(itinerary?: Itinerary | null);
|
|
27
|
+
get itinerary(): Itinerary | null;
|
|
28
|
+
set itinerary(itinerary: Itinerary | null);
|
|
29
|
+
getInfo<U extends Coordinates = Coordinates>(position: U): ItineraryInfo<U> | null;
|
|
30
|
+
}
|
|
31
|
+
export default ItineraryInfoManager;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { StatusCode } from './StatusCode';
|
|
2
|
+
import { TravelMode } from './model/TravelMode';
|
|
3
|
+
export declare class RoutingError extends Error {
|
|
4
|
+
code: StatusCode;
|
|
5
|
+
customMapName?: string | null;
|
|
6
|
+
constructor(code?: StatusCode, message?: string);
|
|
7
|
+
static notFound(details?: string): RoutingError;
|
|
8
|
+
}
|
|
9
|
+
export declare class WemapMultiRoutingError extends RoutingError {
|
|
10
|
+
code: StatusCode;
|
|
11
|
+
mapName: string | null;
|
|
12
|
+
constructor(code: StatusCode, mapName: string | null, message?: string);
|
|
13
|
+
static notFound(mapName: string, details?: string): WemapMultiRoutingError;
|
|
14
|
+
}
|
|
15
|
+
export declare class RemoteRoutingError extends RoutingError {
|
|
16
|
+
code: StatusCode;
|
|
17
|
+
routerName: string;
|
|
18
|
+
constructor(code: StatusCode, routerName: string, message?: string);
|
|
19
|
+
static notFound(routerName: string, details?: string): RemoteRoutingError;
|
|
20
|
+
static missingApiKey(routerName: string, details?: string): RemoteRoutingError;
|
|
21
|
+
static unreachableServer(routerName: string, url: string): RemoteRoutingError;
|
|
22
|
+
static responseNotParsing(routerName: string, url: string): RemoteRoutingError;
|
|
23
|
+
static travelModeUnimplemented(routerName: string, travelMode: TravelMode): RemoteRoutingError;
|
|
24
|
+
}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
export enum StatusCode {
|
|
1
|
+
export declare enum StatusCode {
|
|
3
2
|
OK = 0,
|
|
4
3
|
CANCELLED = 1,
|
|
5
4
|
UNKNOWN = 2,
|
|
@@ -9,4 +8,4 @@ export enum StatusCode {
|
|
|
9
8
|
INTERNAL = 13,
|
|
10
9
|
UNAVAILABLE = 14,
|
|
11
10
|
UNAUTHENTICATED = 16
|
|
12
|
-
}
|
|
11
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { Level_t } from '@wemap/geo';
|
|
2
|
+
import { default as Vertex } from './Vertex.js';
|
|
3
|
+
export type EdgeProperties = {
|
|
4
|
+
name?: string;
|
|
5
|
+
externalId?: string | number;
|
|
6
|
+
isOneway?: boolean;
|
|
7
|
+
areStairs?: boolean;
|
|
8
|
+
isElevator?: boolean;
|
|
9
|
+
areEscalators?: boolean;
|
|
10
|
+
isMovingWalkway?: boolean;
|
|
11
|
+
needTicket?: boolean;
|
|
12
|
+
incline?: 'up' | 'down';
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* An Edge is a segment composed of two Vertex
|
|
16
|
+
* An edge is mostly issued from an OsmWay, but this is not always the case.
|
|
17
|
+
* For example, edges created by mapmatching.
|
|
18
|
+
*/
|
|
19
|
+
export default class Edge {
|
|
20
|
+
vertex1: Vertex;
|
|
21
|
+
vertex2: Vertex;
|
|
22
|
+
properties: EdgeProperties;
|
|
23
|
+
readonly id: number;
|
|
24
|
+
static currentUniqueId: number;
|
|
25
|
+
readonly level: Level_t;
|
|
26
|
+
/** Edge bearing from vertex1 to vertex2 */
|
|
27
|
+
readonly bearing: number;
|
|
28
|
+
readonly length: number;
|
|
29
|
+
constructor(vertex1: Vertex, vertex2: Vertex, properties?: EdgeProperties, id?: number);
|
|
30
|
+
static getEdgeByVertices(edges: Edge[], vertex1: Vertex, vertex2: Vertex): Edge | undefined;
|
|
31
|
+
reverseProperties(): void;
|
|
32
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { BoundingBox, Coordinates, UserPosition, Level_t } from '@wemap/geo';
|
|
2
|
+
import { default as Edge } from './Edge.js';
|
|
3
|
+
import { default as GraphProjection } from './GraphProjection.js';
|
|
4
|
+
import { default as Vertex } from './Vertex.js';
|
|
5
|
+
import { CompressedGeoGraphJson, GeoGraphJson } from '../types.js';
|
|
6
|
+
import { GraphProjectionOptions } from './GraphProjectionOptions.js';
|
|
7
|
+
declare class Graph {
|
|
8
|
+
readonly vertices: Vertex[];
|
|
9
|
+
readonly edges: Edge[];
|
|
10
|
+
/**
|
|
11
|
+
* exitVertices are vertices that have at least one indoor edge and one outdoor edge
|
|
12
|
+
* They are stored because the Level model cannot handle an indoor and outdoor state like [null, 1] or [null, [1,2]]
|
|
13
|
+
* This vertices are used to cover the projection case:
|
|
14
|
+
* - if projection origin is null, an exit vertex can be used
|
|
15
|
+
* - if projection origin is not null, the intersection level with an exit vertex can be used
|
|
16
|
+
*/
|
|
17
|
+
readonly exitVertices: Set<Vertex>;
|
|
18
|
+
constructor(vertices: Vertex[], edges: Edge[]);
|
|
19
|
+
getEdgeByVertices(vertex1: Vertex, vertex2: Vertex): Edge | undefined;
|
|
20
|
+
getVertexByCoords(coords: Coordinates): Vertex | undefined;
|
|
21
|
+
static getVertexByCoords(vertices: Vertex[], coords: Coordinates): Vertex | undefined;
|
|
22
|
+
getVertexByName(name: string): Vertex | undefined;
|
|
23
|
+
getEdgeByName(name: string): Edge | undefined;
|
|
24
|
+
getBoundingBox(extendedMeasure?: number): BoundingBox | null;
|
|
25
|
+
getProjection<U extends (Coordinates | UserPosition)>(origin: U, options?: GraphProjectionOptions): GraphProjection<U> | null;
|
|
26
|
+
toJson(): GeoGraphJson;
|
|
27
|
+
static fromJson(json: GeoGraphJson): Graph;
|
|
28
|
+
/** @deprecated */
|
|
29
|
+
toCompressedJson(): CompressedGeoGraphJson;
|
|
30
|
+
/** @deprecated */
|
|
31
|
+
static fromCompressedJson(json: CompressedGeoGraphJson): Graph;
|
|
32
|
+
static fromCoordinatesSegments(segments: Coordinates[][]): Graph;
|
|
33
|
+
/**
|
|
34
|
+
* Create edges From MultiLevel Itinerary for a given level
|
|
35
|
+
* @param useMultiLevelEdges use segments which intersect both levels (stairs, elevators...)
|
|
36
|
+
*/
|
|
37
|
+
getEdgesAtLevel(targetLevel: Level_t, useMultiLevelEdges?: boolean): Edge[];
|
|
38
|
+
toDetailedString(): string;
|
|
39
|
+
}
|
|
40
|
+
export default Graph;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Coordinates, UserPosition } from '@wemap/geo';
|
|
2
|
+
import { default as Edge } from './Edge.js';
|
|
3
|
+
import { default as Vertex } from './Vertex.js';
|
|
4
|
+
declare class GraphProjection<U extends Coordinates | UserPosition = Coordinates> {
|
|
5
|
+
readonly origin: U;
|
|
6
|
+
readonly distanceFromNearestElement: number;
|
|
7
|
+
readonly coords: U;
|
|
8
|
+
readonly nearestElement: Vertex | Edge;
|
|
9
|
+
constructor(origin: U, distanceFromNearestElement: number, coords: U, nearestElement: Vertex | Edge);
|
|
10
|
+
}
|
|
11
|
+
export default GraphProjection;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Coordinates } from '@wemap/geo';
|
|
2
|
+
import { default as Graph } from './Graph.js';
|
|
3
|
+
import { default as Edge } from './Edge.js';
|
|
4
|
+
import { default as Vertex } from './Vertex.js';
|
|
5
|
+
/**
|
|
6
|
+
* GraphRoute is an oriented graph
|
|
7
|
+
*/
|
|
8
|
+
declare class GraphRoute extends Graph {
|
|
9
|
+
start: Coordinates;
|
|
10
|
+
end: Coordinates;
|
|
11
|
+
vertices: Vertex[];
|
|
12
|
+
edges: Edge[];
|
|
13
|
+
edgesWeights: number[];
|
|
14
|
+
constructor(start: Coordinates, end: Coordinates, vertices: Vertex[], edges: Edge[], edgesWeights: number[]);
|
|
15
|
+
reverse(): GraphRoute;
|
|
16
|
+
static fromCoordinates(start: Coordinates, end: Coordinates, coordinates: Coordinates[]): GraphRoute;
|
|
17
|
+
get hasRoute(): boolean;
|
|
18
|
+
}
|
|
19
|
+
export default GraphRoute;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Coordinates } from '@wemap/geo';
|
|
2
|
+
import { default as Vertex } from './Vertex.js';
|
|
3
|
+
import { default as GraphRoute } from './GraphRoute.js';
|
|
4
|
+
import { default as GraphRouterEngine, GraphRouterEngineResults } from './GraphRouterEngine.js';
|
|
5
|
+
import { GraphRouterOptions } from './GraphRouterOptions.js';
|
|
6
|
+
export declare class GraphRouterResults extends GraphRouterEngineResults {
|
|
7
|
+
sourceProjection: [Coordinates, Vertex | null];
|
|
8
|
+
targetsProjections: [Coordinates, Vertex | null][];
|
|
9
|
+
constructor(engineResults: GraphRouterEngineResults, sourceProjection: [Coordinates, Vertex | null], targetsProjections: [Coordinates, Vertex | null][]);
|
|
10
|
+
static createEmpty(source: Coordinates, targets: Coordinates[]): GraphRouterResults;
|
|
11
|
+
routeVertices(to?: Coordinates | Vertex): Vertex[];
|
|
12
|
+
weightedDistance(to?: Coordinates | Vertex): number | null;
|
|
13
|
+
route(to?: Coordinates | Vertex): GraphRoute;
|
|
14
|
+
}
|
|
15
|
+
declare class GraphRouter extends GraphRouterEngine {
|
|
16
|
+
calculateShortestPathToMultipleDestinations(source: Coordinates, targets: Coordinates[], options?: GraphRouterOptions): GraphRouterResults;
|
|
17
|
+
calculateShortestPath(source: Coordinates, target: Coordinates, options?: GraphRouterOptions): GraphRouterResults;
|
|
18
|
+
getShortestTrip(waypoints: Coordinates[], options?: GraphRouterOptions, tspTempCoeff?: number): GraphRoute[];
|
|
19
|
+
}
|
|
20
|
+
export default GraphRouter;
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { default as Edge } from './Edge.js';
|
|
2
|
+
import { default as Graph } from './Graph.js';
|
|
3
|
+
import { default as GraphRoute } from './GraphRoute.js';
|
|
4
|
+
import { GraphRouterOptions } from './GraphRouterOptions.js';
|
|
5
|
+
import { default as Vertex } from './Vertex.js';
|
|
6
|
+
export declare class GraphRouterEngineResults {
|
|
7
|
+
prev: Array<Vertex | null>;
|
|
8
|
+
dist: number[];
|
|
9
|
+
source: Vertex;
|
|
10
|
+
targets: Vertex[];
|
|
11
|
+
edges: Edge[];
|
|
12
|
+
constructor(prev: Array<Vertex | null>, dist: number[], source: Vertex, targets: Vertex[], edges: Edge[]);
|
|
13
|
+
routeVertices(to?: Vertex, list?: Vertex[]): Vertex[];
|
|
14
|
+
weightedDistance(to?: Vertex): number | null;
|
|
15
|
+
route(to?: Vertex): GraphRoute;
|
|
16
|
+
toGeoJson(graph: Graph): {
|
|
17
|
+
type: string;
|
|
18
|
+
features: ({
|
|
19
|
+
type: string;
|
|
20
|
+
properties: {
|
|
21
|
+
name?: string | undefined;
|
|
22
|
+
externalId?: string | number | undefined;
|
|
23
|
+
isGate?: boolean | undefined;
|
|
24
|
+
isSubwayEntrance?: boolean | undefined;
|
|
25
|
+
subwayEntranceRef?: string | undefined;
|
|
26
|
+
level?: number | [number, number] | undefined;
|
|
27
|
+
dist: string | number;
|
|
28
|
+
prev?: number | undefined;
|
|
29
|
+
id: number;
|
|
30
|
+
};
|
|
31
|
+
geometry: {
|
|
32
|
+
type: string;
|
|
33
|
+
coordinates: number[];
|
|
34
|
+
};
|
|
35
|
+
} | {
|
|
36
|
+
type: string;
|
|
37
|
+
properties: {
|
|
38
|
+
name?: string | undefined;
|
|
39
|
+
externalId?: string | number | undefined;
|
|
40
|
+
isOneway?: boolean | undefined;
|
|
41
|
+
areStairs?: boolean | undefined;
|
|
42
|
+
isElevator?: boolean | undefined;
|
|
43
|
+
areEscalators?: boolean | undefined;
|
|
44
|
+
isMovingWalkway?: boolean | undefined;
|
|
45
|
+
needTicket?: boolean | undefined;
|
|
46
|
+
incline?: "up" | "down" | undefined;
|
|
47
|
+
level?: number | [number, number] | undefined;
|
|
48
|
+
id: number;
|
|
49
|
+
};
|
|
50
|
+
geometry: {
|
|
51
|
+
type: string;
|
|
52
|
+
coordinates: number[][];
|
|
53
|
+
};
|
|
54
|
+
})[];
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
export default class GraphRouterEngine {
|
|
58
|
+
readonly graph: Graph;
|
|
59
|
+
disabledEdges: Set<Edge>;
|
|
60
|
+
constructor(graph: Graph);
|
|
61
|
+
calculateShortestPathToMultipleDestinationsByVertex(source: Vertex, targets: Vertex[], options?: GraphRouterOptions, inputVertices?: Vertex[], inputEdges?: Edge[]): GraphRouterEngineResults;
|
|
62
|
+
calculateShortestPathByVertex(source: Vertex, target: Vertex, options?: GraphRouterOptions, inputVertices?: Vertex[], inputEdges?: Edge[]): GraphRouterEngineResults;
|
|
63
|
+
calculateComponents(): Vertex[][];
|
|
64
|
+
toGeoJson(): {
|
|
65
|
+
type: string;
|
|
66
|
+
features: {
|
|
67
|
+
type: string;
|
|
68
|
+
geometry: {
|
|
69
|
+
type: string;
|
|
70
|
+
coordinates: number[][][];
|
|
71
|
+
};
|
|
72
|
+
properties: {
|
|
73
|
+
stroke: string;
|
|
74
|
+
};
|
|
75
|
+
}[];
|
|
76
|
+
};
|
|
77
|
+
}
|
|
@@ -1,18 +1,16 @@
|
|
|
1
|
-
import Edge from './Edge.js'
|
|
2
|
-
|
|
1
|
+
import { default as Edge } from './Edge.js';
|
|
3
2
|
export type GraphRouterOptions = {
|
|
4
3
|
input: GraphRouterOptionsJson;
|
|
5
|
-
projectionMaxDistance?: number;
|
|
4
|
+
projectionMaxDistance?: number;
|
|
6
5
|
weightEdgeFn?: (edge: Edge) => number;
|
|
7
6
|
acceptEdgeFn?: (edge: Edge) => boolean;
|
|
8
7
|
useMultiLevelSegments?: boolean;
|
|
9
|
-
}
|
|
10
|
-
|
|
8
|
+
};
|
|
11
9
|
export type GraphRouterOptionsJson = {
|
|
12
10
|
avoidStairs?: boolean;
|
|
13
11
|
avoidEscalators?: boolean;
|
|
14
12
|
avoidElevators?: boolean;
|
|
15
13
|
avoidMovingWalkways?: boolean;
|
|
16
14
|
avoidTicketRestrictedAreas?: boolean;
|
|
17
|
-
projectionMaxDistance?: number;
|
|
18
|
-
}
|
|
15
|
+
projectionMaxDistance?: number;
|
|
16
|
+
};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { GraphRouterOptionsJson, GraphRouterOptions } from './GraphRouterOptions.js';
|
|
2
|
+
export default class GraphRouterOptionsBuilder {
|
|
3
|
+
avoidStairs: boolean;
|
|
4
|
+
avoidEscalators: boolean;
|
|
5
|
+
avoidElevators: boolean;
|
|
6
|
+
avoidMovingWalkways: boolean;
|
|
7
|
+
avoidTicketRestrictedAreas: boolean;
|
|
8
|
+
useMultiLevelSegments: boolean;
|
|
9
|
+
projectionMaxDistance?: number;
|
|
10
|
+
static DEFAULT: GraphRouterOptions;
|
|
11
|
+
static WITHOUT_STAIRS: GraphRouterOptions;
|
|
12
|
+
setAvoidStairs(avoidStairs: boolean): this;
|
|
13
|
+
setAvoidEscalators(avoidEscalators: boolean): this;
|
|
14
|
+
setAvoidElevators(avoidElevators: boolean): this;
|
|
15
|
+
setAvoidMovingWalkways(avoidMovingWalkways: boolean): this;
|
|
16
|
+
setAvoidTicketRestrictedAreas(avoidTicketRestrictedAreas: boolean): this;
|
|
17
|
+
setUseMultiLevelSegments(useMultiLevelSegments: boolean): this;
|
|
18
|
+
static fromJson(options: GraphRouterOptionsJson): GraphRouterOptions;
|
|
19
|
+
build(): GraphRouterOptions;
|
|
20
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Coordinates } from '@wemap/geo';
|
|
2
|
+
import { default as Vertex } from './Vertex.js';
|
|
3
|
+
declare class NoRouteFoundError extends Error {
|
|
4
|
+
start: Vertex | Coordinates;
|
|
5
|
+
end: Vertex | Coordinates | (Coordinates | Vertex)[];
|
|
6
|
+
details: string | null;
|
|
7
|
+
constructor(start: Vertex | Coordinates, end: Vertex | Coordinates | (Coordinates | Vertex)[], details?: string | null);
|
|
8
|
+
get startStr(): string;
|
|
9
|
+
get endStr(): string;
|
|
10
|
+
get message(): string;
|
|
11
|
+
}
|
|
12
|
+
export default NoRouteFoundError;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Coordinates } from '@wemap/geo';
|
|
2
|
+
import { GraphVertexJson } from '../types.js';
|
|
3
|
+
export type VertexProperties = {
|
|
4
|
+
name?: string;
|
|
5
|
+
externalId?: string | number;
|
|
6
|
+
isGate?: boolean;
|
|
7
|
+
isSubwayEntrance?: boolean;
|
|
8
|
+
subwayEntranceRef?: string;
|
|
9
|
+
};
|
|
10
|
+
export default class Vertex {
|
|
11
|
+
coords: Coordinates;
|
|
12
|
+
properties: VertexProperties;
|
|
13
|
+
id: number;
|
|
14
|
+
constructor(coords: Coordinates, properties?: VertexProperties);
|
|
15
|
+
distanceTo(other: Vertex): number;
|
|
16
|
+
bearingTo(other: Vertex): number;
|
|
17
|
+
toJson(): GraphVertexJson;
|
|
18
|
+
static fromJson(json: GraphVertexJson): Vertex;
|
|
19
|
+
}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { FeatureCollection } from 'geojson';
|
|
2
|
+
import { Coordinates, CoordinatesJson } from '@wemap/geo';
|
|
3
|
+
import { Point2_t, Vector3_t } from '@wemap/maths';
|
|
4
|
+
import { default as Graph } from '../graph/Graph.js';
|
|
5
|
+
import { default as Leg, LegJson } from './Leg.js';
|
|
6
|
+
import { TransitMode } from './TransitMode.js';
|
|
7
|
+
import { Step } from './Step.js';
|
|
8
|
+
import { default as GraphRoute } from '../graph/GraphRoute.js';
|
|
9
|
+
export type ItineraryCommon = {
|
|
10
|
+
startTime?: number;
|
|
11
|
+
endTime?: number;
|
|
12
|
+
};
|
|
13
|
+
export type ItineraryJson = {
|
|
14
|
+
transitMode: TransitMode;
|
|
15
|
+
origin: CoordinatesJson;
|
|
16
|
+
destination: CoordinatesJson;
|
|
17
|
+
distance: number;
|
|
18
|
+
duration: number;
|
|
19
|
+
legs: LegJson[];
|
|
20
|
+
} & ItineraryCommon;
|
|
21
|
+
export type ItineraryConstructor = {
|
|
22
|
+
origin: Coordinates;
|
|
23
|
+
destination: Coordinates;
|
|
24
|
+
duration?: number;
|
|
25
|
+
legs: Leg[];
|
|
26
|
+
} & ItineraryCommon;
|
|
27
|
+
/**
|
|
28
|
+
* Main attributes are:
|
|
29
|
+
* nodes: the ordered list of Node
|
|
30
|
+
* edges: the ordered list of Edge
|
|
31
|
+
* start: the start point (Coordinates)
|
|
32
|
+
* end: the end point (Coordinates)
|
|
33
|
+
* length: the route length
|
|
34
|
+
*/
|
|
35
|
+
export default class Itinerary {
|
|
36
|
+
origin: Coordinates;
|
|
37
|
+
destination: Coordinates;
|
|
38
|
+
duration: number;
|
|
39
|
+
readonly legs: Leg[];
|
|
40
|
+
private _transitMode;
|
|
41
|
+
startTime: number | null;
|
|
42
|
+
endTime: number | null;
|
|
43
|
+
private _coords;
|
|
44
|
+
private _distance;
|
|
45
|
+
constructor({ origin, destination, duration, legs, startTime, endTime }: ItineraryConstructor);
|
|
46
|
+
set coords(_: Coordinates[]);
|
|
47
|
+
get coords(): Coordinates[];
|
|
48
|
+
set steps(_: Step[]);
|
|
49
|
+
get steps(): Step[];
|
|
50
|
+
set transitMode(_: TransitMode);
|
|
51
|
+
get transitMode(): TransitMode;
|
|
52
|
+
set distance(_: number);
|
|
53
|
+
get distance(): number;
|
|
54
|
+
toGraph(): Graph;
|
|
55
|
+
static fromItineraries(...itineraries: Itinerary[]): Itinerary;
|
|
56
|
+
/**
|
|
57
|
+
* Convert lat/lng/level? points to Itinerary
|
|
58
|
+
*/
|
|
59
|
+
static fromOrderedPointsArray(points: (Point2_t | Vector3_t)[], start: (Point2_t | Vector3_t), end: (Point2_t | Vector3_t)): Itinerary;
|
|
60
|
+
/**
|
|
61
|
+
* Convert ordered Coordinates to Itinerary
|
|
62
|
+
*/
|
|
63
|
+
static fromOrderedCoordinates(coords: Coordinates[], origin: Coordinates, destination: Coordinates, transitMode?: TransitMode): Itinerary;
|
|
64
|
+
static equals(obj1: Itinerary, obj2: Itinerary): boolean;
|
|
65
|
+
equals(obj: Itinerary): boolean;
|
|
66
|
+
toJson(): ItineraryJson;
|
|
67
|
+
static fromJson(json: ItineraryJson): Itinerary;
|
|
68
|
+
static fromGraphRoute(graphRoute: GraphRoute, transitMode?: TransitMode): Itinerary;
|
|
69
|
+
multiplyLevel(levelFactor: number): void;
|
|
70
|
+
forceUnknownLevelTo0(): void;
|
|
71
|
+
toGeoJson(): FeatureCollection;
|
|
72
|
+
/**
|
|
73
|
+
* TODO: Remove it in router v3
|
|
74
|
+
* Update steps info thanks to the coordinates of the whole itinerary.
|
|
75
|
+
* This method will update:
|
|
76
|
+
* - all steps number
|
|
77
|
+
* - first/last steps
|
|
78
|
+
* - previousBearing/nextBearing/angle of first and last step of each leg
|
|
79
|
+
*/
|
|
80
|
+
updateStepsFromLegs(): void;
|
|
81
|
+
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { Coordinates, CoordinatesCompressedJson } from '@wemap/geo';
|
|
2
|
+
import { default as Graph } from '../graph/Graph.js';
|
|
3
|
+
import { default as GraphRoute } from '../graph/GraphRoute.js';
|
|
4
|
+
import { TransitMode } from './TransitMode.js';
|
|
5
|
+
import { Step, StepJson } from './Step.js';
|
|
6
|
+
export type Destination = {
|
|
7
|
+
name: string | null;
|
|
8
|
+
coords: Coordinates;
|
|
9
|
+
};
|
|
10
|
+
export type DestinationConstructor = {
|
|
11
|
+
name?: string;
|
|
12
|
+
coords: Coordinates;
|
|
13
|
+
};
|
|
14
|
+
export type DestinationJson = {
|
|
15
|
+
name?: string;
|
|
16
|
+
coords: CoordinatesCompressedJson;
|
|
17
|
+
};
|
|
18
|
+
export type TransportInfo = {
|
|
19
|
+
name: string;
|
|
20
|
+
routeColor?: string;
|
|
21
|
+
routeTextColor?: string;
|
|
22
|
+
directionName?: string;
|
|
23
|
+
};
|
|
24
|
+
type LegCommon = {
|
|
25
|
+
transitMode: TransitMode;
|
|
26
|
+
startTime?: number;
|
|
27
|
+
endTime?: number;
|
|
28
|
+
transportInfo?: TransportInfo;
|
|
29
|
+
};
|
|
30
|
+
type LegConstructor = {
|
|
31
|
+
start: DestinationConstructor;
|
|
32
|
+
end: DestinationConstructor;
|
|
33
|
+
coords: Coordinates[];
|
|
34
|
+
steps?: Step[];
|
|
35
|
+
duration?: number;
|
|
36
|
+
} & LegCommon;
|
|
37
|
+
export type LegJson = {
|
|
38
|
+
start: DestinationJson;
|
|
39
|
+
end: DestinationJson;
|
|
40
|
+
coords: CoordinatesCompressedJson[];
|
|
41
|
+
steps: StepJson[];
|
|
42
|
+
distance: number;
|
|
43
|
+
duration: number;
|
|
44
|
+
} & LegCommon;
|
|
45
|
+
export default class Leg {
|
|
46
|
+
start: Destination;
|
|
47
|
+
end: Destination;
|
|
48
|
+
coords: Coordinates[];
|
|
49
|
+
distance: number;
|
|
50
|
+
transitMode: TransitMode;
|
|
51
|
+
duration: number;
|
|
52
|
+
startTime: number | null;
|
|
53
|
+
endTime: number | null;
|
|
54
|
+
steps: Step[];
|
|
55
|
+
transportInfo: TransportInfo | null;
|
|
56
|
+
constructor({ start, end, coords, transitMode, duration, startTime, endTime, transportInfo, steps }: LegConstructor);
|
|
57
|
+
isPublicTransport(): boolean;
|
|
58
|
+
toGraph(): Graph;
|
|
59
|
+
static equals(obj1: Leg, obj2: Leg): boolean;
|
|
60
|
+
equals(obj: Leg): boolean;
|
|
61
|
+
toJson(): LegJson;
|
|
62
|
+
static fromJson(json: LegJson): Leg;
|
|
63
|
+
static fromGraphRoute(graphRoute: GraphRoute, transitMode?: TransitMode): Leg;
|
|
64
|
+
multiplyLevel(levelFactor: number): void;
|
|
65
|
+
}
|
|
66
|
+
export {};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export type LevelChangeType = 'elevator' | 'escalator' | 'stairs' | 'moving walkway' | 'incline plane';
|
|
2
|
+
export type LevelChange = {
|
|
3
|
+
direction: 'up' | 'down';
|
|
4
|
+
difference: number;
|
|
5
|
+
type?: LevelChangeType;
|
|
6
|
+
};
|
|
7
|
+
export declare function areLevelChangeEquals(l1: LevelChange, l2: LevelChange): boolean;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { Coordinates } from '@wemap/geo';
|
|
2
|
+
import { TravelMode, TravelModePreference } from './TravelMode';
|
|
3
|
+
export type RouterRequest = {
|
|
4
|
+
origin: Coordinates;
|
|
5
|
+
destination: Coordinates;
|
|
6
|
+
travelMode: TravelMode;
|
|
7
|
+
travelModePreference?: TravelModePreference;
|
|
8
|
+
provideItineraryAlternatives?: boolean;
|
|
9
|
+
waypoints?: Coordinates[];
|
|
10
|
+
optimizeWaypoints?: boolean;
|
|
11
|
+
itineraryModifiers?: {
|
|
12
|
+
avoidStairs?: boolean;
|
|
13
|
+
avoidEscalators?: boolean;
|
|
14
|
+
avoidElevators?: boolean;
|
|
15
|
+
avoidMovingWalkways?: boolean;
|
|
16
|
+
avoidTicketRestrictedAreas?: boolean;
|
|
17
|
+
};
|
|
18
|
+
output?: {
|
|
19
|
+
distanceAndDurationOnly?: boolean;
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
export declare function routerRequestToJson(routerRequest: RouterRequest): {
|
|
23
|
+
travelMode: TravelMode;
|
|
24
|
+
travelModePreference?: TravelModePreference | undefined;
|
|
25
|
+
provideItineraryAlternatives?: boolean | undefined;
|
|
26
|
+
optimizeWaypoints?: boolean | undefined;
|
|
27
|
+
itineraryModifiers?: {
|
|
28
|
+
avoidStairs?: boolean | undefined;
|
|
29
|
+
avoidEscalators?: boolean | undefined;
|
|
30
|
+
avoidElevators?: boolean | undefined;
|
|
31
|
+
avoidMovingWalkways?: boolean | undefined;
|
|
32
|
+
avoidTicketRestrictedAreas?: boolean | undefined;
|
|
33
|
+
} | undefined;
|
|
34
|
+
output?: {
|
|
35
|
+
distanceAndDurationOnly?: boolean | undefined;
|
|
36
|
+
} | undefined;
|
|
37
|
+
waypoints?: import('@wemap/geo').CoordinatesJson[] | undefined;
|
|
38
|
+
origin: import('@wemap/geo').CoordinatesJson;
|
|
39
|
+
destination: import('@wemap/geo').CoordinatesJson;
|
|
40
|
+
};
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { Coordinates, CoordinatesCompressedJson } from '@wemap/geo';
|
|
2
|
+
import { LevelChange } from './LevelChange.js';
|
|
3
|
+
import { StepExtra } from './StepExtra.js';
|
|
4
|
+
export type Step = {
|
|
5
|
+
firstStep: boolean;
|
|
6
|
+
lastStep: boolean;
|
|
7
|
+
number: number;
|
|
8
|
+
angle: number;
|
|
9
|
+
previousBearing: number;
|
|
10
|
+
nextBearing: number;
|
|
11
|
+
distance: number;
|
|
12
|
+
duration: number;
|
|
13
|
+
readonly coords: Coordinates;
|
|
14
|
+
readonly name: string | null;
|
|
15
|
+
readonly levelChange: LevelChange | null;
|
|
16
|
+
readonly extras: StepExtra | null;
|
|
17
|
+
};
|
|
18
|
+
export type StepJson = {
|
|
19
|
+
firstStep?: boolean;
|
|
20
|
+
lastStep?: boolean;
|
|
21
|
+
number: number;
|
|
22
|
+
coords: CoordinatesCompressedJson;
|
|
23
|
+
name?: string;
|
|
24
|
+
angle: number;
|
|
25
|
+
previousBearing: number;
|
|
26
|
+
nextBearing: number;
|
|
27
|
+
distance: number;
|
|
28
|
+
duration: number;
|
|
29
|
+
levelChange?: LevelChange;
|
|
30
|
+
extras?: StepExtra;
|
|
31
|
+
};
|
|
32
|
+
export type MinStepInfo = {
|
|
33
|
+
coords: Coordinates;
|
|
34
|
+
name?: string;
|
|
35
|
+
levelChange?: LevelChange;
|
|
36
|
+
extras?: StepExtra;
|
|
37
|
+
distance?: number;
|
|
38
|
+
duration?: number;
|
|
39
|
+
};
|
|
40
|
+
export declare function stepToJson(step: Step): StepJson;
|
|
41
|
+
export declare function jsonToStep(json: StepJson): Step;
|
|
42
|
+
export declare function stepEquals(step1: Step, step2: Step): boolean;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Coordinates } from '@wemap/geo';
|
|
2
|
+
import { Step, MinStepInfo } from './Step.js';
|
|
3
|
+
import { default as GraphRoute } from '../graph/GraphRoute.js';
|
|
4
|
+
export default class StepsBuilder {
|
|
5
|
+
private start;
|
|
6
|
+
private end;
|
|
7
|
+
private pathCoords;
|
|
8
|
+
private stepsInfo;
|
|
9
|
+
setStart(start: Coordinates): this;
|
|
10
|
+
setEnd(end: Coordinates): this;
|
|
11
|
+
setPathCoords(pathCoords: Coordinates[]): this;
|
|
12
|
+
setStepsInfo(stepsInfo: MinStepInfo[]): this;
|
|
13
|
+
addStepInfo(stepInfo: MinStepInfo): this;
|
|
14
|
+
setGraphRoute(graphRoute: GraphRoute): this;
|
|
15
|
+
build(): Step[];
|
|
16
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { TravelMode } from './TravelMode';
|
|
2
|
+
export type TransitMode = 'AIRPLANE' | 'BOAT' | 'BIKE' | 'BUS' | 'CAR' | 'FERRY' | 'FUNICULAR' | 'METRO' | 'MOTO' | 'TRAIN' | 'TAXI' | 'TRAM' | 'WALK' | 'MULTI' | 'UNKNOWN';
|
|
3
|
+
export type PublicTransport = 'AIRPLANE' | 'BOAT' | 'BUS' | 'FERRY' | 'FUNICULAR' | 'METRO' | 'MULTI' | 'TRAIN' | 'TRAM';
|
|
4
|
+
export declare function isTransitModePublicTransport(transitMode: TransitMode): transitMode is PublicTransport;
|
|
5
|
+
export declare function areTransitAndTravelModeConsistent(transitMode: TransitMode, travelMode: TravelMode): boolean;
|
|
File without changes
|