@drawtonomy/sdk 0.7.0 → 0.9.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/dist/exporter/index.d.ts +5 -1
- package/dist/exporter/index.d.ts.map +1 -1
- package/dist/exporter/index.js +4 -0
- package/dist/exporter/index.js.map +1 -1
- package/dist/exporter/lanelet2.d.ts.map +1 -1
- package/dist/exporter/lanelet2.js +434 -2
- package/dist/exporter/lanelet2.js.map +1 -1
- package/dist/exporter/odrGeometry.d.ts +64 -0
- package/dist/exporter/odrGeometry.d.ts.map +1 -0
- package/dist/exporter/odrGeometry.js +324 -0
- package/dist/exporter/odrGeometry.js.map +1 -0
- package/dist/exporter/odrToShapes.d.ts +45 -0
- package/dist/exporter/odrToShapes.d.ts.map +1 -0
- package/dist/exporter/odrToShapes.js +1370 -0
- package/dist/exporter/odrToShapes.js.map +1 -0
- package/dist/exporter/opendrive.d.ts.map +1 -1
- package/dist/exporter/opendrive.js +547 -69
- package/dist/exporter/opendrive.js.map +1 -1
- package/dist/exporter/opendriveParser.d.ts +186 -0
- package/dist/exporter/opendriveParser.d.ts.map +1 -0
- package/dist/exporter/opendriveParser.js +426 -0
- package/dist/exporter/opendriveParser.js.map +1 -0
- package/dist/exporter/osmToShapes.d.ts +52 -3
- package/dist/exporter/osmToShapes.d.ts.map +1 -1
- package/dist/exporter/osmToShapes.js +208 -5
- package/dist/exporter/osmToShapes.js.map +1 -1
- package/dist/exporter/projection.d.ts +36 -0
- package/dist/exporter/projection.d.ts.map +1 -0
- package/dist/exporter/projection.js +64 -0
- package/dist/exporter/projection.js.map +1 -0
- package/dist/types.d.ts +38 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,426 @@
|
|
|
1
|
+
// OpenDRIVE (.xodr XML) parser.
|
|
2
|
+
//
|
|
3
|
+
// Parses an OpenDRIVE document into an intermediate model (`OdrMap`) that the
|
|
4
|
+
// shape converter (`odrToShapes`) consumes. The parser covers the subset of
|
|
5
|
+
// the standard needed to reconstruct the 2D road network:
|
|
6
|
+
// - <header> : revMajor/revMinor + <geoReference> PROJ string
|
|
7
|
+
// - <road> : id/name/length/junction, <link>, <planView>
|
|
8
|
+
// geometries (line/arc/spiral/paramPoly3/poly3),
|
|
9
|
+
// <lanes> (laneOffset + laneSections with widths and
|
|
10
|
+
// road marks), minimal <signals>/<objects> records
|
|
11
|
+
// - <junction> : connections with laneLinks
|
|
12
|
+
//
|
|
13
|
+
// Like the Lanelet2 OSM parser, this is hand-written so it works in a plain
|
|
14
|
+
// Node runtime without a DOM. When a global `DOMParser` is available (browser
|
|
15
|
+
// or jsdom) it is used for robustness; otherwise a regex-based fallback
|
|
16
|
+
// parses the same XML subset. Unknown elements are ignored; missing optional
|
|
17
|
+
// attributes get defaults; malformed required attributes throw with road id
|
|
18
|
+
// context so problems are easy to locate in large files.
|
|
19
|
+
function getDomParser() {
|
|
20
|
+
const g = globalThis;
|
|
21
|
+
return typeof g.DOMParser === 'function' ? g.DOMParser : null;
|
|
22
|
+
}
|
|
23
|
+
function domToXmlNode(el) {
|
|
24
|
+
const attrs = {};
|
|
25
|
+
for (let i = 0; i < el.attributes.length; i++) {
|
|
26
|
+
const a = el.attributes[i];
|
|
27
|
+
attrs[a.name] = a.value;
|
|
28
|
+
}
|
|
29
|
+
const children = [];
|
|
30
|
+
let text = '';
|
|
31
|
+
el.childNodes.forEach(child => {
|
|
32
|
+
if (child.nodeType === 1) {
|
|
33
|
+
children.push(domToXmlNode(child));
|
|
34
|
+
}
|
|
35
|
+
else if (child.nodeType === 3 || child.nodeType === 4) {
|
|
36
|
+
// Text or CDATA section.
|
|
37
|
+
text += child.nodeValue ?? '';
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
return { name: el.tagName, attrs, children, text };
|
|
41
|
+
}
|
|
42
|
+
const ATTR_RE = /([a-zA-Z_][\w:.-]*)\s*=\s*(?:"([^"]*)"|'([^']*)')/g;
|
|
43
|
+
function parseAttributes(attrString) {
|
|
44
|
+
const attrs = {};
|
|
45
|
+
ATTR_RE.lastIndex = 0;
|
|
46
|
+
let m;
|
|
47
|
+
while ((m = ATTR_RE.exec(attrString)) !== null) {
|
|
48
|
+
const value = m[2] !== undefined ? m[2] : m[3];
|
|
49
|
+
attrs[m[1]] = decodeXmlEntities(value);
|
|
50
|
+
}
|
|
51
|
+
return attrs;
|
|
52
|
+
}
|
|
53
|
+
function decodeXmlEntities(s) {
|
|
54
|
+
return s
|
|
55
|
+
.replace(/</g, '<')
|
|
56
|
+
.replace(/>/g, '>')
|
|
57
|
+
.replace(/"/g, '"')
|
|
58
|
+
.replace(/'/g, "'")
|
|
59
|
+
.replace(/&#(\d+);/g, (_, code) => String.fromCharCode(parseInt(code, 10)))
|
|
60
|
+
.replace(/&#x([0-9a-fA-F]+);/g, (_, code) => String.fromCharCode(parseInt(code, 16)))
|
|
61
|
+
.replace(/&/g, '&');
|
|
62
|
+
}
|
|
63
|
+
function encodeXmlText(s) {
|
|
64
|
+
return s.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Minimal XML parser supporting elements, attributes, self-closing tags,
|
|
68
|
+
* nested elements, and text/CDATA content. CDATA sections are converted to
|
|
69
|
+
* entity-escaped text first so their content survives (needed for
|
|
70
|
+
* <geoReference><![CDATA[+proj=...]]></geoReference>).
|
|
71
|
+
*/
|
|
72
|
+
function parseXmlTreeFallback(xml) {
|
|
73
|
+
const src = xml
|
|
74
|
+
.replace(/<!\[CDATA\[([\s\S]*?)\]\]>/g, (_, content) => encodeXmlText(content))
|
|
75
|
+
.replace(/<\?[\s\S]*?\?>/g, '')
|
|
76
|
+
.replace(/<!--[\s\S]*?-->/g, '')
|
|
77
|
+
.replace(/<!DOCTYPE[\s\S]*?>/g, '');
|
|
78
|
+
const tagRe = /<\/?\s*([a-zA-Z_][\w:.-]*)((?:[^<>"']|"[^"]*"|'[^']*')*)\/?\s*>/g;
|
|
79
|
+
const stack = [];
|
|
80
|
+
let root = null;
|
|
81
|
+
let lastEnd = 0;
|
|
82
|
+
let m;
|
|
83
|
+
while ((m = tagRe.exec(src)) !== null) {
|
|
84
|
+
// Text between the previous tag and this one belongs to the open element.
|
|
85
|
+
if (m.index > lastEnd && stack.length > 0) {
|
|
86
|
+
const raw = src.slice(lastEnd, m.index);
|
|
87
|
+
if (raw.trim().length > 0) {
|
|
88
|
+
stack[stack.length - 1].text += decodeXmlEntities(raw);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
lastEnd = m.index + m[0].length;
|
|
92
|
+
const fullTag = m[0];
|
|
93
|
+
const name = m[1];
|
|
94
|
+
const rest = m[2];
|
|
95
|
+
const isClosing = fullTag.startsWith('</');
|
|
96
|
+
const isSelfClosing = fullTag.endsWith('/>');
|
|
97
|
+
if (isClosing) {
|
|
98
|
+
const top = stack.pop();
|
|
99
|
+
if (!top || top.name !== name) {
|
|
100
|
+
// Tolerate slight mismatches by ignoring stray closers.
|
|
101
|
+
continue;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
const el = { name, attrs: parseAttributes(rest), children: [], text: '' };
|
|
106
|
+
const parent = stack[stack.length - 1];
|
|
107
|
+
if (parent)
|
|
108
|
+
parent.children.push(el);
|
|
109
|
+
else
|
|
110
|
+
root = el;
|
|
111
|
+
if (!isSelfClosing)
|
|
112
|
+
stack.push(el);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
return root;
|
|
116
|
+
}
|
|
117
|
+
function parseXmlTree(xml) {
|
|
118
|
+
const DOMParserImpl = getDomParser();
|
|
119
|
+
if (DOMParserImpl) {
|
|
120
|
+
try {
|
|
121
|
+
const doc = new DOMParserImpl().parseFromString(xml, 'text/xml');
|
|
122
|
+
const rootEl = doc.documentElement;
|
|
123
|
+
if (rootEl && rootEl.tagName !== 'parsererror') {
|
|
124
|
+
return domToXmlNode(rootEl);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
catch {
|
|
128
|
+
// Fall through to the hand-rolled parser.
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
return parseXmlTreeFallback(xml);
|
|
132
|
+
}
|
|
133
|
+
// ---------------------------------------------------------------------------
|
|
134
|
+
// Model extraction helpers
|
|
135
|
+
// ---------------------------------------------------------------------------
|
|
136
|
+
function children(el, name) {
|
|
137
|
+
return el.children.filter(c => c.name === name);
|
|
138
|
+
}
|
|
139
|
+
function child(el, name) {
|
|
140
|
+
return el.children.find(c => c.name === name);
|
|
141
|
+
}
|
|
142
|
+
/** Parse an optional float attribute with a default. */
|
|
143
|
+
function numAttr(el, name, fallback) {
|
|
144
|
+
const raw = el.attrs[name];
|
|
145
|
+
if (raw === undefined || raw === '')
|
|
146
|
+
return fallback;
|
|
147
|
+
const v = parseFloat(raw);
|
|
148
|
+
return Number.isFinite(v) ? v : fallback;
|
|
149
|
+
}
|
|
150
|
+
/** Parse a required float attribute; throw with context when missing or malformed. */
|
|
151
|
+
function requireNumAttr(el, name, context) {
|
|
152
|
+
const raw = el.attrs[name];
|
|
153
|
+
const v = raw === undefined ? NaN : parseFloat(raw);
|
|
154
|
+
if (!Number.isFinite(v)) {
|
|
155
|
+
throw new Error(`OpenDRIVE parse error: ${context}: missing or malformed attribute "${name}"`);
|
|
156
|
+
}
|
|
157
|
+
return v;
|
|
158
|
+
}
|
|
159
|
+
function requireStrAttr(el, name, context) {
|
|
160
|
+
const raw = el.attrs[name];
|
|
161
|
+
if (raw === undefined || raw === '') {
|
|
162
|
+
throw new Error(`OpenDRIVE parse error: ${context}: missing attribute "${name}"`);
|
|
163
|
+
}
|
|
164
|
+
return raw;
|
|
165
|
+
}
|
|
166
|
+
function parseContactPoint(raw) {
|
|
167
|
+
return raw === 'start' || raw === 'end' ? raw : undefined;
|
|
168
|
+
}
|
|
169
|
+
/** Collect direct <userData code value> children into a code -> value map. */
|
|
170
|
+
function parseUserData(el) {
|
|
171
|
+
const out = {};
|
|
172
|
+
for (const ud of children(el, 'userData')) {
|
|
173
|
+
const code = ud.attrs.code;
|
|
174
|
+
if (code === undefined)
|
|
175
|
+
continue;
|
|
176
|
+
out[code] = ud.attrs.value ?? '';
|
|
177
|
+
}
|
|
178
|
+
return out;
|
|
179
|
+
}
|
|
180
|
+
function parseValidity(el) {
|
|
181
|
+
return children(el, 'validity').map(v => ({
|
|
182
|
+
fromLane: numAttr(v, 'fromLane', 0),
|
|
183
|
+
toLane: numAttr(v, 'toLane', 0),
|
|
184
|
+
}));
|
|
185
|
+
}
|
|
186
|
+
function parseRoadLink(el, context) {
|
|
187
|
+
if (!el)
|
|
188
|
+
return undefined;
|
|
189
|
+
const elementId = requireStrAttr(el, 'elementId', context);
|
|
190
|
+
const elementType = el.attrs.elementType === 'junction' ? 'junction' : 'road';
|
|
191
|
+
return { elementType, elementId, contactPoint: parseContactPoint(el.attrs.contactPoint) };
|
|
192
|
+
}
|
|
193
|
+
function parseGeometry(el, roadId) {
|
|
194
|
+
const ctx = `road ${roadId}, <geometry>`;
|
|
195
|
+
const base = {
|
|
196
|
+
s: requireNumAttr(el, 's', ctx),
|
|
197
|
+
x: requireNumAttr(el, 'x', ctx),
|
|
198
|
+
y: requireNumAttr(el, 'y', ctx),
|
|
199
|
+
hdg: requireNumAttr(el, 'hdg', ctx),
|
|
200
|
+
length: requireNumAttr(el, 'length', ctx),
|
|
201
|
+
};
|
|
202
|
+
const ctxAt = `road ${roadId}, geometry at s=${base.s}`;
|
|
203
|
+
for (const prim of el.children) {
|
|
204
|
+
switch (prim.name) {
|
|
205
|
+
case 'line':
|
|
206
|
+
return { ...base, kind: 'line' };
|
|
207
|
+
case 'arc':
|
|
208
|
+
return { ...base, kind: 'arc', curvature: requireNumAttr(prim, 'curvature', ctxAt) };
|
|
209
|
+
case 'spiral':
|
|
210
|
+
return {
|
|
211
|
+
...base,
|
|
212
|
+
kind: 'spiral',
|
|
213
|
+
curvStart: requireNumAttr(prim, 'curvStart', ctxAt),
|
|
214
|
+
curvEnd: requireNumAttr(prim, 'curvEnd', ctxAt),
|
|
215
|
+
};
|
|
216
|
+
case 'paramPoly3':
|
|
217
|
+
return {
|
|
218
|
+
...base,
|
|
219
|
+
kind: 'paramPoly3',
|
|
220
|
+
aU: requireNumAttr(prim, 'aU', ctxAt),
|
|
221
|
+
bU: requireNumAttr(prim, 'bU', ctxAt),
|
|
222
|
+
cU: requireNumAttr(prim, 'cU', ctxAt),
|
|
223
|
+
dU: requireNumAttr(prim, 'dU', ctxAt),
|
|
224
|
+
aV: requireNumAttr(prim, 'aV', ctxAt),
|
|
225
|
+
bV: requireNumAttr(prim, 'bV', ctxAt),
|
|
226
|
+
cV: requireNumAttr(prim, 'cV', ctxAt),
|
|
227
|
+
dV: requireNumAttr(prim, 'dV', ctxAt),
|
|
228
|
+
// OpenDRIVE < 1.5 had no pRange attribute; "normalized" is the default.
|
|
229
|
+
pRange: prim.attrs.pRange === 'arcLength' ? 'arcLength' : 'normalized',
|
|
230
|
+
};
|
|
231
|
+
case 'poly3':
|
|
232
|
+
return {
|
|
233
|
+
...base,
|
|
234
|
+
kind: 'poly3',
|
|
235
|
+
a: requireNumAttr(prim, 'a', ctxAt),
|
|
236
|
+
b: requireNumAttr(prim, 'b', ctxAt),
|
|
237
|
+
c: requireNumAttr(prim, 'c', ctxAt),
|
|
238
|
+
d: requireNumAttr(prim, 'd', ctxAt),
|
|
239
|
+
};
|
|
240
|
+
default:
|
|
241
|
+
// Unknown child element — keep scanning for a supported primitive.
|
|
242
|
+
break;
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
throw new Error(`OpenDRIVE parse error: ${ctxAt}: no supported geometry primitive (line/arc/spiral/paramPoly3/poly3)`);
|
|
246
|
+
}
|
|
247
|
+
function parseLane(el, roadId) {
|
|
248
|
+
const ctx = `road ${roadId}, <lane>`;
|
|
249
|
+
const id = requireNumAttr(el, 'id', ctx);
|
|
250
|
+
if (!Number.isInteger(id)) {
|
|
251
|
+
throw new Error(`OpenDRIVE parse error: ${ctx}: lane id "${el.attrs.id}" is not an integer`);
|
|
252
|
+
}
|
|
253
|
+
const linkEl = child(el, 'link');
|
|
254
|
+
const predecessorIds = [];
|
|
255
|
+
const successorIds = [];
|
|
256
|
+
if (linkEl) {
|
|
257
|
+
for (const p of children(linkEl, 'predecessor'))
|
|
258
|
+
predecessorIds.push(requireNumAttr(p, 'id', ctx));
|
|
259
|
+
for (const s of children(linkEl, 'successor'))
|
|
260
|
+
successorIds.push(requireNumAttr(s, 'id', ctx));
|
|
261
|
+
}
|
|
262
|
+
const widths = children(el, 'width').map(w => ({
|
|
263
|
+
sOffset: numAttr(w, 'sOffset', 0),
|
|
264
|
+
a: numAttr(w, 'a', 0),
|
|
265
|
+
b: numAttr(w, 'b', 0),
|
|
266
|
+
c: numAttr(w, 'c', 0),
|
|
267
|
+
d: numAttr(w, 'd', 0),
|
|
268
|
+
}));
|
|
269
|
+
widths.sort((a, b) => a.sOffset - b.sOffset);
|
|
270
|
+
const roadMarks = children(el, 'roadMark').map(rm => ({
|
|
271
|
+
sOffset: numAttr(rm, 'sOffset', 0),
|
|
272
|
+
type: rm.attrs.type ?? 'none',
|
|
273
|
+
color: rm.attrs.color,
|
|
274
|
+
}));
|
|
275
|
+
roadMarks.sort((a, b) => a.sOffset - b.sOffset);
|
|
276
|
+
return {
|
|
277
|
+
id,
|
|
278
|
+
type: el.attrs.type ?? 'none',
|
|
279
|
+
level: el.attrs.level === 'true',
|
|
280
|
+
predecessorIds,
|
|
281
|
+
successorIds,
|
|
282
|
+
widths,
|
|
283
|
+
roadMarks,
|
|
284
|
+
};
|
|
285
|
+
}
|
|
286
|
+
function parseLaneSection(el, roadId) {
|
|
287
|
+
const s = numAttr(el, 's', 0);
|
|
288
|
+
const parseSide = (sideName) => {
|
|
289
|
+
const sideEl = child(el, sideName);
|
|
290
|
+
if (!sideEl)
|
|
291
|
+
return [];
|
|
292
|
+
return children(sideEl, 'lane').map(l => parseLane(l, roadId));
|
|
293
|
+
};
|
|
294
|
+
const left = parseSide('left');
|
|
295
|
+
const center = parseSide('center');
|
|
296
|
+
const right = parseSide('right');
|
|
297
|
+
// Sort inner-to-outer so cumulative width accumulation walks away from the
|
|
298
|
+
// reference line: left = 1, 2, 3, ...; right = -1, -2, -3, ...
|
|
299
|
+
left.sort((a, b) => a.id - b.id);
|
|
300
|
+
right.sort((a, b) => b.id - a.id);
|
|
301
|
+
return { s, left, center, right };
|
|
302
|
+
}
|
|
303
|
+
function parseRoad(el) {
|
|
304
|
+
const id = requireStrAttr(el, 'id', '<road>');
|
|
305
|
+
const ctx = `road ${id}`;
|
|
306
|
+
const length = requireNumAttr(el, 'length', ctx);
|
|
307
|
+
const linkEl = child(el, 'link');
|
|
308
|
+
const predecessor = linkEl ? parseRoadLink(child(linkEl, 'predecessor'), `${ctx} <predecessor>`) : undefined;
|
|
309
|
+
const successor = linkEl ? parseRoadLink(child(linkEl, 'successor'), `${ctx} <successor>`) : undefined;
|
|
310
|
+
const planViewEl = child(el, 'planView');
|
|
311
|
+
const planView = planViewEl ? children(planViewEl, 'geometry').map(g => parseGeometry(g, id)) : [];
|
|
312
|
+
planView.sort((a, b) => a.s - b.s);
|
|
313
|
+
const lanesEl = child(el, 'lanes');
|
|
314
|
+
const laneOffsets = lanesEl
|
|
315
|
+
? children(lanesEl, 'laneOffset').map(lo => ({
|
|
316
|
+
s: numAttr(lo, 's', 0),
|
|
317
|
+
a: numAttr(lo, 'a', 0),
|
|
318
|
+
b: numAttr(lo, 'b', 0),
|
|
319
|
+
c: numAttr(lo, 'c', 0),
|
|
320
|
+
d: numAttr(lo, 'd', 0),
|
|
321
|
+
}))
|
|
322
|
+
: [];
|
|
323
|
+
laneOffsets.sort((a, b) => a.s - b.s);
|
|
324
|
+
const laneSections = lanesEl
|
|
325
|
+
? children(lanesEl, 'laneSection').map(ls => parseLaneSection(ls, id))
|
|
326
|
+
: [];
|
|
327
|
+
laneSections.sort((a, b) => a.s - b.s);
|
|
328
|
+
const elevationEl = child(el, 'elevationProfile');
|
|
329
|
+
const hasElevation = !!elevationEl && children(elevationEl, 'elevation').some(e => {
|
|
330
|
+
// A single flat elevation record (a=b=c=d=0) carries no height information.
|
|
331
|
+
return numAttr(e, 'a', 0) !== 0 || numAttr(e, 'b', 0) !== 0 || numAttr(e, 'c', 0) !== 0 || numAttr(e, 'd', 0) !== 0;
|
|
332
|
+
});
|
|
333
|
+
const lateralEl = child(el, 'lateralProfile');
|
|
334
|
+
const hasSuperelevation = !!lateralEl && (children(lateralEl, 'superelevation').length > 0 || children(lateralEl, 'shape').length > 0);
|
|
335
|
+
const signalsEl = child(el, 'signals');
|
|
336
|
+
const signals = signalsEl
|
|
337
|
+
? children(signalsEl, 'signal').map(sig => ({
|
|
338
|
+
id: sig.attrs.id ?? '',
|
|
339
|
+
s: numAttr(sig, 's', 0),
|
|
340
|
+
t: numAttr(sig, 't', 0),
|
|
341
|
+
type: sig.attrs.type ?? '',
|
|
342
|
+
subtype: sig.attrs.subtype ?? '',
|
|
343
|
+
name: sig.attrs.name ?? '',
|
|
344
|
+
width: numAttr(sig, 'width', 0),
|
|
345
|
+
height: numAttr(sig, 'height', 0),
|
|
346
|
+
validity: parseValidity(sig),
|
|
347
|
+
userData: parseUserData(sig),
|
|
348
|
+
}))
|
|
349
|
+
: [];
|
|
350
|
+
const signalReferences = signalsEl
|
|
351
|
+
? children(signalsEl, 'signalReference').map(ref => ({
|
|
352
|
+
id: ref.attrs.id ?? '',
|
|
353
|
+
s: numAttr(ref, 's', 0),
|
|
354
|
+
t: numAttr(ref, 't', 0),
|
|
355
|
+
validity: parseValidity(ref),
|
|
356
|
+
}))
|
|
357
|
+
: [];
|
|
358
|
+
const objectsEl = child(el, 'objects');
|
|
359
|
+
const objects = objectsEl
|
|
360
|
+
? children(objectsEl, 'object').map(obj => ({
|
|
361
|
+
id: obj.attrs.id ?? '',
|
|
362
|
+
s: numAttr(obj, 's', 0),
|
|
363
|
+
t: numAttr(obj, 't', 0),
|
|
364
|
+
type: obj.attrs.type ?? '',
|
|
365
|
+
subtype: obj.attrs.subtype,
|
|
366
|
+
name: obj.attrs.name ?? '',
|
|
367
|
+
hdg: numAttr(obj, 'hdg', 0),
|
|
368
|
+
length: numAttr(obj, 'length', 0),
|
|
369
|
+
width: numAttr(obj, 'width', 0),
|
|
370
|
+
userData: parseUserData(obj),
|
|
371
|
+
}))
|
|
372
|
+
: [];
|
|
373
|
+
return {
|
|
374
|
+
id,
|
|
375
|
+
name: el.attrs.name ?? '',
|
|
376
|
+
length,
|
|
377
|
+
junction: el.attrs.junction ?? '-1',
|
|
378
|
+
predecessor,
|
|
379
|
+
successor,
|
|
380
|
+
planView,
|
|
381
|
+
laneOffsets,
|
|
382
|
+
laneSections,
|
|
383
|
+
signals,
|
|
384
|
+
signalReferences,
|
|
385
|
+
objects,
|
|
386
|
+
userData: parseUserData(el),
|
|
387
|
+
hasElevation,
|
|
388
|
+
hasSuperelevation,
|
|
389
|
+
};
|
|
390
|
+
}
|
|
391
|
+
function parseJunction(el) {
|
|
392
|
+
const id = requireStrAttr(el, 'id', '<junction>');
|
|
393
|
+
const connections = children(el, 'connection').map(conn => {
|
|
394
|
+
const ctx = `junction ${id}, <connection>`;
|
|
395
|
+
return {
|
|
396
|
+
id: conn.attrs.id ?? '',
|
|
397
|
+
incomingRoad: requireStrAttr(conn, 'incomingRoad', ctx),
|
|
398
|
+
connectingRoad: requireStrAttr(conn, 'connectingRoad', ctx),
|
|
399
|
+
contactPoint: parseContactPoint(conn.attrs.contactPoint) ?? 'start',
|
|
400
|
+
laneLinks: children(conn, 'laneLink').map(ll => ({
|
|
401
|
+
from: requireNumAttr(ll, 'from', ctx),
|
|
402
|
+
to: requireNumAttr(ll, 'to', ctx),
|
|
403
|
+
})),
|
|
404
|
+
};
|
|
405
|
+
});
|
|
406
|
+
return { id, name: el.attrs.name ?? '', connections };
|
|
407
|
+
}
|
|
408
|
+
/** Parse an OpenDRIVE XML string into the intermediate `OdrMap` model. */
|
|
409
|
+
export function parseOpenDriveXml(xmlString) {
|
|
410
|
+
const root = parseXmlTree(xmlString);
|
|
411
|
+
if (!root || root.name !== 'OpenDRIVE') {
|
|
412
|
+
throw new Error('OpenDRIVE parse error: missing <OpenDRIVE> root element');
|
|
413
|
+
}
|
|
414
|
+
const headerEl = child(root, 'header');
|
|
415
|
+
const geoRefEl = headerEl ? child(headerEl, 'geoReference') : undefined;
|
|
416
|
+
const geoReference = geoRefEl ? geoRefEl.text.trim() || null : null;
|
|
417
|
+
const header = {
|
|
418
|
+
revMajor: headerEl ? numAttr(headerEl, 'revMajor', 1) : 1,
|
|
419
|
+
revMinor: headerEl ? numAttr(headerEl, 'revMinor', 0) : 0,
|
|
420
|
+
geoReference,
|
|
421
|
+
};
|
|
422
|
+
const roads = children(root, 'road').map(parseRoad);
|
|
423
|
+
const junctions = children(root, 'junction').map(parseJunction);
|
|
424
|
+
return { header, roads, junctions, rawXml: xmlString };
|
|
425
|
+
}
|
|
426
|
+
//# sourceMappingURL=opendriveParser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"opendriveParser.js","sourceRoot":"","sources":["../../src/exporter/opendriveParser.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,EAAE;AACF,8EAA8E;AAC9E,4EAA4E;AAC5E,0DAA0D;AAC1D,yEAAyE;AACzE,sEAAsE;AACtE,yEAAyE;AACzE,6EAA6E;AAC7E,2EAA2E;AAC3E,qDAAqD;AACrD,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,wEAAwE;AACxE,6EAA6E;AAC7E,4EAA4E;AAC5E,yDAAyD;AAqNzD,SAAS,YAAY;IACnB,MAAM,CAAC,GAAG,UAAsD,CAAA;IAChE,OAAO,OAAO,CAAC,CAAC,SAAS,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAA;AAC/D,CAAC;AAED,SAAS,YAAY,CAAC,EAAW;IAC/B,MAAM,KAAK,GAA2B,EAAE,CAAA;IACxC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9C,MAAM,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;QAC1B,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAA;IACzB,CAAC;IACD,MAAM,QAAQ,GAAc,EAAE,CAAA;IAC9B,IAAI,IAAI,GAAG,EAAE,CAAA;IACb,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QAC5B,IAAI,KAAK,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;YACzB,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,KAAgB,CAAC,CAAC,CAAA;QAC/C,CAAC;aAAM,IAAI,KAAK,CAAC,QAAQ,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;YACxD,yBAAyB;YACzB,IAAI,IAAI,KAAK,CAAC,SAAS,IAAI,EAAE,CAAA;QAC/B,CAAC;IACH,CAAC,CAAC,CAAA;IACF,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAA;AACpD,CAAC;AAED,MAAM,OAAO,GAAG,oDAAoD,CAAA;AAEpE,SAAS,eAAe,CAAC,UAAkB;IACzC,MAAM,KAAK,GAA2B,EAAE,CAAA;IACxC,OAAO,CAAC,SAAS,GAAG,CAAC,CAAA;IACrB,IAAI,CAAyB,CAAA;IAC7B,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAC/C,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAC9C,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAA;IACxC,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,SAAS,iBAAiB,CAAC,CAAS;IAClC,OAAO,CAAC;SACL,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;SACrB,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;SACrB,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;SACvB,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;SACvB,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;SAC1E,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;SACpF,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAA;AAC3B,CAAC;AAED,SAAS,aAAa,CAAC,CAAS;IAC9B,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;AAC7E,CAAC;AAED;;;;;GAKG;AACH,SAAS,oBAAoB,CAAC,GAAW;IACvC,MAAM,GAAG,GAAG,GAAG;SACZ,OAAO,CAAC,6BAA6B,EAAE,CAAC,CAAC,EAAE,OAAe,EAAE,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;SACtF,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC;SAC9B,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;SAC/B,OAAO,CAAC,qBAAqB,EAAE,EAAE,CAAC,CAAA;IAErC,MAAM,KAAK,GAAG,kEAAkE,CAAA;IAChF,MAAM,KAAK,GAAc,EAAE,CAAA;IAC3B,IAAI,IAAI,GAAmB,IAAI,CAAA;IAC/B,IAAI,OAAO,GAAG,CAAC,CAAA;IACf,IAAI,CAAyB,CAAA;IAE7B,OAAO,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QACtC,0EAA0E;QAC1E,IAAI,CAAC,CAAC,KAAK,GAAG,OAAO,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1C,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAA;YACvC,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1B,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,iBAAiB,CAAC,GAAG,CAAC,CAAA;YACxD,CAAC;QACH,CAAC;QACD,OAAO,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAA;QAE/B,MAAM,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;QACpB,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;QACjB,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;QACjB,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;QAC1C,MAAM,aAAa,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;QAE5C,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,EAAE,CAAA;YACvB,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;gBAC9B,wDAAwD;gBACxD,SAAQ;YACV,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,EAAE,GAAY,EAAE,IAAI,EAAE,KAAK,EAAE,eAAe,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAA;YAClF,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;YACtC,IAAI,MAAM;gBAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;;gBAC/B,IAAI,GAAG,EAAE,CAAA;YACd,IAAI,CAAC,aAAa;gBAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACpC,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AAED,SAAS,YAAY,CAAC,GAAW;IAC/B,MAAM,aAAa,GAAG,YAAY,EAAE,CAAA;IACpC,IAAI,aAAa,EAAE,CAAC;QAClB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,aAAa,EAAE,CAAC,eAAe,CAAC,GAAG,EAAE,UAAU,CAAC,CAAA;YAChE,MAAM,MAAM,GAAG,GAAG,CAAC,eAAe,CAAA;YAClC,IAAI,MAAM,IAAI,MAAM,CAAC,OAAO,KAAK,aAAa,EAAE,CAAC;gBAC/C,OAAO,YAAY,CAAC,MAAM,CAAC,CAAA;YAC7B,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,0CAA0C;QAC5C,CAAC;IACH,CAAC;IACD,OAAO,oBAAoB,CAAC,GAAG,CAAC,CAAA;AAClC,CAAC;AAED,8EAA8E;AAC9E,2BAA2B;AAC3B,8EAA8E;AAE9E,SAAS,QAAQ,CAAC,EAAW,EAAE,IAAY;IACzC,OAAO,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAA;AACjD,CAAC;AAED,SAAS,KAAK,CAAC,EAAW,EAAE,IAAY;IACtC,OAAO,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAA;AAC/C,CAAC;AAED,wDAAwD;AACxD,SAAS,OAAO,CAAC,EAAW,EAAE,IAAY,EAAE,QAAgB;IAC1D,MAAM,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAC1B,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE;QAAE,OAAO,QAAQ,CAAA;IACpD,MAAM,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAA;IACzB,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAA;AAC1C,CAAC;AAED,sFAAsF;AACtF,SAAS,cAAc,CAAC,EAAW,EAAE,IAAY,EAAE,OAAe;IAChE,MAAM,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAC1B,MAAM,CAAC,GAAG,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;IACnD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,0BAA0B,OAAO,qCAAqC,IAAI,GAAG,CAAC,CAAA;IAChG,CAAC;IACD,OAAO,CAAC,CAAA;AACV,CAAC;AAED,SAAS,cAAc,CAAC,EAAW,EAAE,IAAY,EAAE,OAAe;IAChE,MAAM,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAC1B,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CAAC,0BAA0B,OAAO,wBAAwB,IAAI,GAAG,CAAC,CAAA;IACnF,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAuB;IAChD,OAAO,GAAG,KAAK,OAAO,IAAI,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAA;AAC3D,CAAC;AAED,8EAA8E;AAC9E,SAAS,aAAa,CAAC,EAAW;IAChC,MAAM,GAAG,GAA2B,EAAE,CAAA;IACtC,KAAK,MAAM,EAAE,IAAI,QAAQ,CAAC,EAAE,EAAE,UAAU,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAA;QAC1B,IAAI,IAAI,KAAK,SAAS;YAAE,SAAQ;QAChC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAA;IAClC,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,SAAS,aAAa,CAAC,EAAW;IAChC,OAAO,QAAQ,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACxC,QAAQ,EAAE,OAAO,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;QACnC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;KAChC,CAAC,CAAC,CAAA;AACL,CAAC;AAED,SAAS,aAAa,CAAC,EAAuB,EAAE,OAAe;IAC7D,IAAI,CAAC,EAAE;QAAE,OAAO,SAAS,CAAA;IACzB,MAAM,SAAS,GAAG,cAAc,CAAC,EAAE,EAAE,WAAW,EAAE,OAAO,CAAC,CAAA;IAC1D,MAAM,WAAW,GAAG,EAAE,CAAC,KAAK,CAAC,WAAW,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAA;IAC7E,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,EAAE,iBAAiB,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAA;AAC3F,CAAC;AAED,SAAS,aAAa,CAAC,EAAW,EAAE,MAAc;IAChD,MAAM,GAAG,GAAG,QAAQ,MAAM,cAAc,CAAA;IACxC,MAAM,IAAI,GAAoB;QAC5B,CAAC,EAAE,cAAc,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;QAC/B,CAAC,EAAE,cAAc,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;QAC/B,CAAC,EAAE,cAAc,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;QAC/B,GAAG,EAAE,cAAc,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC;QACnC,MAAM,EAAE,cAAc,CAAC,EAAE,EAAE,QAAQ,EAAE,GAAG,CAAC;KAC1C,CAAA;IACD,MAAM,KAAK,GAAG,QAAQ,MAAM,mBAAmB,IAAI,CAAC,CAAC,EAAE,CAAA;IACvD,KAAK,MAAM,IAAI,IAAI,EAAE,CAAC,QAAQ,EAAE,CAAC;QAC/B,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,KAAK,MAAM;gBACT,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAA;YAClC,KAAK,KAAK;gBACR,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,cAAc,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,CAAC,EAAE,CAAA;YACtF,KAAK,QAAQ;gBACX,OAAO;oBACL,GAAG,IAAI;oBACP,IAAI,EAAE,QAAQ;oBACd,SAAS,EAAE,cAAc,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,CAAC;oBACnD,OAAO,EAAE,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC;iBAChD,CAAA;YACH,KAAK,YAAY;gBACf,OAAO;oBACL,GAAG,IAAI;oBACP,IAAI,EAAE,YAAY;oBAClB,EAAE,EAAE,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC;oBACrC,EAAE,EAAE,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC;oBACrC,EAAE,EAAE,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC;oBACrC,EAAE,EAAE,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC;oBACrC,EAAE,EAAE,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC;oBACrC,EAAE,EAAE,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC;oBACrC,EAAE,EAAE,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC;oBACrC,EAAE,EAAE,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC;oBACrC,wEAAwE;oBACxE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY;iBACvE,CAAA;YACH,KAAK,OAAO;gBACV,OAAO;oBACL,GAAG,IAAI;oBACP,IAAI,EAAE,OAAO;oBACb,CAAC,EAAE,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC;oBACnC,CAAC,EAAE,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC;oBACnC,CAAC,EAAE,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC;oBACnC,CAAC,EAAE,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC;iBACpC,CAAA;YACH;gBACE,mEAAmE;gBACnE,MAAK;QACT,CAAC;IACH,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,0BAA0B,KAAK,sEAAsE,CAAC,CAAA;AACxH,CAAC;AAED,SAAS,SAAS,CAAC,EAAW,EAAE,MAAc;IAC5C,MAAM,GAAG,GAAG,QAAQ,MAAM,UAAU,CAAA;IACpC,MAAM,EAAE,GAAG,cAAc,CAAC,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,CAAA;IACxC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,0BAA0B,GAAG,cAAc,EAAE,CAAC,KAAK,CAAC,EAAE,qBAAqB,CAAC,CAAA;IAC9F,CAAC;IACD,MAAM,MAAM,GAAG,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,CAAA;IAChC,MAAM,cAAc,GAAa,EAAE,CAAA;IACnC,MAAM,YAAY,GAAa,EAAE,CAAA;IACjC,IAAI,MAAM,EAAE,CAAC;QACX,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;YAAE,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAA;QAClG,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;YAAE,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAA;IAChG,CAAC;IACD,MAAM,MAAM,GAAe,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACzD,OAAO,EAAE,OAAO,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;QACjC,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;QACrB,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;QACrB,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;QACrB,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;KACtB,CAAC,CAAC,CAAA;IACH,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,CAAA;IAC5C,MAAM,SAAS,GAAkB,QAAQ,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACnE,OAAO,EAAE,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;QAClC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,IAAI,MAAM;QAC7B,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK;KACtB,CAAC,CAAC,CAAA;IACH,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,CAAA;IAC/C,OAAO;QACL,EAAE;QACF,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,IAAI,MAAM;QAC7B,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,MAAM;QAChC,cAAc;QACd,YAAY;QACZ,MAAM;QACN,SAAS;KACV,CAAA;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,EAAW,EAAE,MAAc;IACnD,MAAM,CAAC,GAAG,OAAO,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,CAAA;IAC7B,MAAM,SAAS,GAAG,CAAC,QAAqC,EAAa,EAAE;QACrE,MAAM,MAAM,GAAG,KAAK,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAA;QAClC,IAAI,CAAC,MAAM;YAAE,OAAO,EAAE,CAAA;QACtB,OAAO,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAA;IAChE,CAAC,CAAA;IACD,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,CAAA;IAC9B,MAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAA;IAClC,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,CAAA;IAChC,2EAA2E;IAC3E,+DAA+D;IAC/D,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAA;IAChC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAA;IACjC,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;AACnC,CAAC;AAED,SAAS,SAAS,CAAC,EAAW;IAC5B,MAAM,EAAE,GAAG,cAAc,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAA;IAC7C,MAAM,GAAG,GAAG,QAAQ,EAAE,EAAE,CAAA;IACxB,MAAM,MAAM,GAAG,cAAc,CAAC,EAAE,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAA;IAEhD,MAAM,MAAM,GAAG,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,CAAA;IAChC,MAAM,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,EAAE,aAAa,CAAC,EAAE,GAAG,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAC5G,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,GAAG,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAEtG,MAAM,UAAU,GAAG,KAAK,CAAC,EAAE,EAAE,UAAU,CAAC,CAAA;IACxC,MAAM,QAAQ,GAAkB,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IACjH,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IAElC,MAAM,OAAO,GAAG,KAAK,CAAC,EAAE,EAAE,OAAO,CAAC,CAAA;IAClC,MAAM,WAAW,GAAoB,OAAO;QAC1C,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACzC,CAAC,EAAE,OAAO,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;YACtB,CAAC,EAAE,OAAO,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;YACtB,CAAC,EAAE,OAAO,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;YACtB,CAAC,EAAE,OAAO,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;YACtB,CAAC,EAAE,OAAO,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;SACvB,CAAC,CAAC;QACL,CAAC,CAAC,EAAE,CAAA;IACN,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IACrC,MAAM,YAAY,GAAqB,OAAO;QAC5C,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QACtE,CAAC,CAAC,EAAE,CAAA;IACN,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IAEtC,MAAM,WAAW,GAAG,KAAK,CAAC,EAAE,EAAE,kBAAkB,CAAC,CAAA;IACjD,MAAM,YAAY,GAAG,CAAC,CAAC,WAAW,IAAI,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;QAChF,4EAA4E;QAC5E,OAAO,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,CAAA;IACrH,CAAC,CAAC,CAAA;IACF,MAAM,SAAS,GAAG,KAAK,CAAC,EAAE,EAAE,gBAAgB,CAAC,CAAA;IAC7C,MAAM,iBAAiB,GACrB,CAAC,CAAC,SAAS,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IAE9G,MAAM,SAAS,GAAG,KAAK,CAAC,EAAE,EAAE,SAAS,CAAC,CAAA;IACtC,MAAM,OAAO,GAAgB,SAAS;QACpC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACxC,EAAE,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE;YACtB,CAAC,EAAE,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;YACvB,CAAC,EAAE,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;YACvB,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE;YAC1B,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE;YAChC,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE;YAC1B,KAAK,EAAE,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;YAC/B,MAAM,EAAE,OAAO,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC;YACjC,QAAQ,EAAE,aAAa,CAAC,GAAG,CAAC;YAC5B,QAAQ,EAAE,aAAa,CAAC,GAAG,CAAC;SAC7B,CAAC,CAAC;QACL,CAAC,CAAC,EAAE,CAAA;IACN,MAAM,gBAAgB,GAAyB,SAAS;QACtD,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACjD,EAAE,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE;YACtB,CAAC,EAAE,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;YACvB,CAAC,EAAE,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;YACvB,QAAQ,EAAE,aAAa,CAAC,GAAG,CAAC;SAC7B,CAAC,CAAC;QACL,CAAC,CAAC,EAAE,CAAA;IAEN,MAAM,SAAS,GAAG,KAAK,CAAC,EAAE,EAAE,SAAS,CAAC,CAAA;IACtC,MAAM,OAAO,GAAgB,SAAS;QACpC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACxC,EAAE,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE;YACtB,CAAC,EAAE,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;YACvB,CAAC,EAAE,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;YACvB,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE;YAC1B,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO;YAC1B,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE;YAC1B,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;YAC3B,MAAM,EAAE,OAAO,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC;YACjC,KAAK,EAAE,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;YAC/B,QAAQ,EAAE,aAAa,CAAC,GAAG,CAAC;SAC7B,CAAC,CAAC;QACL,CAAC,CAAC,EAAE,CAAA;IAEN,OAAO;QACL,EAAE;QACF,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE;QACzB,MAAM;QACN,QAAQ,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,IAAI,IAAI;QACnC,WAAW;QACX,SAAS;QACT,QAAQ;QACR,WAAW;QACX,YAAY;QACZ,OAAO;QACP,gBAAgB;QAChB,OAAO;QACP,QAAQ,EAAE,aAAa,CAAC,EAAE,CAAC;QAC3B,YAAY;QACZ,iBAAiB;KAClB,CAAA;AACH,CAAC;AAED,SAAS,aAAa,CAAC,EAAW;IAChC,MAAM,EAAE,GAAG,cAAc,CAAC,EAAE,EAAE,IAAI,EAAE,YAAY,CAAC,CAAA;IACjD,MAAM,WAAW,GAA4B,QAAQ,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;QACjF,MAAM,GAAG,GAAG,YAAY,EAAE,gBAAgB,CAAA;QAC1C,OAAO;YACL,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE;YACvB,YAAY,EAAE,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,CAAC;YACvD,cAAc,EAAE,cAAc,CAAC,IAAI,EAAE,gBAAgB,EAAE,GAAG,CAAC;YAC3D,YAAY,EAAE,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,OAAO;YACnE,SAAS,EAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;gBAC/C,IAAI,EAAE,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC;gBACrC,EAAE,EAAE,cAAc,CAAC,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC;aAClC,CAAC,CAAC;SACJ,CAAA;IACH,CAAC,CAAC,CAAA;IACF,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,EAAE,WAAW,EAAE,CAAA;AACvD,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,iBAAiB,CAAC,SAAiB;IACjD,MAAM,IAAI,GAAG,YAAY,CAAC,SAAS,CAAC,CAAA;IACpC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAA;IAC5E,CAAC;IAED,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;IACtC,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IACvE,MAAM,YAAY,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAA;IACnE,MAAM,MAAM,GAAc;QACxB,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACzD,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACzD,YAAY;KACb,CAAA;IAED,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;IACnD,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;IAE/D,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,CAAA;AACxD,CAAC"}
|
|
@@ -6,7 +6,7 @@ import { type OsmData } from './osmParser';
|
|
|
6
6
|
* a custom allocator to coordinate IDs with their own counters.
|
|
7
7
|
*/
|
|
8
8
|
export interface ShapeIdAllocator {
|
|
9
|
-
next(kind: 'point' | 'linestring' | 'lane'): ShapeId;
|
|
9
|
+
next(kind: 'point' | 'linestring' | 'lane' | 'traffic_light' | 'crosswalk'): ShapeId;
|
|
10
10
|
}
|
|
11
11
|
/** Default allocator: monotonic counter per shape kind. */
|
|
12
12
|
export declare function createShapeIdAllocator(): ShapeIdAllocator;
|
|
@@ -42,6 +42,49 @@ export interface ImportedLane {
|
|
|
42
42
|
attributes: Record<string, string>;
|
|
43
43
|
next: string[];
|
|
44
44
|
prev: string[];
|
|
45
|
+
/**
|
|
46
|
+
* Imported lane shape ids that must yield to this lane, restored from a
|
|
47
|
+
* `right_of_way` regulatory element where this lane plays the
|
|
48
|
+
* "right_of_way" role.
|
|
49
|
+
*/
|
|
50
|
+
yieldLaneIds?: string[];
|
|
51
|
+
}
|
|
52
|
+
export interface ImportedTrafficLight {
|
|
53
|
+
id: ShapeId;
|
|
54
|
+
/** Canvas position (midpoint of the "refers" way). */
|
|
55
|
+
x: number;
|
|
56
|
+
y: number;
|
|
57
|
+
/** Signal width in canvas pixels (span of the "refers" way). */
|
|
58
|
+
w: number;
|
|
59
|
+
/** Signal height in canvas pixels (not encoded in the source; 2:1 aspect default). */
|
|
60
|
+
h: number;
|
|
61
|
+
/** OSM id of the regulatory_element relation ('' for non-OSM sources). */
|
|
62
|
+
osmId: string;
|
|
63
|
+
/** Imported lane shape ids whose lanelet relations reference this regulatory element. */
|
|
64
|
+
affectedLaneIds: string[];
|
|
65
|
+
/** Imported linestring shape id of the "ref_line" stop line, or null. */
|
|
66
|
+
stopLineId: string | null;
|
|
67
|
+
attributes: Record<string, string>;
|
|
68
|
+
}
|
|
69
|
+
export interface ImportedCrosswalk {
|
|
70
|
+
id: ShapeId;
|
|
71
|
+
/** Canvas position (midpoint of the crosswalk axis). */
|
|
72
|
+
x: number;
|
|
73
|
+
y: number;
|
|
74
|
+
/** Crosswalk axis start/end in shape-local coordinates (rotation 0). */
|
|
75
|
+
startX: number;
|
|
76
|
+
startY: number;
|
|
77
|
+
endX: number;
|
|
78
|
+
endY: number;
|
|
79
|
+
/** Stripe band thickness across the road (canvas pixels). */
|
|
80
|
+
crosswalkWidth: number;
|
|
81
|
+
/** OSM id of the regulatory_element relation ('' for non-OSM sources). */
|
|
82
|
+
osmId: string;
|
|
83
|
+
/** Imported lane shape ids whose lanelet relations reference this regulatory element. */
|
|
84
|
+
affectedLaneIds: string[];
|
|
85
|
+
/** Imported linestring shape id of the "ref_line" stop line, or null. */
|
|
86
|
+
stopLineId: string | null;
|
|
87
|
+
attributes: Record<string, string>;
|
|
45
88
|
}
|
|
46
89
|
export interface ImportBounds {
|
|
47
90
|
minX: number;
|
|
@@ -57,6 +100,10 @@ export interface ImportedShapes {
|
|
|
57
100
|
points: ImportedPoint[];
|
|
58
101
|
linestrings: ImportedLinestring[];
|
|
59
102
|
lanes: ImportedLane[];
|
|
103
|
+
/** Traffic lights promoted from regulatory elements / signals. */
|
|
104
|
+
trafficLights: ImportedTrafficLight[];
|
|
105
|
+
/** Crosswalks promoted from `crosswalk` regulatory elements / objects. */
|
|
106
|
+
crosswalks: ImportedCrosswalk[];
|
|
60
107
|
bounds: ImportBounds;
|
|
61
108
|
/**
|
|
62
109
|
* Geographic center used as the canvas origin during projection. The host
|
|
@@ -73,8 +120,10 @@ export interface OsmToShapesOptions {
|
|
|
73
120
|
idAllocator?: ShapeIdAllocator;
|
|
74
121
|
/**
|
|
75
122
|
* Restrict conversion to the given lanelet relation IDs. When omitted, all
|
|
76
|
-
* `type=lanelet` relations are converted
|
|
77
|
-
*
|
|
123
|
+
* `type=lanelet` relations are converted. Traffic light / crosswalk /
|
|
124
|
+
* right_of_way regulatory elements are promoted to editable shapes or lane
|
|
125
|
+
* props (restricted to the selected lanelets when a selection is given);
|
|
126
|
+
* other relation types are preserved via the sidecar.
|
|
78
127
|
*/
|
|
79
128
|
selectedLaneIds?: readonly string[];
|
|
80
129
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"osmToShapes.d.ts","sourceRoot":"","sources":["../../src/exporter/osmToShapes.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"osmToShapes.d.ts","sourceRoot":"","sources":["../../src/exporter/osmToShapes.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AACvC,OAAO,EAAkB,KAAK,OAAO,EAAE,MAAM,aAAa,CAAA;AAE1D;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,IAAI,EAAE,OAAO,GAAG,YAAY,GAAG,MAAM,GAAG,eAAe,GAAG,WAAW,GAAG,OAAO,CAAA;CACrF;AAED,2DAA2D;AAC3D,wBAAgB,sBAAsB,IAAI,gBAAgB,CASzD;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,OAAO,CAAA;IACX,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,OAAO,CAAA;IACX,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACnC;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,OAAO,CAAA;IACX,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,cAAc,EAAE,MAAM,CAAA;IACtB,eAAe,EAAE,MAAM,CAAA;IACvB;;;;;OAKG;IACH,UAAU,EAAE,OAAO,CAAA;IACnB,WAAW,EAAE,OAAO,CAAA;IACpB,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAClC,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,IAAI,EAAE,MAAM,EAAE,CAAA;IACd;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;CACxB;AAED,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,OAAO,CAAA;IACX,sDAAsD;IACtD,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,gEAAgE;IAChE,CAAC,EAAE,MAAM,CAAA;IACT,sFAAsF;IACtF,CAAC,EAAE,MAAM,CAAA;IACT,0EAA0E;IAC1E,KAAK,EAAE,MAAM,CAAA;IACb,yFAAyF;IACzF,eAAe,EAAE,MAAM,EAAE,CAAA;IACzB,yEAAyE;IACzE,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACnC;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,OAAO,CAAA;IACX,wDAAwD;IACxD,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,wEAAwE;IACxE,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,6DAA6D;IAC7D,cAAc,EAAE,MAAM,CAAA;IACtB,0EAA0E;IAC1E,KAAK,EAAE,MAAM,CAAA;IACb,yFAAyF;IACzF,eAAe,EAAE,MAAM,EAAE,CAAA;IACzB,yEAAyE;IACzE,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACnC;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,aAAa,EAAE,CAAA;IACvB,WAAW,EAAE,kBAAkB,EAAE,CAAA;IACjC,KAAK,EAAE,YAAY,EAAE,CAAA;IACrB,kEAAkE;IAClE,aAAa,EAAE,oBAAoB,EAAE,CAAA;IACrC,0EAA0E;IAC1E,UAAU,EAAE,iBAAiB,EAAE,CAAA;IAC/B,MAAM,EAAE,YAAY,CAAA;IACpB;;;;OAIG;IACH,YAAY,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAA;CAC5C;AAED,MAAM,WAAW,kBAAkB;IACjC,oFAAoF;IACpF,WAAW,CAAC,EAAE,gBAAgB,CAAA;IAC9B;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CACpC;AAED,UAAU,OAAO;IACf,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;CACV;AAcD;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC7B,UAAU,EAAE,OAAO,EAAE,EACrB,WAAW,EAAE,OAAO,EAAE,GACrB;IAAE,UAAU,EAAE,OAAO,CAAC;IAAC,WAAW,EAAE,OAAO,CAAA;CAAE,CA4E/C;AAmFD;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,GAAE,kBAAuB,GAAG,cAAc,CA2Y9F"}
|