跳至内容
生态系统

生态系统

  %%{init: {"flowchart": {"htmlLabels": true}, "theme": "default"}}%%
graph TD
    %% L0 - 数据源
    subgraph L0["L0 - 数据源"]
        GeoJSON[evansiroky/timezone-boundary-builder<br/>GeoJSON 数据]
    end

    %% L1 - 核心处理
    subgraph L1["L1 - 核心处理"]
        TZF[ringsaturn/tzf<br/>Go 实现<br/>拓扑感知处理]
    end

    %% L2 - 数据分发
    subgraph L2["L2 - 数据分发"]
        TZF_DIST[ringsaturn/tzf-dist<br/>Go 模块 + Rust crate<br/>TZF 嵌入式二进制格式]
    end

    %% L3 - 语言实现
    subgraph L3["L3 - 语言实现"]
        TZF_RS[ringsaturn/tzf-rs<br/>Rust 实现]
        TZF_SWIFT[ringsaturn/tzf-swift<br/>Swift 实现]
    end

    %% L4 - 语言绑定与扩展
    subgraph L4["L4 - 绑定与扩展"]
        TZFPY[ringsaturn/tzfpy<br/>Python 绑定]
        TZF_RB[HarlemSquirrel/tzf-rb<br/>Ruby 绑定]
        TZF_WASM[ringsaturn/tzf-wasm<br/>浏览器 WASM]
        PG_TZF[ringsaturn/pg-tzf<br/>PostgreSQL 扩展]
    end

    %% L5 - 应用与服务
    subgraph L5["L5 - 应用与服务"]
        TZF_WEB[ringsaturn/tzf-web<br/>在线演示]
        RUST_TZ_SERVICE[racemap/rust-tz-service<br/>HTTP API]
    end

    %% 数据流
    GeoJSON --> TZF
    TZF --> TZF_DIST

    %% Go 直接使用 tzf-dist
    TZF_DIST --> |Go 模块| TZF
    TZF_DIST --> |Rust crate| TZF_RS
    TZF_DIST --> |内嵌| TZF_SWIFT

    %% Rust 生态
    TZF_RS --> TZFPY
    TZF_RS --> TZF_RB
    TZF_RS --> TZF_WASM
    TZF_RS --> PG_TZF
    TZF_RS --> RUST_TZ_SERVICE

    %% Web 应用
    TZF_WASM --> TZF_WEB

    %% 样式
    classDef l0 fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
    classDef l1 fill:#e8f5e8,stroke:#388e3c,stroke-width:2px
    classDef l2 fill:#fff3e0,stroke:#f57c00,stroke-width:2px
    classDef l3 fill:#fce4ec,stroke:#c2185b,stroke-width:2px
    classDef l4 fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
    classDef l5 fill:#e0f2f1,stroke:#00695c,stroke-width:2px

    class GeoJSON l0
    class TZF l1
    class TZF_DIST l2
    class TZF_RS,TZF_SWIFT l3
    class TZFPY,TZF_RB,TZF_WASM,PG_TZF l4
    class TZF_WEB,RUST_TZ_SERVICE l5
  • L0 - 数据源:来自上游提供者的原始地理时区边界数据
  • L1 - 核心处理:主要数据处理,包括拓扑感知多边形简化、共享边去重、Polyline 编码和瓦片预索引生成
  • L2 - 数据分发:处理后的二进制数据,采用TZF 嵌入式二进制格式, 以 Go 模块和 Rust crate 形式分发
    • ringsaturn/tzf-dist
    • 文件:lite.tzb(约 4 MB,拓扑简化,传输 profile)、lite.tzm(约 10 MB,同一份数据的内存镜像)、full.tzb(约 14 MB,完整精度)。三者都带有 FUZZY 瓦片预索引, 并携带相同的 data_version
    • crates.io 上的包只包含 lite.tzbfull.tzb 因体积原因仅由 git 提供,full.tzm 不做分发,需要时用 cmd/tzb2tzm 在本地生成
    • v1 的 protobuf 产物(combined-with-oceans.*.bin)不再发布,tzf-rel / tzf-rel-lite 仓库已被取代
  • L3 - 语言实现:消费 tzf-dist 数据的核心时区查询实现
  • L4 - 语言绑定与扩展:基于核心实现构建的封装库和数据库扩展
  • L5 - 应用与服务:终端用户应用、Web 服务和 API 服务器

截至 2026-09-12,tzf(Go)、tzf-rs(Rust)、tzfpy、tzf-wasm 和 tzf-swift 读取 v2 的 .tzb 产物;tzf-wasm 2.0.0 基于 tzf-rs 2.0.0 构建,tzf-swift 2.0.0 是不依赖 protobuf、直接读取 lite.tzb 的移植。2026-09-14,tzf v2.1.1、tzf-rs 2.1.1 和 tzfpy 2.1.0b2 预发布版切换到 tzf-dist v0.0.2026-c-tzb2(同一份 2026c 数据,按 64 点 chunk 编码);tzf-wasm 和 tzf-swift 仍为 2.0.0。 tzf-rb 由 HarlemSquirrel 独立维护, 目前基于 v1 系列构建。

最后更新于