MS RFC 130:添加对Z-top的支持,这是一个多SQLite、多棱锥缓存结构

日期

2020-01-30

作者

Jérome Boué

联系

jbo-ads@laposte.net

状态

采用

最后更新

2020-01-30

版本

MapCache 1.10版

概述

此RFC建议将对MapCache的支持添加到一个新的缓存结构中,该结构包含多个按多个棱锥体组织的SQLite缓存:在最低缩放级别上为一个棱锥体,然后在给定缩放级别(如8)上为多个棱锥体,称为 最高缩放级别 . 这些棱锥体中的每一个都以顶部缩放级别的一个平铺开始,然后在下一个缩放级别的四个平铺开始,依此类推。当然,最高缩放级别值是可配置的。

下图说明了此缓存结构。

../../_images/mapcache-ztop.png

理论基础

这种结构的主要优点是,当用户只想脱机使用世界的一个子集时:只需要复制两个(相对较小的)SQLite文件。

建议的解决方案

从配置的角度来看,类的多SQLite缓存 ztop 被指定为 <top> 定义最高缩放级别的标记。需要模板密钥来确定要使用的SQLite文件。

<!-- multi-pyramid, multi-SQLite, starting at zoom level 8 -->
<cache name="z8" type="sqlite3">
  <top>8</top>
  <dbfile top_fmt="%02d">/path/to/z{top}-{top_x}-{top_y}.sqlite3</dbfile>
</cache>

<!-- single cache from zoom levels 0 to 7 -->
<cache name="z1-7" type="sqlite3">
  <dbfile>/path/to/z0-0-0.sqlite3</dbfile>
</cache>

<!-- Composite cache made of all caches to address all zoom levels -->
<cache name="zfull" type="composite">
  <cache min-zoom="0" max-zoom="7">z1-7</cache>
  <cache min-zoom="8">z8</cache>
</cache>

将提供以下模板密钥:

  • {{top}} 替换为最高缩放级别。

  • {{top_x}} 被顶部缩放级别的平铺索引的x值替换,从左开始

  • {{top_y}} 被顶部缩放级别的平铺索引的y值替换,从底部开始。

  • {{inv_top_x}} 被顶端缩放级别的平铺索引的x值替换,从右开始

  • {{inv_top_y}} 被顶端缩放级别的平铺索引的y值替换,从顶端开始

以下格式属性将可用: top_fmttop_x_fmttop_y_fmtinv_top_x_fmtinv_top_y_fmt 。它们默认为 "%d"

向后兼容性问题

没有。

文件需求

MapCache Cache Types 文档将被更新。

文件夹

此新功能在中实现:

  • lib/cache_sqlite.c

  • contrib/mapcache_detail/mapcache_detail.c

票号和参考号

关联的拉式请求为 #224

投票历史

由PSC成员JeffM、MikeS、JeromeB、JukkaR、Evner、SethG、SteveL、Stephannm+1采纳