司天地图数据规范

本页面说明司天(SiTian)编辑器如何从 Obsidian 库读取地理数据,以及 层级上层区域地点类型 等 frontmatter 字段的填写规则,确保笔记能正确映射为地图节点。

数据流

Markdown(本库,唯一事实源)
  → node scripts/extract-data.js(提取脚本)
  → .sitian/geodata.json(坐标缓存,可删除后重建)
  → 司天编辑器渲染
  • Markdown 是唯一事实源:节点名称、层级、从属关系全部来自 frontmatter / 文件名 / 索引。
  • 坐标不属于世界观:节点坐标仅存于 .sitian/geodata.json永远不要手动写入 frontmatter。
  • 手动拖拽过的节点带 userMoved 标记,重新提取后坐标会保留(不被布局算法重置)。

数据来源目录

目录提取内容
03 设定/11 地理系统/星域/星域(star_domain)
03 设定/11 地理系统/星系/恒星系(galaxy)
03 设定/11 地理系统/行星/行星(planet)
03 设定/02 场景地点/场景地点(城市/城镇/村庄/设施/区域/地点等)
01 索引/地理系统索引.md世界与星域层级补全(按缩进级别区分星域/星系)

frontmatter 字段总览

字段用途必填取值
层级节点在地图树中的层级地理系统必填;场景地点建议填见「层级字段」
上层区域直接父级节点(wikilink)建议填'[[父节点名]]' 或裸名
地点类型地点的细分类型(第二维度)场景地点建议填见「地点类型字段」
publish / tags / 创建日期 / 最后更新 / 模板版本常规字段按既有规范

层级字段

层级 决定节点在地图中的类型与渲染样式。直接写中文值,不要写英文代码facility 等由脚本自动转换)。

frontmatter 值地图类型(layer)说明
世界world顶层世界
星域star_domain世界下的宏观区域
星系galaxy星域下的恒星系
行星planet恒星系中的天体
恒星star恒星
卫星moon卫星
区域region地理区域(岛、流域等)
城市city城市聚落
城镇town城镇聚落
村庄village村庄聚落
设施facility建筑/设施(宫殿、商店、工厂、学校等)
地点location自然地貌或难以归类的特殊地点

填写规则

  • 直接写上表中文值;禁止写英文代码(如 facility)——旧版本已写入的英文值会被脚本自动修正,但新笔记请直接写中文。
  • 场景地点未写 层级 时,脚本按「文件名后缀 → 标签 → 正文类别」推断,但推断不如显式标注可靠,建议显式填写
  • 聚落(城市/城镇/村庄)有独立渲染样式,不填 地点类型

文件名后缀推断(未写层级时的兜底规则)

  • X城 → 城市;X镇 → 城镇;X村 → 村庄
  • X岛 / X半岛 / X流域 → 区域
  • X府 / 宫 / 殿 / 馆 / 院 / 楼 / 塔 / 寺 / 庙 / 坛 / 阁 / 堂 / 厅 / 站 / 厂 / 店 / 所 / 中心 / 基地 / 据点 / 墓 / 桥 / 设施 → 设施
  • X山 / 江 / 河 / 湖 / 谷 / 林 / 原 / 海 / 滩 / 崖 → 地点

上层区域字段

  • 格式:'[[父节点名]]'(带引号)或裸名 父节点名
  • 必须指向直接上级,不能跨级。例如月兔之城的上级是 [[月球]](行星),而不是 [[乐园星系]](恒星系)。
  • 或不填表示顶层节点。

地点类型字段

地点类型 是地点的第二维度,用于行星地图上区分设施种类(8 种颜色 + 图标)。仅在 层级 为 设施 / 地点 / 区域 时填写;城市/城镇/村庄不填。

frontmatter 值含义地图图标示例
宗教神殿、祭坛、神社、大社、供奉处🛕 紫泽代神殿、万宁祭坛、风神大社
皇室宫殿、府邸、城堡🏯 金绒花宫、星绮君宫、镇江堡
商业商店、超市、餐厅、咖啡厅、食堂、烘焙🏪 橙柴旺超市、柳月道具店、狐狐食堂
工业工厂、军械库🏭 灰阿希德米亚、蓝箭台
居住住所、庇护所、小屋🏠 青哈伦的住所、米尔庇护所、露汐的家
公共学校、医院、图书馆、广场、监狱、广播站、空间站、防空洞🏛 蓝智能体学校、绒花图书馆、算经堂
特殊封印地、遗迹、飞船、传送门、中立区✦ 粉双剑封印处、纷花号、边境传送门
自然山、湖、江、谷、林、原⛰ 绿意识之湖、望凤山、静默山谷

判定优先级(显式填写可覆盖一切推断)

名称关键词 > 标签(tags) > 兜底「公共」。脚本内另有 15 条人工修正(如 雨神宫→宗教、智能体学校→公共),但显式填写永远优先

容易填错的边界案例

  • 名字或标签带「地下室 / 庇护所」的学校、图书馆、防空洞 → 应填 公共(不要被标签误导填居住/特殊)。
  • 带「宫殿」标签但实为神祇居所的 雨神宫 → 应填 宗教
  • 岛屿(庆云岛)→ 应填 自然
  • 封印地(双剑封印处 / 眠洁剑封印地)→ 应填 特殊

常见错误与修正

错误后果修正
层级写英文(facility旧版本不识别改为中文 设施
层级写错(如宫殿写成 城市地图显示为城市聚落样式按上表修正
上层区域指向跨级父节点节点挂在错误层级改为直接上级
地点类型填未知值回落为图层默认样式只用上表 8 个值
忘记填层级/地点类型脚本按文件名/标签推断,可能不准确显式填写

与司天的关系

  • 修改 frontmatter 后,需重新提取(司天「重新提取数据」或 node scripts/extract-data.js),地图才会更新。
  • 司天中创建的节点(如「新恒星」「新行星」)不会写回 Markdown,仅存在于缓存层;重新提取后这类节点会消失(属预期行为)。
  • 手动拖拽的坐标、绘制的地形/区域/路线等编辑器数据都存于 .sitian/ 缓存,不要手动编辑这些 JSON。
  • 笔记文件名中的括号(如 时间钟楼(建筑))是文件系统层面的消歧义寻址信息,见 同名与歧义处理规则。司天后续版本支持「显示名」后,可在司天内为这类节点设置不含括号的显示名称。