多层时空本体技术实施方案

目标:构建一个支持地球—太阳系—宇宙三级尺度、统一表达“中心 + 半径 + 可信度”三段式结构的可落地时空数据基础设施,服务于数字人文、天文史、文化遗产与未来叙事研究。

一、总体架构

graph TD

    A[用户输入] --> B{数据类型}

    B -->|地球事件| C[Earth Layer: WGS84 + JD(TT)]

    B -->|天文事件| D[Solar/Cosmic Layer: ICRS + TCB]

    C & D --> E[统一时空对象模型]

    E --> F[存储层: PostgreSQL + PostGIS + 自定义类型]

    E --> G[计算层: Python/GeoPandas + Astropy + Uncertainty Engine]

    E --> H[可视化层: MapLibre + TimelineJS + 3D Celestial Viewer]

    F & G & H --> I[API 服务]

    I --> J[Web 应用 / 知识图谱 / DH 平台]

二、核心数据模型(可直接用于数据库设计)

1. 时空参考系枚举(spacetime_reference_system

codenamedescription
earthEarth-CenteredWGS84 (EPSG:4326) + Terrestrial Time (TT)
solarsysSolar System BarycentricICRS (J2000) + Barycentric Coordinate Time (TCB)
cosmicCosmic ComovingICRS + Redshift + Cosmic Time (ΛCDM model)

2. 置信度分级标准(CL-Level)

LevelCodeConfidenceCriteria
CL1high≥0.9多源交叉验证,仪器实测
CL2medium0.7–0.89单源可靠记载,有上下文佐证
CL3low0.4–0.69推测、孤证、模糊描述
CL4speculative<0.4假说、象征性、无直接证据

✅ 支持扩展为连续值(0.0–1.0),但建议优先使用分级以保证语义一致性。

3. 统一时空对象表结构(PostgreSQL)

-- 自定义类型:不确定空间
CREATE TYPE uncertain_space AS (
  reference_system TEXT,          -- 'earth', 'solarsys', 'cosmic'
  center JSONB,                   -- 结构见下文
  spatial_uncertainty JSONB,      -- 含 angular_radius_arcsec, distance_uncertainty_ly 等
  confidence_level TEXT           -- 'high', 'medium', ...
);

-- 自定义类型:不确定时间
CREATE TYPE uncertain_time AS (
  reference_system TEXT,
  center_jd DOUBLE PRECISION,     -- 儒略日(TT 或 TCB,需注明)
  time_radius_seconds DOUBLE PRECISION,
  confidence_level TEXT
);

-- 主表
CREATE TABLE spacetime_entities (
  id TEXT PRIMARY KEY,
  label TEXT NOT NULL,
  description TEXT,
  space uncertain_space,
  "time" uncertain_time,
  original_source TEXT,
  conversion_metadata JSONB,       -- 记录转换路径、历法、锚点等
  created_at TIMESTAMPTZ DEFAULT NOW()
);

center 字段结构示例:

  • Earth:
{ "type": "earth", "lon": 116.4, "lat": 39.9, "alt_m": 50 }
  • SolarSys / Cosmic:
{ 
  "type": "icrs", 
  "ra_deg": 83.8958, 
  "dec_deg": -69.2667,
  "distance_ly": 168000,
  "redshift": null 
}

三、关键技术模块

模块 1:坐标与时间转换引擎(Python)

# 依赖库
# - astropy: 历法、ICRS、TCB/TT 转换
# - pyproj: WGS84 与投影转换
# - convertdate: 农历、干支等历史历法

class SpacetimeConverter:
    def earth_to_icrs(self, lon, lat, jd_tt):
        """将地球经纬度+TT时间转换为ICRS方向(忽略距离)"""
        from astropy.coordinates import EarthLocation, ICRS, AltAz
        from astropy.time import Time
        
        loc = EarthLocation(lon=lon, lat=lat, height=0)
        t = Time(jd_tt, format='jd', scale='tt')
        altaz = AltAz(obstime=t, location=loc)
        icrs = altaz.transform_to(ICRS)
        return icrs.ra.deg, icrs.dec.deg

    def tt_to_tcb(self, jd_tt, earth_pos=None):
        """将TT时间转换为TCB(需地球在太阳系中的位置)"""
        # 使用 astropy 的 relativistic time conversion
        # 实际需调用 SOFA 或 ERFA 库
        pass

    def parse_historical_date(self, text, calendar="chinese_lunar"):
        """解析“乾元二年秋”等历史日期 → JD(TT) ± uncertainty"""
        # 调用 convertdate + 规则引擎
        pass

模块 2:不确定性传播计算器

def propagate_spatiotemporal_uncertainty(anchor, offset):
    """
    锚点 + 相对偏移 → 绝对时空 + 合并不确定性
    """
    # 空间:sqrt(anchor.r² + offset.r²)
    new_space_radius = math.sqrt(
        anchor.space.spatial_uncertainty['radius_m']**2 +
        offset.space_offset_uncertainty**2
    )
    
    # 时间:同理
    new_time_radius = math.sqrt(
        anchor.time.time_radius_seconds**2 +
        offset.time_offset_seconds**2
    )
    
    # 可信度:取 min 或贝叶斯融合
    new_conf = min(anchor.space.confidence_level_value, 
                   anchor.time.confidence_level_value,
                   offset.confidence)
    
    return {
        "space": { "center": ..., "radius_m": new_space_radius, "confidence": new_conf },
        "time": { ... }
    }

模块 3:时空关系查询 API(PostGIS 扩展)

-- 示例:查找所有“可能与事件A同时同地”的事件
SELECT b.id
FROM spacetime_entities a, spacetime_entities b
WHERE a.id = 'event_A'
  AND ST_DWithin(
        ST_Transform(a.space.center::geometry, 4326),
        ST_Transform(b.space.center::geometry, 4326),
        a.space.spatial_uncertainty->>'radius_m'::float + 
        b.space.spatial_uncertainty->>'radius_m'::float
      )
  AND ABS(a.time.center_jd - b.time.center_jd) * 86400 <=
        a.time.time_radius_seconds + b.time.time_radius_seconds
  AND (a.space.confidence_level_value * a.time.confidence_level_value) > 0.5;

四、数据集对接与迁移策略

1. 现有数据集适配方案

数据集适配方式
CBDB(中国历代人物传记)将籍贯/仕历地转为 L2(县治中心 ±30km),时间转为 JD(TT) ± 季度
Pleiades(古代地中海地名)直接映射到 earth 层,保留其 location_type 和 accuracy 字段
NASA Exoplanet Archive转为 cosmic 层,赤经/赤纬→ICRS,发现时间→TCB(校正光行时)
SILKNOW保留其本体,通过 SPARQL 映射到本模型

2. 数据录入工具(Web 表单)

提供三种录入模式:

  • 精确模式:输入经纬度 + 公历日期(自动转 JD)
  • 模糊模式:选择行政区 + 季节/年号(自动估算半径与 JD)
  • 相对模式:选择锚点事件 + 偏移(如“李白出生后20年”)

所有录入自动记录 conversion_metadata,支持溯源。

五、可视化与交互设计

1. 地球视图(MapLibre GL JS)

  • 高精度点:实心圆(颜色深)
  • 模糊区域:半透明缓冲区(颜色浅)
  • 悬停显示:置信度、原始记载、误差范围

2. 宇宙视图(Three.js + Celestia-style)

  • 显示 ICRS 坐标下的天体位置
  • 用光锥(light cone)表示“可观测事件”
  • 时间轴可切换 TT / TCB / 宇宙时间

3. 时空联动面板

  • 左侧地图,右侧时间轴
  • 选择时间区间 → 高亮同期地理事件
  • 拖动地图区域 → 显示该地历史事件时间分布

六、实施路线图(6个月)

阶段时间交付物
Phase 1:核心模型与存储Month 1–2PostgreSQL schema + Python 类库 + 转换引擎原型
Phase 2:地球层支持Month 3CBDB/SILKNOW 数据迁移工具 + Web 录入界面
Phase 3:宇宙层支持Month 4NASA 数据接入 + ICRS/TCB 转换模块
Phase 4:计算与APIMonth 5时空关系查询 API + 不确定性传播服务
Phase 5:可视化与发布Month 6Web 应用 + 开放 API + 文档

七、开源与互操作性

  • 数据格式:支持导出为 JSON-LD(兼容 Schema.org)、GeoJSON(扩展属性)、RDF(OWL 本体)
  • API 标准:遵循 OGC API – Features,扩展 uncertainty 字段
  • 代码开源:GitHub 仓库,MIT 许可
  • 社区共建:提供 CL-Level 编码指南,鼓励领域专家贡献转换规则

八、预期成果

  1. 一个可部署的时空数据平台,支持从“村东五里”到“大麦哲伦云”的统一建模;
  2. 一套开放标准,推动数字人文项目采用结构化不确定性表达;
  3. 跨领域知识融合能力:连接历史文献、考古遗址、天文观测;
  4. 为AI训练提供高质量时空知识:大模型可学习“模糊但合理”的时空推理。

结语:本方案不追求“终极宇宙真理”,而是提供一个可扩展、可解释、可协作的时空基础设施——让每一个历史事件,无论精确或模糊,都能在四维时空中找到它“最可能的位置”。

📄 附录

技术负责人:___孟繁永________
版本:v1.0
日期:2025年12月1日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理