跳转到主要内容

架构

跟踪一次瓦片请求如何从 HTTP 或库调用变为编码后的字节。

库将异步范围 I/O 与 CPU 密集型的解码、重投影、渲染和编码工作分离。应用只需组合 自己需要的公共层。

主要组件

组件职责
CogReader打开 COG,读取元数据和概览层,选择并拼接原生块,以及采样点或窗口。
BlockCache在统一字节预算下跨 reader 共享解码块,并合并并发冷读取。
Tiler规划瓦片、选择概览层、读取源窗口、按需重投影并输出编码字节。
TileStyle在渲染前解析并校验 titiler 风格的查询参数。
MosaicTiler查找资产、通过池打开 reader、重投影各资产、合并重叠像元并统一渲染。
CpuLimiter限制跨 reader 与 tiler 的 CPU 密集型阻塞任务。

瓦片数据流

  1. TileCoord 在受支持的 TileMatrixSet 中定位目标瓦片。
  2. Tiler 计算目标边界并检查其是否与源数据集相交。
  3. 根据目标地面分辨率选择合适的概览层。
  4. CogReader 通过范围请求加载缺失的原生块,并复用缓存命中。
  5. 同 CRS 使用仿射快速路径;跨 CRS 使用反向重投影。EPSG:4326 与 EPSG:3857 之间有闭式快速路径,其他组合需要 proj feature。
  6. 渲染管线依次处理 nodata、scale/offset、波段计算、拉伸、色带或 RGB 合成, 最后调用目标编码器。

并发模型

Tokio 负责异步元数据与字节范围 I/O。解码、拼接、重投影、镶嵌归并、渲染和编码 通过受信号量限制的 spawn_blocking 运行。应用可以把一个 Arc<BlockCache> 注入 单 COG 与 mosaic reader,避免解码缓存预算倍增;也可以在非 mosaic 的 CogReader/Tiler 之间注入同一个 CpuLimiter。当前 MosaicTiler 使用自己的内部 limiter,无法加入该 permit 预算,因此混合流量没有自动的进程级 CPU 上限。