MS RFC 130:添加对Z-top的支持,这是一个多SQLite、多棱锥缓存结构¶
- 日期
2020-01-30
- 作者
Jérome Boué
- 联系
- 状态
采用
- 最后更新
2020-01-30
- 版本
MapCache 1.10版
概述¶
此RFC建议将对MapCache的支持添加到一个新的缓存结构中,该结构包含多个按多个棱锥体组织的SQLite缓存:在最低缩放级别上为一个棱锥体,然后在给定缩放级别(如8)上为多个棱锥体,称为 最高缩放级别 . 这些棱锥体中的每一个都以顶部缩放级别的一个平铺开始,然后在下一个缩放级别的四个平铺开始,依此类推。当然,最高缩放级别值是可配置的。
下图说明了此缓存结构。
理论基础¶
这种结构的主要优点是,当用户只想脱机使用世界的一个子集时:只需要复制两个(相对较小的)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_fmt , top_x_fmt , top_y_fmt , inv_top_x_fmt , inv_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采纳