@drawtonomy/sdk 0.8.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.
@@ -9,5 +9,8 @@ export { sanitizeFileBaseName } from './sanitize';
9
9
  export { PIXELS_PER_METER } from './units';
10
10
  export { exportToLanelet2, DEFAULT_ORIGIN_LAT, DEFAULT_ORIGIN_LON, type Lanelet2ExportOptions, type OsmSidecar, type MapOrigin, } from './lanelet2';
11
11
  export { parseOsmXml, latLonToCanvas, canvasToLatLon, type OsmData, type OsmNode, type OsmWay, type OsmRelation, } from './osmParser';
12
- export { osmToShapes, alignBoundaries, createShapeIdAllocator, type ImportedShapes, type ImportedPoint, type ImportedLinestring, type ImportedLane, type ImportBounds, type OsmToShapesOptions, type ShapeIdAllocator, } from './osmToShapes';
12
+ export { osmToShapes, alignBoundaries, createShapeIdAllocator, type ImportedShapes, type ImportedPoint, type ImportedLinestring, type ImportedLane, type ImportedTrafficLight, type ImportedCrosswalk, type ImportBounds, type OsmToShapesOptions, type ShapeIdAllocator, } from './osmToShapes';
13
+ export { parseOpenDriveXml, type OdrMap, type OdrHeader, type OdrRoad, type OdrGeometry, type OdrLane, type OdrLaneSection, type OdrLaneOffset, type OdrWidth, type OdrRoadMark, type OdrRoadLink, type OdrSignal, type OdrSignalValidity, type OdrObject, type OdrJunction, type OdrJunctionConnection, type OdrJunctionLaneLink, type OdrCubic, } from './opendriveParser';
14
+ export { evalGeometry, evalPoly3, fresnel, sampleReferenceLine, type GeomPose, type ReferenceSample, type SampleReferenceLineOptions, } from './odrGeometry';
15
+ export { odrToShapes, parseGeoReferenceOrigin, type OdrImportResult, type OdrSidecar, type OdrToShapesOptions, } from './odrToShapes';
13
16
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/exporter/index.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,kBAAkB,EAClB,sBAAsB,EACtB,KAAK,SAAS,GACf,MAAM,cAAc,CAAA;AACrB,OAAO,EACL,oBAAoB,EACpB,2BAA2B,EAC3B,KAAK,yBAAyB,EAC9B,KAAK,gBAAgB,GACtB,MAAM,gBAAgB,CAAA;AACvB,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,KAAK,eAAe,EACpB,KAAK,mBAAmB,GACzB,MAAM,cAAc,CAAA;AACrB,OAAO,EACL,0BAA0B,EAC1B,aAAa,EACb,eAAe,EACf,KAAK,OAAO,EACZ,KAAK,gBAAgB,GACtB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,cAAc,EAAE,KAAK,oBAAoB,EAAE,KAAK,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AACrG,OAAO,EAAE,QAAQ,EAAE,KAAK,QAAQ,EAAE,MAAM,OAAO,CAAA;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAC1C,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,KAAK,qBAAqB,EAC1B,KAAK,UAAU,EACf,KAAK,SAAS,GACf,MAAM,YAAY,CAAA;AACnB,OAAO,EACL,WAAW,EACX,cAAc,EACd,cAAc,EACd,KAAK,OAAO,EACZ,KAAK,OAAO,EACZ,KAAK,MAAM,EACX,KAAK,WAAW,GACjB,MAAM,aAAa,CAAA;AACpB,OAAO,EACL,WAAW,EACX,eAAe,EACf,sBAAsB,EACtB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,GACtB,MAAM,eAAe,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/exporter/index.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,kBAAkB,EAClB,sBAAsB,EACtB,KAAK,SAAS,GACf,MAAM,cAAc,CAAA;AACrB,OAAO,EACL,oBAAoB,EACpB,2BAA2B,EAC3B,KAAK,yBAAyB,EAC9B,KAAK,gBAAgB,GACtB,MAAM,gBAAgB,CAAA;AACvB,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,KAAK,eAAe,EACpB,KAAK,mBAAmB,GACzB,MAAM,cAAc,CAAA;AACrB,OAAO,EACL,0BAA0B,EAC1B,aAAa,EACb,eAAe,EACf,KAAK,OAAO,EACZ,KAAK,gBAAgB,GACtB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,cAAc,EAAE,KAAK,oBAAoB,EAAE,KAAK,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AACrG,OAAO,EAAE,QAAQ,EAAE,KAAK,QAAQ,EAAE,MAAM,OAAO,CAAA;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAC1C,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,KAAK,qBAAqB,EAC1B,KAAK,UAAU,EACf,KAAK,SAAS,GACf,MAAM,YAAY,CAAA;AACnB,OAAO,EACL,WAAW,EACX,cAAc,EACd,cAAc,EACd,KAAK,OAAO,EACZ,KAAK,OAAO,EACZ,KAAK,MAAM,EACX,KAAK,WAAW,GACjB,MAAM,aAAa,CAAA;AACpB,OAAO,EACL,WAAW,EACX,eAAe,EACf,sBAAsB,EACtB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,YAAY,EACjB,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,GACtB,MAAM,eAAe,CAAA;AACtB,OAAO,EACL,iBAAiB,EACjB,KAAK,MAAM,EACX,KAAK,SAAS,EACd,KAAK,OAAO,EACZ,KAAK,WAAW,EAChB,KAAK,OAAO,EACZ,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,QAAQ,EACb,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,iBAAiB,EACtB,KAAK,SAAS,EACd,KAAK,WAAW,EAChB,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EACxB,KAAK,QAAQ,GACd,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EACL,YAAY,EACZ,SAAS,EACT,OAAO,EACP,mBAAmB,EACnB,KAAK,QAAQ,EACb,KAAK,eAAe,EACpB,KAAK,0BAA0B,GAChC,MAAM,eAAe,CAAA;AACtB,OAAO,EACL,WAAW,EACX,uBAAuB,EACvB,KAAK,eAAe,EACpB,KAAK,UAAU,EACf,KAAK,kBAAkB,GACxB,MAAM,eAAe,CAAA"}
@@ -18,4 +18,7 @@ export { PIXELS_PER_METER } from './units';
18
18
  export { exportToLanelet2, DEFAULT_ORIGIN_LAT, DEFAULT_ORIGIN_LON, } from './lanelet2';
19
19
  export { parseOsmXml, latLonToCanvas, canvasToLatLon, } from './osmParser';
20
20
  export { osmToShapes, alignBoundaries, createShapeIdAllocator, } from './osmToShapes';
21
+ export { parseOpenDriveXml, } from './opendriveParser';
22
+ export { evalGeometry, evalPoly3, fresnel, sampleReferenceLine, } from './odrGeometry';
23
+ export { odrToShapes, parseGeoReferenceOrigin, } from './odrToShapes';
21
24
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/exporter/index.ts"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,EAAE;AACF,4EAA4E;AAC5E,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,0EAA0E;AAC1E,yCAAyC;AAEzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,kBAAkB,EAClB,sBAAsB,GAEvB,MAAM,cAAc,CAAA;AACrB,OAAO,EACL,oBAAoB,EACpB,2BAA2B,GAG5B,MAAM,gBAAgB,CAAA;AACvB,OAAO,EACL,mBAAmB,EACnB,sBAAsB,GAGvB,MAAM,cAAc,CAAA;AACrB,OAAO,EACL,0BAA0B,EAC1B,aAAa,EACb,eAAe,GAGhB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,cAAc,EAAuD,MAAM,iBAAiB,CAAA;AACrG,OAAO,EAAE,QAAQ,EAAiB,MAAM,OAAO,CAAA;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAC1C,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,GAInB,MAAM,YAAY,CAAA;AACnB,OAAO,EACL,WAAW,EACX,cAAc,EACd,cAAc,GAKf,MAAM,aAAa,CAAA;AACpB,OAAO,EACL,WAAW,EACX,eAAe,EACf,sBAAsB,GAQvB,MAAM,eAAe,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/exporter/index.ts"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,EAAE;AACF,4EAA4E;AAC5E,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,0EAA0E;AAC1E,yCAAyC;AAEzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,kBAAkB,EAClB,sBAAsB,GAEvB,MAAM,cAAc,CAAA;AACrB,OAAO,EACL,oBAAoB,EACpB,2BAA2B,GAG5B,MAAM,gBAAgB,CAAA;AACvB,OAAO,EACL,mBAAmB,EACnB,sBAAsB,GAGvB,MAAM,cAAc,CAAA;AACrB,OAAO,EACL,0BAA0B,EAC1B,aAAa,EACb,eAAe,GAGhB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,cAAc,EAAuD,MAAM,iBAAiB,CAAA;AACrG,OAAO,EAAE,QAAQ,EAAiB,MAAM,OAAO,CAAA;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAC1C,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,GAInB,MAAM,YAAY,CAAA;AACnB,OAAO,EACL,WAAW,EACX,cAAc,EACd,cAAc,GAKf,MAAM,aAAa,CAAA;AACpB,OAAO,EACL,WAAW,EACX,eAAe,EACf,sBAAsB,GAUvB,MAAM,eAAe,CAAA;AACtB,OAAO,EACL,iBAAiB,GAkBlB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EACL,YAAY,EACZ,SAAS,EACT,OAAO,EACP,mBAAmB,GAIpB,MAAM,eAAe,CAAA;AACtB,OAAO,EACL,WAAW,EACX,uBAAuB,GAIxB,MAAM,eAAe,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"lanelet2.d.ts","sourceRoot":"","sources":["../../src/exporter/lanelet2.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAEV,kBAAkB,EAInB,MAAM,UAAU,CAAA;AAOjB,4EAA4E;AAC5E,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,iDAAiD;AACjD,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;IAClB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;CACnB;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,CAAC,EAAE,UAAU,GAAG,IAAI,CAAA;IAC3B,SAAS,CAAC,EAAE,SAAS,GAAG,IAAI,CAAA;CAC7B;AAED;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,WAAW,CAAA;AAC1C,eAAO,MAAM,kBAAkB,YAAY,CAAA;AAwN3C,yDAAyD;AACzD,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,kBAAkB,EAC5B,OAAO,GAAE,qBAA0B,GAClC,MAAM,CAiDR"}
1
+ {"version":3,"file":"lanelet2.d.ts","sourceRoot":"","sources":["../../src/exporter/lanelet2.ts"],"names":[],"mappings":"AA8BA,OAAO,KAAK,EAGV,kBAAkB,EAKnB,MAAM,UAAU,CAAA;AASjB,4EAA4E;AAC5E,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,iDAAiD;AACjD,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;IAClB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;CACnB;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,CAAC,EAAE,UAAU,GAAG,IAAI,CAAA;IAC3B,SAAS,CAAC,EAAE,SAAS,GAAG,IAAI,CAAA;CAC7B;AAED;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,WAAW,CAAA;AAC1C,eAAO,MAAM,kBAAkB,YAAY,CAAA;AA6oB3C,yDAAyD;AACzD,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,kBAAkB,EAC5B,OAAO,GAAE,qBAA0B,GAClC,MAAM,CAiDR"}
@@ -6,6 +6,19 @@
6
6
  // - Each LinestringShape becomes a `<way>` referencing its point nodes
7
7
  // - Each LaneShape becomes a `<relation type=lanelet>` referencing its
8
8
  // left/right way as members
9
+ // - Each TrafficLightShape carrying `affectedLaneIds` becomes a
10
+ // `<relation type=regulatory_element subtype=traffic_light>` whose "refers"
11
+ // member is a synthesized 2-node way at the signal position and whose
12
+ // "ref_line" member is the stop line way; affected lanelet relations gain a
13
+ // `role=regulatory_element` member pointing back at it
14
+ // - Each LaneShape carrying `yieldLaneIds` additionally emits a
15
+ // `<relation type=regulatory_element subtype=right_of_way>` whose
16
+ // "right_of_way" member is the lane's lanelet and whose "yield" members are
17
+ // the yielding lanelets
18
+ // - Each CrosswalkShape carrying `affectedLaneIds` emits a synthesized
19
+ // crosswalk lanelet (subtype=crosswalk), a crosswalk_polygon way, and a
20
+ // `<relation type=regulatory_element subtype=crosswalk>` referenced back by
21
+ // the affected lanelets
9
22
  // - When a sidecar (the original OSM XML captured at import time) is supplied,
10
23
  // tags / `ele` / unrelated relations (regulatory_element etc.) are
11
24
  // round-tripped: shape-derived entries override the sidecar copies for the
@@ -49,6 +62,8 @@ function buildFromShapes(shapes, originLat, originLon, sidecarData) {
49
62
  const points = [];
50
63
  const linestrings = [];
51
64
  const lanes = [];
65
+ const trafficLights = [];
66
+ const crosswalks = [];
52
67
  for (const s of shapes) {
53
68
  if (s.type === 'point')
54
69
  points.push(s);
@@ -56,6 +71,10 @@ function buildFromShapes(shapes, originLat, originLon, sidecarData) {
56
71
  linestrings.push(s);
57
72
  else if (s.type === 'lane')
58
73
  lanes.push(s);
74
+ else if (s.type === 'traffic_light')
75
+ trafficLights.push(s);
76
+ else if (s.type === 'crosswalk')
77
+ crosswalks.push(s);
59
78
  }
60
79
  const nodesOut = new Map();
61
80
  const waysOut = new Map();
@@ -84,7 +103,9 @@ function buildFromShapes(shapes, originLat, originLon, sidecarData) {
84
103
  const { lat, lon } = canvasToLatLon(p.x, p.y, originLat, originLon);
85
104
  const original = sidecarData?.nodes.get(osmId);
86
105
  const tags = original ? { ...original.tags } : {};
87
- const ele = original?.ele;
106
+ // Downstream consumers (e.g. Autoware) require an elevation tag on every
107
+ // node; default to 0 for nodes drawn on the 2D canvas.
108
+ const ele = original?.ele ?? 0;
88
109
  nodesOut.set(osmId, { id: osmId, lat, lon, ele, tags });
89
110
  }
90
111
  // Linestrings -> ways.
@@ -111,6 +132,7 @@ function buildFromShapes(shapes, originLat, originLon, sidecarData) {
111
132
  waysOut.set(osmId, { id: osmId, nodeRefs, tags });
112
133
  }
113
134
  // Lanes -> relations (type=lanelet).
135
+ const laneRelationByShapeId = new Map();
114
136
  for (const lane of lanes) {
115
137
  const osmId = resolveOsmId(lane.id, lane.props.osmId);
116
138
  shapeRelationOsmIds.add(osmId);
@@ -157,7 +179,417 @@ function buildFromShapes(shapes, originLat, originLon, sidecarData) {
157
179
  }
158
180
  if (!tags.type)
159
181
  tags.type = 'lanelet';
160
- relationsOut.push({ id: osmId, members, tags });
182
+ const relationOut = { id: osmId, members, tags };
183
+ relationsOut.push(relationOut);
184
+ laneRelationByShapeId.set(lane.id, relationOut);
185
+ }
186
+ // Traffic lights with affected lanes -> relations (type=regulatory_element,
187
+ // subtype=traffic_light). The signal itself is represented as a 2-node
188
+ // "refers" way spanning the shape's width; the stop line (when present)
189
+ // joins as the "ref_line" way, and each affected lanelet references the
190
+ // regulatory element back.
191
+ const linkAffectedLanelets = (reOsmId, affected) => {
192
+ // Reference the regulatory element from each affected lanelet (sidecar
193
+ // relations may already carry the member; avoid duplicating it).
194
+ for (const laneShapeId of affected) {
195
+ const laneRel = laneRelationByShapeId.get(laneShapeId);
196
+ if (!laneRel)
197
+ continue;
198
+ const exists = laneRel.members.some(m => m.type === 'relation' && m.role === 'regulatory_element' && m.ref === reOsmId);
199
+ if (!exists) {
200
+ laneRel.members.push({ type: 'relation', ref: reOsmId, role: 'regulatory_element' });
201
+ }
202
+ }
203
+ };
204
+ for (const tl of trafficLights) {
205
+ const affected = tl.props.affectedLaneIds ?? [];
206
+ if (affected.length === 0)
207
+ continue;
208
+ const reOsmId = resolveOsmId(tl.id, tl.props.osmId);
209
+ shapeRelationOsmIds.add(reOsmId);
210
+ // Round-trip fidelity: a signal imported from this sidecar and left
211
+ // unedited re-emits its original refers way / nodes / relation verbatim.
212
+ // The 2-node synthesis below would otherwise lose the original way's
213
+ // orientation, elevation and any extra members (light_bulbs etc.).
214
+ const originalRelation = sidecarData?.relations.find(r => r.id === reOsmId);
215
+ const recordedRefersId = tl.props.attributes?.refers_osm_id;
216
+ const originalRefers = recordedRefersId ? sidecarData?.ways.get(recordedRefersId) : undefined;
217
+ if (originalRelation && originalRefers && originalRefers.nodeRefs.length >= 2) {
218
+ const nodeA = sidecarData?.nodes.get(originalRefers.nodeRefs[0]);
219
+ const nodeB = sidecarData?.nodes.get(originalRefers.nodeRefs[originalRefers.nodeRefs.length - 1]);
220
+ const current = canvasToLatLon(tl.x, tl.y, originLat, originLon);
221
+ // Unmoved = the shape still sits at the refers way midpoint (import
222
+ // placed it there; ~1e-9 deg covers projection round-trip fp error).
223
+ const unmoved = !!nodeA && !!nodeB &&
224
+ Math.abs((nodeA.lat + nodeB.lat) / 2 - current.lat) < 1e-9 &&
225
+ Math.abs((nodeA.lon + nodeB.lon) / 2 - current.lon) < 1e-9;
226
+ // The stop line link must still match the original ref_line member.
227
+ const originalRefLine = originalRelation.members.find(m => m.type === 'way' && m.role === 'ref_line')?.ref;
228
+ const stopLs = tl.props.stopLineId
229
+ ? shapeMap.get(tl.props.stopLineId)
230
+ : undefined;
231
+ const currentRefLine = stopLs ? resolveOsmId(stopLs.id, stopLs.props.osmId) : undefined;
232
+ if (unmoved && originalRefLine === currentRefLine) {
233
+ for (const nid of originalRefers.nodeRefs) {
234
+ const n = sidecarData?.nodes.get(nid);
235
+ if (!n)
236
+ continue;
237
+ shapeNodeOsmIds.add(nid);
238
+ nodesOut.set(nid, { id: nid, lat: n.lat, lon: n.lon, ele: n.ele, tags: { ...n.tags } });
239
+ }
240
+ shapeWayOsmIds.add(originalRefers.id);
241
+ waysOut.set(originalRefers.id, {
242
+ id: originalRefers.id,
243
+ nodeRefs: [...originalRefers.nodeRefs],
244
+ tags: { ...originalRefers.tags },
245
+ });
246
+ relationsOut.push({
247
+ id: reOsmId,
248
+ members: originalRelation.members.map(m => ({ ...m })),
249
+ tags: { ...originalRelation.tags },
250
+ });
251
+ linkAffectedLanelets(reOsmId, affected);
252
+ continue;
253
+ }
254
+ }
255
+ // "refers" way: reuse the way / node IDs recorded at import time (the
256
+ // `refers_osm_id` attribute) so the sidecar copies are overridden rather
257
+ // than duplicated; otherwise allocate fresh negative IDs.
258
+ const refersWayId = tl.props.attributes?.refers_osm_id || resolveOsmId(`${tl.id}#refers`, undefined);
259
+ const sidecarRefers = sidecarData?.ways.get(refersWayId);
260
+ const reuseNodes = !!sidecarRefers && sidecarRefers.nodeRefs.length >= 2;
261
+ const nodeIdA = reuseNodes
262
+ ? sidecarRefers.nodeRefs[0]
263
+ : resolveOsmId(`${tl.id}#refers_a`, undefined);
264
+ const nodeIdB = reuseNodes
265
+ ? sidecarRefers.nodeRefs[sidecarRefers.nodeRefs.length - 1]
266
+ : resolveOsmId(`${tl.id}#refers_b`, undefined);
267
+ const halfW = (tl.props.w ?? 0) / 2;
268
+ const a = canvasToLatLon(tl.x - halfW, tl.y, originLat, originLon);
269
+ const b = canvasToLatLon(tl.x + halfW, tl.y, originLat, originLon);
270
+ for (const [nid, ll] of [[nodeIdA, a], [nodeIdB, b]]) {
271
+ shapeNodeOsmIds.add(nid);
272
+ const originalNode = sidecarData?.nodes.get(nid);
273
+ nodesOut.set(nid, {
274
+ id: nid,
275
+ lat: ll.lat,
276
+ lon: ll.lon,
277
+ ele: originalNode?.ele ?? 0,
278
+ tags: originalNode ? { ...originalNode.tags } : {},
279
+ });
280
+ }
281
+ shapeWayOsmIds.add(refersWayId);
282
+ const refersTags = sidecarRefers ? { ...sidecarRefers.tags } : {};
283
+ refersTags.type = 'traffic_light';
284
+ // Autoware requires subtype and height on the traffic light way; keep
285
+ // sidecar values when present, allow shape attributes to override, and
286
+ // fall back to the common defaults.
287
+ const tlAttrs = (tl.props.attributes ?? {});
288
+ if (!refersTags.subtype)
289
+ refersTags.subtype = tlAttrs.subtype || 'red_yellow_green';
290
+ if (!refersTags.height)
291
+ refersTags.height = tlAttrs.height || '0.5';
292
+ waysOut.set(refersWayId, { id: refersWayId, nodeRefs: [nodeIdA, nodeIdB], tags: refersTags });
293
+ const members = [
294
+ { type: 'way', ref: refersWayId, role: 'refers' },
295
+ ];
296
+ // "ref_line": the stop line linestring, already exported as a way above.
297
+ // Ensure the way carries type=stop_line so consumers recognize it.
298
+ if (tl.props.stopLineId) {
299
+ const stopLs = shapeMap.get(tl.props.stopLineId);
300
+ if (stopLs) {
301
+ const stopWayId = resolveOsmId(stopLs.id, stopLs.props.osmId);
302
+ const stopWay = waysOut.get(stopWayId);
303
+ if (stopWay && stopWay.tags.type !== 'stop_line')
304
+ stopWay.tags.type = 'stop_line';
305
+ members.push({ type: 'way', ref: stopWayId, role: 'ref_line' });
306
+ }
307
+ }
308
+ const tags = originalRelation ? { ...originalRelation.tags } : {};
309
+ tags.type = 'regulatory_element';
310
+ tags.subtype = 'traffic_light';
311
+ relationsOut.push({ id: reOsmId, members, tags });
312
+ linkAffectedLanelets(reOsmId, affected);
313
+ }
314
+ // Lanes with yieldLaneIds -> relations (type=regulatory_element,
315
+ // subtype=right_of_way). The lane plays the "right_of_way" role and each
316
+ // yielding lanelet joins with the "yield" role.
317
+ //
318
+ // Editor props store a flat per-lane union (`yieldLaneIds`), while a Lanelet2
319
+ // map may partition the same facts across several relations (one relation
320
+ // with many right_of_way lanelets, one lanelet in many relations, extra
321
+ // ref_line/refers members). To stay round-trip stable the export works in
322
+ // three steps:
323
+ // 1. sidecar RoW relations still fully satisfied by current props are
324
+ // kept verbatim (not claimed, byte-stable)
325
+ // 2. sidecar RoW relations whose links were edited are rebuilt in place
326
+ // (same osmId, member order preserved, removed links dropped)
327
+ // 3. yield links not covered by any sidecar relation are emitted as new
328
+ // per-lane relations
329
+ const materializedLaneletIds = new Set();
330
+ for (const rel of laneRelationByShapeId.values())
331
+ materializedLaneletIds.add(rel.id);
332
+ // laneletRef -> { laneShapeId, yieldLaneletRefs } (lanes that declare yields)
333
+ const rowInfoByLaneletRef = new Map();
334
+ for (const lane of lanes) {
335
+ const yieldIds = lane.props.yieldLaneIds ?? [];
336
+ const laneRel = laneRelationByShapeId.get(lane.id);
337
+ if (!laneRel)
338
+ continue;
339
+ const yieldRefs = new Set();
340
+ for (const yieldShapeId of yieldIds) {
341
+ const yieldRel = laneRelationByShapeId.get(yieldShapeId);
342
+ if (yieldRel)
343
+ yieldRefs.add(yieldRel.id);
344
+ }
345
+ rowInfoByLaneletRef.set(laneRel.id, { laneShapeId: lane.id, yieldRefs });
346
+ }
347
+ // laneletRef -> sidecar 由来でカバー済みの yield lanelet refs
348
+ const coveredYieldRefs = new Map();
349
+ const coverageOf = (rowRef) => {
350
+ let set = coveredYieldRefs.get(rowRef);
351
+ if (!set) {
352
+ set = new Set();
353
+ coveredYieldRefs.set(rowRef, set);
354
+ }
355
+ return set;
356
+ };
357
+ const sidecarRowREs = (sidecarData?.relations ?? []).filter(r => r.tags.type === 'regulatory_element' && r.tags.subtype === 'right_of_way');
358
+ for (const re of sidecarRowREs) {
359
+ const rowMembers = re.members.filter(m => m.type === 'relation' && m.role === 'right_of_way');
360
+ const yieldMembers = re.members.filter(m => m.type === 'relation' && m.role === 'yield');
361
+ // shape 化された lanelet のみが編集対象。非 materialize の member は素通し
362
+ const rowMat = rowMembers.map(m => m.ref).filter(ref => materializedLaneletIds.has(ref));
363
+ const yieldMat = yieldMembers.map(m => m.ref).filter(ref => materializedLaneletIds.has(ref));
364
+ if (rowMat.length === 0 || yieldMat.length === 0)
365
+ continue;
366
+ // 全 right_of_way lanelet が今もこの relation の yield 群を保持しているか
367
+ const satisfied = rowMat.every(rowRef => {
368
+ const info = rowInfoByLaneletRef.get(rowRef);
369
+ return !!info && yieldMat.every(y => info.yieldRefs.has(y));
370
+ });
371
+ if (satisfied) {
372
+ // 無編集: sidecar 素通し (claim しない) でバイト安定に保つ
373
+ for (const rowRef of rowMat) {
374
+ for (const y of yieldMat)
375
+ coverageOf(rowRef).add(y);
376
+ }
377
+ continue;
378
+ }
379
+ // 編集あり: 同 osmId で再構築 (member 順は保持しつつ、外れたリンクを除去)
380
+ shapeRelationOsmIds.add(re.id);
381
+ const members = [];
382
+ const keptRowRefs = [];
383
+ for (const m of re.members) {
384
+ if (m.type === 'relation' && m.role === 'right_of_way') {
385
+ if (!materializedLaneletIds.has(m.ref)) {
386
+ members.push({ ...m });
387
+ continue;
388
+ }
389
+ const info = rowInfoByLaneletRef.get(m.ref);
390
+ // この relation の yield を1つも保持しないレーンは right_of_way から外す
391
+ if (info && yieldMat.some(y => info.yieldRefs.has(y))) {
392
+ members.push({ ...m });
393
+ keptRowRefs.push(m.ref);
394
+ }
395
+ continue;
396
+ }
397
+ if (m.type === 'relation' && m.role === 'yield') {
398
+ if (!materializedLaneletIds.has(m.ref)) {
399
+ members.push({ ...m });
400
+ continue;
401
+ }
402
+ const stillReferenced = rowMat.some(rowRef => {
403
+ const info = rowInfoByLaneletRef.get(rowRef);
404
+ return !!info && info.yieldRefs.has(m.ref);
405
+ });
406
+ if (stillReferenced)
407
+ members.push({ ...m });
408
+ continue;
409
+ }
410
+ // ref_line / refers / その他のメンバーはそのまま保持
411
+ members.push({ ...m });
412
+ }
413
+ const keptYieldRefs = members
414
+ .filter(m => m.type === 'relation' && m.role === 'yield')
415
+ .map(m => m.ref);
416
+ for (const rowRef of keptRowRefs) {
417
+ const info = rowInfoByLaneletRef.get(rowRef);
418
+ if (!info)
419
+ continue;
420
+ for (const y of keptYieldRefs) {
421
+ if (info.yieldRefs.has(y))
422
+ coverageOf(rowRef).add(y);
423
+ }
424
+ }
425
+ const tags = { ...re.tags };
426
+ tags.type = 'regulatory_element';
427
+ tags.subtype = 'right_of_way';
428
+ relationsOut.push({ id: re.id, members, tags });
429
+ linkAffectedLanelets(re.id, keptRowRefs
430
+ .map(ref => rowInfoByLaneletRef.get(ref)?.laneShapeId)
431
+ .filter((id) => !!id));
432
+ }
433
+ // sidecar でカバーされなかった yield リンクはレーンごとに新規 relation を生成
434
+ for (const lane of lanes) {
435
+ const laneRel = laneRelationByShapeId.get(lane.id);
436
+ if (!laneRel)
437
+ continue;
438
+ const info = rowInfoByLaneletRef.get(laneRel.id);
439
+ if (!info || info.yieldRefs.size === 0)
440
+ continue;
441
+ const covered = coveredYieldRefs.get(laneRel.id);
442
+ const residual = [...info.yieldRefs].filter(ref => !covered?.has(ref));
443
+ if (residual.length === 0)
444
+ continue;
445
+ const reOsmId = resolveOsmId(`${lane.id}#right_of_way`, undefined);
446
+ shapeRelationOsmIds.add(reOsmId);
447
+ const members = [
448
+ { type: 'relation', ref: laneRel.id, role: 'right_of_way' },
449
+ ];
450
+ for (const ref of residual)
451
+ members.push({ type: 'relation', ref, role: 'yield' });
452
+ relationsOut.push({
453
+ id: reOsmId,
454
+ members,
455
+ tags: { type: 'regulatory_element', subtype: 'right_of_way' },
456
+ });
457
+ linkAffectedLanelets(reOsmId, [lane.id]);
458
+ }
459
+ // Crosswalks with affected lanes -> a synthesized crosswalk lanelet (the
460
+ // walking band's long edges as left/right ways), a crosswalk_polygon way
461
+ // (band outline), and a relation (type=regulatory_element,
462
+ // subtype=crosswalk) tying them together with the optional stop line.
463
+ // Way / node ids recorded at import time are reused so sidecar copies are
464
+ // overridden rather than duplicated.
465
+ for (const cw of crosswalks) {
466
+ // Dangling ids (deleted lanes) do not count: a crosswalk whose links all
467
+ // resolve to nothing is treated like an unlinked one and stays sidecar-only.
468
+ const affected = (cw.props.affectedLaneIds ?? []).filter(id => laneRelationByShapeId.has(id));
469
+ if (affected.length === 0)
470
+ continue;
471
+ const attrs = (cw.props.attributes ?? {});
472
+ const reOsmId = resolveOsmId(cw.id, cw.props.osmId);
473
+ shapeRelationOsmIds.add(reOsmId);
474
+ // Band geometry: axis from start to end (walking direction), band width
475
+ // across it. The shape rotation is applied about the shape center,
476
+ // matching the OpenDRIVE exporter's convention.
477
+ const rotRad = ((cw.rotation || 0) * Math.PI) / 180;
478
+ const cosR = Math.cos(rotRad);
479
+ const sinR = Math.sin(rotRad);
480
+ const centerX = cw.x + (cw.props.startX + cw.props.endX) / 2;
481
+ const centerY = cw.y + (cw.props.startY + cw.props.endY) / 2;
482
+ const halfDxLocal = (cw.props.endX - cw.props.startX) / 2;
483
+ const halfDyLocal = (cw.props.endY - cw.props.startY) / 2;
484
+ const halfDx = halfDxLocal * cosR - halfDyLocal * sinR;
485
+ const halfDy = halfDxLocal * sinR + halfDyLocal * cosR;
486
+ const axisLen = Math.hypot(halfDx, halfDy) * 2;
487
+ if (axisLen < 1e-6)
488
+ continue;
489
+ const dirX = (halfDx * 2) / axisLen;
490
+ const dirY = (halfDy * 2) / axisLen;
491
+ // Unit normal toward the left of the walking direction (screen Y down).
492
+ const leftNX = dirY;
493
+ const leftNY = -dirX;
494
+ const halfW = (cw.props.crosswalkWidth ?? 0) / 2;
495
+ const ax = centerX - halfDx;
496
+ const ay = centerY - halfDy;
497
+ const bx = centerX + halfDx;
498
+ const by = centerY + halfDy;
499
+ const laneletOsmId = attrs.crosswalk_lanelet_osm_id || resolveOsmId(`${cw.id}#lanelet`, undefined);
500
+ const leftWayId = attrs.crosswalk_left_osm_id || resolveOsmId(`${cw.id}#left`, undefined);
501
+ const rightWayId = attrs.crosswalk_right_osm_id || resolveOsmId(`${cw.id}#right`, undefined);
502
+ const polygonWayId = attrs.crosswalk_polygon_osm_id || resolveOsmId(`${cw.id}#polygon`, undefined);
503
+ // Node ids: reuse the sidecar boundary ways' endpoints when present.
504
+ const sidecarLeft = sidecarData?.ways.get(leftWayId);
505
+ const sidecarRight = sidecarData?.ways.get(rightWayId);
506
+ const reuseLeft = !!sidecarLeft && sidecarLeft.nodeRefs.length >= 2;
507
+ const reuseRight = !!sidecarRight && sidecarRight.nodeRefs.length >= 2;
508
+ const nodeLA = reuseLeft ? sidecarLeft.nodeRefs[0] : resolveOsmId(`${cw.id}#left_a`, undefined);
509
+ const nodeLB = reuseLeft
510
+ ? sidecarLeft.nodeRefs[sidecarLeft.nodeRefs.length - 1]
511
+ : resolveOsmId(`${cw.id}#left_b`, undefined);
512
+ const nodeRA = reuseRight ? sidecarRight.nodeRefs[0] : resolveOsmId(`${cw.id}#right_a`, undefined);
513
+ const nodeRB = reuseRight
514
+ ? sidecarRight.nodeRefs[sidecarRight.nodeRefs.length - 1]
515
+ : resolveOsmId(`${cw.id}#right_b`, undefined);
516
+ const corners = [
517
+ [nodeLA, ax + leftNX * halfW, ay + leftNY * halfW],
518
+ [nodeLB, bx + leftNX * halfW, by + leftNY * halfW],
519
+ [nodeRA, ax - leftNX * halfW, ay - leftNY * halfW],
520
+ [nodeRB, bx - leftNX * halfW, by - leftNY * halfW],
521
+ ];
522
+ for (const [nid, x, y] of corners) {
523
+ shapeNodeOsmIds.add(nid);
524
+ const ll = canvasToLatLon(x, y, originLat, originLon);
525
+ const originalNode = sidecarData?.nodes.get(nid);
526
+ nodesOut.set(nid, {
527
+ id: nid,
528
+ lat: ll.lat,
529
+ lon: ll.lon,
530
+ ele: originalNode?.ele ?? 0,
531
+ tags: originalNode ? { ...originalNode.tags } : {},
532
+ });
533
+ }
534
+ shapeWayOsmIds.add(leftWayId);
535
+ waysOut.set(leftWayId, {
536
+ id: leftWayId,
537
+ nodeRefs: [nodeLA, nodeLB],
538
+ tags: sidecarLeft ? { ...sidecarLeft.tags } : {},
539
+ });
540
+ shapeWayOsmIds.add(rightWayId);
541
+ waysOut.set(rightWayId, {
542
+ id: rightWayId,
543
+ nodeRefs: [nodeRA, nodeRB],
544
+ tags: sidecarRight ? { ...sidecarRight.tags } : {},
545
+ });
546
+ // Band outline (closed ring over the four corners).
547
+ const sidecarPolygon = sidecarData?.ways.get(polygonWayId);
548
+ const polygonTags = sidecarPolygon ? { ...sidecarPolygon.tags } : {};
549
+ if (!polygonTags.type)
550
+ polygonTags.type = 'crosswalk_polygon';
551
+ if (!polygonTags.area)
552
+ polygonTags.area = 'yes';
553
+ shapeWayOsmIds.add(polygonWayId);
554
+ waysOut.set(polygonWayId, {
555
+ id: polygonWayId,
556
+ nodeRefs: [nodeLA, nodeLB, nodeRB, nodeRA, nodeLA],
557
+ tags: polygonTags,
558
+ });
559
+ // Crosswalk lanelet (type=lanelet, subtype=crosswalk).
560
+ const sidecarLanelet = sidecarData?.relations.find(r => r.id === laneletOsmId);
561
+ const laneletTags = sidecarLanelet ? { ...sidecarLanelet.tags } : {};
562
+ laneletTags.type = 'lanelet';
563
+ laneletTags.subtype = 'crosswalk';
564
+ shapeRelationOsmIds.add(laneletOsmId);
565
+ relationsOut.push({
566
+ id: laneletOsmId,
567
+ members: [
568
+ { type: 'way', ref: leftWayId, role: 'left' },
569
+ { type: 'way', ref: rightWayId, role: 'right' },
570
+ ],
571
+ tags: laneletTags,
572
+ });
573
+ const members = [
574
+ { type: 'relation', ref: laneletOsmId, role: 'refers' },
575
+ { type: 'way', ref: polygonWayId, role: 'crosswalk_polygon' },
576
+ ];
577
+ if (cw.props.stopLineId) {
578
+ const stopLs = shapeMap.get(cw.props.stopLineId);
579
+ if (stopLs) {
580
+ const stopWayId = resolveOsmId(stopLs.id, stopLs.props.osmId);
581
+ const stopWay = waysOut.get(stopWayId);
582
+ if (stopWay && stopWay.tags.type !== 'stop_line')
583
+ stopWay.tags.type = 'stop_line';
584
+ members.push({ type: 'way', ref: stopWayId, role: 'ref_line' });
585
+ }
586
+ }
587
+ const sidecarRe = sidecarData?.relations.find(r => r.id === reOsmId);
588
+ const tags = sidecarRe ? { ...sidecarRe.tags } : {};
589
+ tags.type = 'regulatory_element';
590
+ tags.subtype = 'crosswalk';
591
+ relationsOut.push({ id: reOsmId, members, tags });
592
+ linkAffectedLanelets(reOsmId, affected);
161
593
  }
162
594
  return { nodes: nodesOut, ways: waysOut, relations: relationsOut, shapeNodeOsmIds, shapeWayOsmIds, shapeRelationOsmIds };
163
595
  }
@@ -1 +1 @@
1
- {"version":3,"file":"lanelet2.js","sourceRoot":"","sources":["../../src/exporter/lanelet2.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lanelet2.js","sourceRoot":"","sources":["../../src/exporter/lanelet2.ts"],"names":[],"mappings":"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"}