# Drawtonomy:可验证的设计证据 本笔记仅基于本机 `/Users/que01/Project/drawtonomy` 的公开源码与文档。该 checkout 不包含编辑器 Canvas、指针事件、选择或历史实现;不能据此断言它具体如何处理拖拽状态机。 ## 公开事实 - `README.md` 将其描述为 topology-aware lane、snap 与 point sharing;连接会随编辑保持。 - `packages/drawtonomy-sdk/src/types.ts` 定义 `point`、`linestring`、`lane`:lane 用 `leftBoundaryId` / `rightBoundaryId` 引用边界,边界以 `pointIds` 引用点,`next`/`prev` 表示车道关系。 - `packages/drawtonomy-sdk/src/exporter/osmToShapes.ts` 从 Lanelet2 导入时复用相同的点和 linestring,对相邻道路保留共享边界与方向反转信息。 - `packages/drawtonomy-sdk/src/exporter/laneCenterline.ts` 从左右边界按归一化弧长采样,导出中心线和宽度;中心线是派生数据。 - `docs/exporter.md` 指出可重新编辑的 SVG 内嵌完整 snapshot,导出器只从对象图读取数据。 ## 可迁移原则 1. **拥有关系而非复制关系**:共享点/边界只保存一次,依赖对象通过 ID 引用。因此一个动作自然波及所有关联几何。 2. **编辑源与展示/导出分离**:编辑对象图是源,中心线、边界渲染、导出格式是派生物。 3. **显式拓扑**:车道连接不是靠距离猜测,而是用 `next` / `prev` 表示。 4. **可重新打开的完整状态**:持久化内容足以重新构建编辑场景,而不是一张结果图。 ## 不应直接照搬 Drawtonomy 是从空白画布或 Lanelet2 形状开始编辑的创作工具;本项目以 OSM 为权威输入、编译器推导道路横断面和路口。若完全改为点/边界对象图,会失去现有 OSM 重导入、规则推导和可追溯性,且制造第二个不一致的地图源。 ## 对本项目的结论 借鉴其“语义对象图 + 依赖重算 + 共享锚点”的原则,但将持久化内容定义为附着在 OSM 派生语义 ID 上的约束,而不是迁移到 Drawtonomy 的自由形状 snapshot。