@caoguo/maplibre-pipeline 0.0.1
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/burst/index.cjs +708 -0
- package/dist/burst/index.cjs.map +1 -0
- package/dist/burst/index.d.cts +74 -0
- package/dist/burst/index.d.ts +74 -0
- package/dist/burst/index.js +4 -0
- package/dist/burst/index.js.map +1 -0
- package/dist/burstClass-CGMjcAYy.d.cts +161 -0
- package/dist/burstClass-Cf2p71LE.d.ts +161 -0
- package/dist/chunk-CDEYJ67B.js +80 -0
- package/dist/chunk-CDEYJ67B.js.map +1 -0
- package/dist/chunk-GCDA7KJM.js +289 -0
- package/dist/chunk-GCDA7KJM.js.map +1 -0
- package/dist/chunk-GEJRE2OR.js +351 -0
- package/dist/chunk-GEJRE2OR.js.map +1 -0
- package/dist/chunk-HCT6NSNS.js +532 -0
- package/dist/chunk-HCT6NSNS.js.map +1 -0
- package/dist/chunk-HIRNJVCV.js +13 -0
- package/dist/chunk-HIRNJVCV.js.map +1 -0
- package/dist/chunk-J3AEVXT4.js +164 -0
- package/dist/chunk-J3AEVXT4.js.map +1 -0
- package/dist/chunk-QVY4WJLM.js +256 -0
- package/dist/chunk-QVY4WJLM.js.map +1 -0
- package/dist/chunk-VA2TQWL3.js +340 -0
- package/dist/chunk-VA2TQWL3.js.map +1 -0
- package/dist/chunk-YBLESEN4.js +133 -0
- package/dist/chunk-YBLESEN4.js.map +1 -0
- package/dist/chunk-YS2ICFVK.js +101 -0
- package/dist/chunk-YS2ICFVK.js.map +1 -0
- package/dist/graph/index.cjs +382 -0
- package/dist/graph/index.cjs.map +1 -0
- package/dist/graph/index.d.cts +211 -0
- package/dist/graph/index.d.ts +211 -0
- package/dist/graph/index.js +4 -0
- package/dist/graph/index.js.map +1 -0
- package/dist/health/index.cjs +348 -0
- package/dist/health/index.cjs.map +1 -0
- package/dist/health/index.d.cts +210 -0
- package/dist/health/index.d.ts +210 -0
- package/dist/health/index.js +3 -0
- package/dist/health/index.js.map +1 -0
- package/dist/index.cjs +2295 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +10 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -0
- package/dist/leakage/index.cjs +358 -0
- package/dist/leakage/index.cjs.map +1 -0
- package/dist/leakage/index.d.cts +212 -0
- package/dist/leakage/index.d.ts +212 -0
- package/dist/leakage/index.js +3 -0
- package/dist/leakage/index.js.map +1 -0
- package/dist/nlpg/index.cjs +136 -0
- package/dist/nlpg/index.cjs.map +1 -0
- package/dist/nlpg/index.d.cts +51 -0
- package/dist/nlpg/index.d.ts +51 -0
- package/dist/nlpg/index.js +3 -0
- package/dist/nlpg/index.js.map +1 -0
- package/dist/style/index.cjs +379 -0
- package/dist/style/index.cjs.map +1 -0
- package/dist/style/index.d.cts +119 -0
- package/dist/style/index.d.ts +119 -0
- package/dist/style/index.js +4 -0
- package/dist/style/index.js.map +1 -0
- package/dist/topology/index.cjs +317 -0
- package/dist/topology/index.cjs.map +1 -0
- package/dist/topology/index.d.cts +69 -0
- package/dist/topology/index.d.ts +69 -0
- package/dist/topology/index.js +4 -0
- package/dist/topology/index.js.map +1 -0
- package/dist/types/index.cjs +15 -0
- package/dist/types/index.cjs.map +1 -0
- package/dist/types/index.d.cts +214 -0
- package/dist/types/index.d.ts +214 -0
- package/dist/types/index.js +3 -0
- package/dist/types/index.js.map +1 -0
- package/package.json +81 -0
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
import { PipelineTopologyDataset, PipelinePipe, PipelineNode } from '../types/index.cjs';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* 图邻接表构建(管线拓扑 → 双向邻接表)
|
|
5
|
+
*
|
|
6
|
+
* 输入:管网拓扑数据集(节点 + 管段)
|
|
7
|
+
* 输出:邻接表 Map<nodeId, Edge[]>
|
|
8
|
+
*
|
|
9
|
+
* Phase 1 图遍历的入口:把物理拓扑转换为图论可用的数据结构。
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* 邻接表中的"边"
|
|
14
|
+
* - 物理上一条 pipe 是两个 node 之间的连接
|
|
15
|
+
* - 邻接表中记录:pipeId、邻居节点 id、长度等
|
|
16
|
+
*/
|
|
17
|
+
interface AdjEdge {
|
|
18
|
+
pipeId: string;
|
|
19
|
+
/** 邻居节点 id(沿此边走一步到达) */
|
|
20
|
+
to: string;
|
|
21
|
+
/** 长度(m),无则 0 */
|
|
22
|
+
length: number;
|
|
23
|
+
/** 阻力/权重(用于复杂路径优选,可选) */
|
|
24
|
+
weight?: number;
|
|
25
|
+
}
|
|
26
|
+
/** 邻接表:Map<nodeId, AdjEdge[]> */
|
|
27
|
+
type AdjacencyList = Map<string, AdjEdge[]>;
|
|
28
|
+
/**
|
|
29
|
+
* 从 PipelineTopologyDataset 构建邻接表
|
|
30
|
+
*/
|
|
31
|
+
declare function buildAdjacency(dataset: PipelineTopologyDataset): AdjacencyList;
|
|
32
|
+
/**
|
|
33
|
+
* 计算单条 pipe 长度(haversine)
|
|
34
|
+
* 若 pipe 提供 geometry 则累计几何点距离,否则按 from-to 直线长度。
|
|
35
|
+
*/
|
|
36
|
+
declare function pipeLengthFromGeometry(pipe: PipelinePipe, nodes: PipelineNode[]): number;
|
|
37
|
+
/** Haversine 距离(m) */
|
|
38
|
+
declare function haversine(lng1: number, lat1: number, lng2: number, lat2: number): number;
|
|
39
|
+
/** 从邻接表拿指定节点的邻居 id 列表(去重) */
|
|
40
|
+
declare function neighborIds(adj: AdjacencyList, nodeId: string): string[];
|
|
41
|
+
/** 取出指定节点的所有边 */
|
|
42
|
+
declare function edgesOf(adj: AdjacencyList, nodeId: string): AdjEdge[];
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* BFS(广度优先遍历)
|
|
46
|
+
*
|
|
47
|
+
* 用途:
|
|
48
|
+
* - 爆管推演:下游影响范围(沿拓扑扩散)
|
|
49
|
+
* - 连通性查询:在指定层级内查找可达节点
|
|
50
|
+
*
|
|
51
|
+
* 实现要点:
|
|
52
|
+
* - 支持 visited / parents 记录
|
|
53
|
+
* - 支持 maxDepth 限制(避免极大连通分量过长)
|
|
54
|
+
* - 支持 predicate 过滤可继续遍历的邻居
|
|
55
|
+
* - 可返回"沿途经过的管段"列表(用于前端高亮)
|
|
56
|
+
*/
|
|
57
|
+
|
|
58
|
+
interface BfsResult {
|
|
59
|
+
/** 访问过的节点(不重复) */
|
|
60
|
+
visited: string[];
|
|
61
|
+
/** 父节点表:node -> 上一步到达的 node(首节点为自身) */
|
|
62
|
+
parents: Map<string, string | null>;
|
|
63
|
+
/** 起点 节点 */
|
|
64
|
+
start: string;
|
|
65
|
+
/** 终点节点(搜到即停,返回时 visited 是到终点为止的节点) */
|
|
66
|
+
end?: string;
|
|
67
|
+
}
|
|
68
|
+
interface BfsOptions {
|
|
69
|
+
/** 最大深度(边数),默认无限制 */
|
|
70
|
+
maxDepth?: number;
|
|
71
|
+
/** 是否指定终点(BFS 找到则停止) */
|
|
72
|
+
until?: (node: string) => boolean;
|
|
73
|
+
/** 在扩展邻居前过滤:false 则该方向不继续遍历 */
|
|
74
|
+
allowEdge?: (edge: AdjEdge, from: string, to: string) => boolean;
|
|
75
|
+
/** 起点本身的过滤器(如只走下游/上游) */
|
|
76
|
+
allowStart?: (node: string) => boolean;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* 标准 BFS,可指定"任意邻居是否可达"
|
|
80
|
+
*
|
|
81
|
+
* 用法:
|
|
82
|
+
* const r = bfs(adj, 'node-A');
|
|
83
|
+
* bfs(adj, 'start', { until: (n) => n === 'target' }); // 找终点
|
|
84
|
+
* bfs(adj, 'start', { allowEdge: (_, __, to) => to !== 'forbidden' });
|
|
85
|
+
*/
|
|
86
|
+
declare function bfs(adj: AdjacencyList, start: string, opts?: BfsOptions): BfsResult;
|
|
87
|
+
/**
|
|
88
|
+
* 多源 BFS(同时从多个起点扩散)
|
|
89
|
+
*
|
|
90
|
+
* 用法:爆管分析的下游影响可从多点同时推演(如多个隔离阀门的下游剩余服务区)
|
|
91
|
+
*/
|
|
92
|
+
declare function multiSourceBfs(adj: AdjacencyList, starts: string[], opts?: BfsOptions): BfsResult & {
|
|
93
|
+
sourceMap: Map<string, string>;
|
|
94
|
+
};
|
|
95
|
+
/**
|
|
96
|
+
* 反向 BFS(沿父指针回溯)
|
|
97
|
+
*
|
|
98
|
+
* 给定终点 + parents Map,可还原 BFS 路径(用于"找到的最短路径")。
|
|
99
|
+
*/
|
|
100
|
+
declare function reconstructPath(parents: Map<string, string | null>, end: string): string[];
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* DFS(深度优先遍历)
|
|
104
|
+
*
|
|
105
|
+
* 用途:
|
|
106
|
+
* - 管线编辑后构建新的连通分量
|
|
107
|
+
* - 环检测(爆管推演风险评估)
|
|
108
|
+
* - 上游路径追踪
|
|
109
|
+
*/
|
|
110
|
+
|
|
111
|
+
interface DfsOptions {
|
|
112
|
+
/** 最大深度,默认无限制 */
|
|
113
|
+
maxDepth?: number;
|
|
114
|
+
/** 邻居过滤(在遍历孩子前判断) */
|
|
115
|
+
allowEdge?: (edge: AdjEdge, from: string, to: string) => boolean;
|
|
116
|
+
/** 起点过滤器 */
|
|
117
|
+
allowStart?: (node: string) => boolean;
|
|
118
|
+
}
|
|
119
|
+
interface DfsResult {
|
|
120
|
+
visited: string[];
|
|
121
|
+
parents: Map<string, string | null>;
|
|
122
|
+
/** 是否触发了 maxDepth 截断(true=未完全遍历) */
|
|
123
|
+
truncated: boolean;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* 深度优先遍历
|
|
127
|
+
*/
|
|
128
|
+
declare function dfs(adj: AdjacencyList, start: string, opts?: DfsOptions): DfsResult;
|
|
129
|
+
/**
|
|
130
|
+
* 检测有向图中的所有环(基于 Tarjan 算法的简化版本)。
|
|
131
|
+
* 返回包含环的所有节点集合(连通分量内存在环时整分量被标记)。
|
|
132
|
+
*/
|
|
133
|
+
declare function detectCycles(adj: AdjacencyList): string[][];
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* 连通性分析
|
|
137
|
+
*
|
|
138
|
+
* 用途:
|
|
139
|
+
* - P-4 连通性高亮:选中管线后高亮上下游连通路径
|
|
140
|
+
* - 健康评估的影响范围计算
|
|
141
|
+
* - 用户问"阀门X关闭后影响哪些小区?"
|
|
142
|
+
*/
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* 连通分量(连通子图)
|
|
146
|
+
*/
|
|
147
|
+
interface ConnectedComponent {
|
|
148
|
+
/** 节点集合 */
|
|
149
|
+
nodes: string[];
|
|
150
|
+
/** 节点数 */
|
|
151
|
+
size: number;
|
|
152
|
+
/** 是否包含 source 类型节点(影响气源/水源判定) */
|
|
153
|
+
hasSource: boolean;
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* 求所有连通分量
|
|
157
|
+
*/
|
|
158
|
+
declare function findConnectedComponents(adj: AdjacencyList, nodes: PipelineNode[]): ConnectedComponent[];
|
|
159
|
+
/**
|
|
160
|
+
* 找到两个节点之间的所有路径(k 短路)
|
|
161
|
+
*
|
|
162
|
+
* 用途:阀门隔离方案中"备选路径"分析
|
|
163
|
+
* NOTE:DFS+Yen's 算法简化版,路径数 < 10 适用。
|
|
164
|
+
*/
|
|
165
|
+
declare function findPaths(adj: AdjacencyList, start: string, end: string, opts?: {
|
|
166
|
+
maxPaths?: number;
|
|
167
|
+
maxDepth?: number;
|
|
168
|
+
}): string[][];
|
|
169
|
+
/**
|
|
170
|
+
* 沿拓扑向上游找到最近的指定类型节点(默认阀门)
|
|
171
|
+
*
|
|
172
|
+
* 用途:爆管推演自动定位隔离点(PRD §4.2.4 step 1)
|
|
173
|
+
*/
|
|
174
|
+
declare function findUpstreamNode(adj: AdjacencyList, startPipeId: string, dataset: PipelineTopologyDataset, predicate: (n: PipelineNode) => boolean): PipelineNode | null;
|
|
175
|
+
/**
|
|
176
|
+
* 高亮连通路径(从起点 BFS,把沿途所有 pipe 收集起来)
|
|
177
|
+
*
|
|
178
|
+
* 用途:选中管段/节点 → 高亮上下游
|
|
179
|
+
*/
|
|
180
|
+
declare function highlightConnectivity(adj: AdjacencyList, start: string): {
|
|
181
|
+
nodeIds: Set<string>;
|
|
182
|
+
edgeIds: Set<string>;
|
|
183
|
+
};
|
|
184
|
+
|
|
185
|
+
/**
|
|
186
|
+
* 最短路径(Dijkstra)
|
|
187
|
+
*
|
|
188
|
+
* 用途:
|
|
189
|
+
* - 上游距离最近的阀门定位
|
|
190
|
+
* - 备选供气/供水路径(按管径/压力选优)
|
|
191
|
+
*/
|
|
192
|
+
|
|
193
|
+
interface ShortestPathResult {
|
|
194
|
+
distance: number;
|
|
195
|
+
path: string[];
|
|
196
|
+
found: boolean;
|
|
197
|
+
}
|
|
198
|
+
interface ShortestPathOptions {
|
|
199
|
+
/** 边权重函数:默认 1 */
|
|
200
|
+
weight?: (edge: AdjEdge) => number;
|
|
201
|
+
/** 提前终止:找到满足条件的节点立即返回 */
|
|
202
|
+
until?: (node: string, dist: number) => boolean;
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Dijkstra 最短路径
|
|
206
|
+
*
|
|
207
|
+
* 注意:当存在负权边时不可用;管网场景边权重非负,管长/管径均适用。
|
|
208
|
+
*/
|
|
209
|
+
declare function dijkstra(adj: AdjacencyList, start: string, end: string, opts?: ShortestPathOptions): ShortestPathResult;
|
|
210
|
+
|
|
211
|
+
export { type AdjEdge, type AdjacencyList, type BfsOptions, type BfsResult, type ConnectedComponent, type DfsOptions, type DfsResult, type ShortestPathOptions, type ShortestPathResult, bfs, buildAdjacency, detectCycles, dfs, dijkstra, edgesOf, findConnectedComponents, findPaths, findUpstreamNode, haversine, highlightConnectivity, multiSourceBfs, neighborIds, pipeLengthFromGeometry, reconstructPath };
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
import { PipelineTopologyDataset, PipelinePipe, PipelineNode } from '../types/index.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* 图邻接表构建(管线拓扑 → 双向邻接表)
|
|
5
|
+
*
|
|
6
|
+
* 输入:管网拓扑数据集(节点 + 管段)
|
|
7
|
+
* 输出:邻接表 Map<nodeId, Edge[]>
|
|
8
|
+
*
|
|
9
|
+
* Phase 1 图遍历的入口:把物理拓扑转换为图论可用的数据结构。
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* 邻接表中的"边"
|
|
14
|
+
* - 物理上一条 pipe 是两个 node 之间的连接
|
|
15
|
+
* - 邻接表中记录:pipeId、邻居节点 id、长度等
|
|
16
|
+
*/
|
|
17
|
+
interface AdjEdge {
|
|
18
|
+
pipeId: string;
|
|
19
|
+
/** 邻居节点 id(沿此边走一步到达) */
|
|
20
|
+
to: string;
|
|
21
|
+
/** 长度(m),无则 0 */
|
|
22
|
+
length: number;
|
|
23
|
+
/** 阻力/权重(用于复杂路径优选,可选) */
|
|
24
|
+
weight?: number;
|
|
25
|
+
}
|
|
26
|
+
/** 邻接表:Map<nodeId, AdjEdge[]> */
|
|
27
|
+
type AdjacencyList = Map<string, AdjEdge[]>;
|
|
28
|
+
/**
|
|
29
|
+
* 从 PipelineTopologyDataset 构建邻接表
|
|
30
|
+
*/
|
|
31
|
+
declare function buildAdjacency(dataset: PipelineTopologyDataset): AdjacencyList;
|
|
32
|
+
/**
|
|
33
|
+
* 计算单条 pipe 长度(haversine)
|
|
34
|
+
* 若 pipe 提供 geometry 则累计几何点距离,否则按 from-to 直线长度。
|
|
35
|
+
*/
|
|
36
|
+
declare function pipeLengthFromGeometry(pipe: PipelinePipe, nodes: PipelineNode[]): number;
|
|
37
|
+
/** Haversine 距离(m) */
|
|
38
|
+
declare function haversine(lng1: number, lat1: number, lng2: number, lat2: number): number;
|
|
39
|
+
/** 从邻接表拿指定节点的邻居 id 列表(去重) */
|
|
40
|
+
declare function neighborIds(adj: AdjacencyList, nodeId: string): string[];
|
|
41
|
+
/** 取出指定节点的所有边 */
|
|
42
|
+
declare function edgesOf(adj: AdjacencyList, nodeId: string): AdjEdge[];
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* BFS(广度优先遍历)
|
|
46
|
+
*
|
|
47
|
+
* 用途:
|
|
48
|
+
* - 爆管推演:下游影响范围(沿拓扑扩散)
|
|
49
|
+
* - 连通性查询:在指定层级内查找可达节点
|
|
50
|
+
*
|
|
51
|
+
* 实现要点:
|
|
52
|
+
* - 支持 visited / parents 记录
|
|
53
|
+
* - 支持 maxDepth 限制(避免极大连通分量过长)
|
|
54
|
+
* - 支持 predicate 过滤可继续遍历的邻居
|
|
55
|
+
* - 可返回"沿途经过的管段"列表(用于前端高亮)
|
|
56
|
+
*/
|
|
57
|
+
|
|
58
|
+
interface BfsResult {
|
|
59
|
+
/** 访问过的节点(不重复) */
|
|
60
|
+
visited: string[];
|
|
61
|
+
/** 父节点表:node -> 上一步到达的 node(首节点为自身) */
|
|
62
|
+
parents: Map<string, string | null>;
|
|
63
|
+
/** 起点 节点 */
|
|
64
|
+
start: string;
|
|
65
|
+
/** 终点节点(搜到即停,返回时 visited 是到终点为止的节点) */
|
|
66
|
+
end?: string;
|
|
67
|
+
}
|
|
68
|
+
interface BfsOptions {
|
|
69
|
+
/** 最大深度(边数),默认无限制 */
|
|
70
|
+
maxDepth?: number;
|
|
71
|
+
/** 是否指定终点(BFS 找到则停止) */
|
|
72
|
+
until?: (node: string) => boolean;
|
|
73
|
+
/** 在扩展邻居前过滤:false 则该方向不继续遍历 */
|
|
74
|
+
allowEdge?: (edge: AdjEdge, from: string, to: string) => boolean;
|
|
75
|
+
/** 起点本身的过滤器(如只走下游/上游) */
|
|
76
|
+
allowStart?: (node: string) => boolean;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* 标准 BFS,可指定"任意邻居是否可达"
|
|
80
|
+
*
|
|
81
|
+
* 用法:
|
|
82
|
+
* const r = bfs(adj, 'node-A');
|
|
83
|
+
* bfs(adj, 'start', { until: (n) => n === 'target' }); // 找终点
|
|
84
|
+
* bfs(adj, 'start', { allowEdge: (_, __, to) => to !== 'forbidden' });
|
|
85
|
+
*/
|
|
86
|
+
declare function bfs(adj: AdjacencyList, start: string, opts?: BfsOptions): BfsResult;
|
|
87
|
+
/**
|
|
88
|
+
* 多源 BFS(同时从多个起点扩散)
|
|
89
|
+
*
|
|
90
|
+
* 用法:爆管分析的下游影响可从多点同时推演(如多个隔离阀门的下游剩余服务区)
|
|
91
|
+
*/
|
|
92
|
+
declare function multiSourceBfs(adj: AdjacencyList, starts: string[], opts?: BfsOptions): BfsResult & {
|
|
93
|
+
sourceMap: Map<string, string>;
|
|
94
|
+
};
|
|
95
|
+
/**
|
|
96
|
+
* 反向 BFS(沿父指针回溯)
|
|
97
|
+
*
|
|
98
|
+
* 给定终点 + parents Map,可还原 BFS 路径(用于"找到的最短路径")。
|
|
99
|
+
*/
|
|
100
|
+
declare function reconstructPath(parents: Map<string, string | null>, end: string): string[];
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* DFS(深度优先遍历)
|
|
104
|
+
*
|
|
105
|
+
* 用途:
|
|
106
|
+
* - 管线编辑后构建新的连通分量
|
|
107
|
+
* - 环检测(爆管推演风险评估)
|
|
108
|
+
* - 上游路径追踪
|
|
109
|
+
*/
|
|
110
|
+
|
|
111
|
+
interface DfsOptions {
|
|
112
|
+
/** 最大深度,默认无限制 */
|
|
113
|
+
maxDepth?: number;
|
|
114
|
+
/** 邻居过滤(在遍历孩子前判断) */
|
|
115
|
+
allowEdge?: (edge: AdjEdge, from: string, to: string) => boolean;
|
|
116
|
+
/** 起点过滤器 */
|
|
117
|
+
allowStart?: (node: string) => boolean;
|
|
118
|
+
}
|
|
119
|
+
interface DfsResult {
|
|
120
|
+
visited: string[];
|
|
121
|
+
parents: Map<string, string | null>;
|
|
122
|
+
/** 是否触发了 maxDepth 截断(true=未完全遍历) */
|
|
123
|
+
truncated: boolean;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* 深度优先遍历
|
|
127
|
+
*/
|
|
128
|
+
declare function dfs(adj: AdjacencyList, start: string, opts?: DfsOptions): DfsResult;
|
|
129
|
+
/**
|
|
130
|
+
* 检测有向图中的所有环(基于 Tarjan 算法的简化版本)。
|
|
131
|
+
* 返回包含环的所有节点集合(连通分量内存在环时整分量被标记)。
|
|
132
|
+
*/
|
|
133
|
+
declare function detectCycles(adj: AdjacencyList): string[][];
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* 连通性分析
|
|
137
|
+
*
|
|
138
|
+
* 用途:
|
|
139
|
+
* - P-4 连通性高亮:选中管线后高亮上下游连通路径
|
|
140
|
+
* - 健康评估的影响范围计算
|
|
141
|
+
* - 用户问"阀门X关闭后影响哪些小区?"
|
|
142
|
+
*/
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* 连通分量(连通子图)
|
|
146
|
+
*/
|
|
147
|
+
interface ConnectedComponent {
|
|
148
|
+
/** 节点集合 */
|
|
149
|
+
nodes: string[];
|
|
150
|
+
/** 节点数 */
|
|
151
|
+
size: number;
|
|
152
|
+
/** 是否包含 source 类型节点(影响气源/水源判定) */
|
|
153
|
+
hasSource: boolean;
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* 求所有连通分量
|
|
157
|
+
*/
|
|
158
|
+
declare function findConnectedComponents(adj: AdjacencyList, nodes: PipelineNode[]): ConnectedComponent[];
|
|
159
|
+
/**
|
|
160
|
+
* 找到两个节点之间的所有路径(k 短路)
|
|
161
|
+
*
|
|
162
|
+
* 用途:阀门隔离方案中"备选路径"分析
|
|
163
|
+
* NOTE:DFS+Yen's 算法简化版,路径数 < 10 适用。
|
|
164
|
+
*/
|
|
165
|
+
declare function findPaths(adj: AdjacencyList, start: string, end: string, opts?: {
|
|
166
|
+
maxPaths?: number;
|
|
167
|
+
maxDepth?: number;
|
|
168
|
+
}): string[][];
|
|
169
|
+
/**
|
|
170
|
+
* 沿拓扑向上游找到最近的指定类型节点(默认阀门)
|
|
171
|
+
*
|
|
172
|
+
* 用途:爆管推演自动定位隔离点(PRD §4.2.4 step 1)
|
|
173
|
+
*/
|
|
174
|
+
declare function findUpstreamNode(adj: AdjacencyList, startPipeId: string, dataset: PipelineTopologyDataset, predicate: (n: PipelineNode) => boolean): PipelineNode | null;
|
|
175
|
+
/**
|
|
176
|
+
* 高亮连通路径(从起点 BFS,把沿途所有 pipe 收集起来)
|
|
177
|
+
*
|
|
178
|
+
* 用途:选中管段/节点 → 高亮上下游
|
|
179
|
+
*/
|
|
180
|
+
declare function highlightConnectivity(adj: AdjacencyList, start: string): {
|
|
181
|
+
nodeIds: Set<string>;
|
|
182
|
+
edgeIds: Set<string>;
|
|
183
|
+
};
|
|
184
|
+
|
|
185
|
+
/**
|
|
186
|
+
* 最短路径(Dijkstra)
|
|
187
|
+
*
|
|
188
|
+
* 用途:
|
|
189
|
+
* - 上游距离最近的阀门定位
|
|
190
|
+
* - 备选供气/供水路径(按管径/压力选优)
|
|
191
|
+
*/
|
|
192
|
+
|
|
193
|
+
interface ShortestPathResult {
|
|
194
|
+
distance: number;
|
|
195
|
+
path: string[];
|
|
196
|
+
found: boolean;
|
|
197
|
+
}
|
|
198
|
+
interface ShortestPathOptions {
|
|
199
|
+
/** 边权重函数:默认 1 */
|
|
200
|
+
weight?: (edge: AdjEdge) => number;
|
|
201
|
+
/** 提前终止:找到满足条件的节点立即返回 */
|
|
202
|
+
until?: (node: string, dist: number) => boolean;
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Dijkstra 最短路径
|
|
206
|
+
*
|
|
207
|
+
* 注意:当存在负权边时不可用;管网场景边权重非负,管长/管径均适用。
|
|
208
|
+
*/
|
|
209
|
+
declare function dijkstra(adj: AdjacencyList, start: string, end: string, opts?: ShortestPathOptions): ShortestPathResult;
|
|
210
|
+
|
|
211
|
+
export { type AdjEdge, type AdjacencyList, type BfsOptions, type BfsResult, type ConnectedComponent, type DfsOptions, type DfsResult, type ShortestPathOptions, type ShortestPathResult, bfs, buildAdjacency, detectCycles, dfs, dijkstra, edgesOf, findConnectedComponents, findPaths, findUpstreamNode, haversine, highlightConnectivity, multiSourceBfs, neighborIds, pipeLengthFromGeometry, reconstructPath };
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { detectCycles, dfs } from '../chunk-CDEYJ67B.js';
|
|
2
|
+
export { bfs, buildAdjacency, dijkstra, edgesOf, findConnectedComponents, findPaths, findUpstreamNode, haversine, highlightConnectivity, multiSourceBfs, neighborIds, pipeLengthFromGeometry, reconstructPath } from '../chunk-GCDA7KJM.js';
|
|
3
|
+
//# sourceMappingURL=index.js.map
|
|
4
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"index.js"}
|