基于 MBTiles 规范扩展的缓存文件格式说明
MBTiles 是由 MapBox 制定的一种将瓦片地图数据存储到SQLite数据库中并可快速使用,管理和分享的规范。该规范由MapBox制定,详见http://mapbox.com/mbtiles-spec/。
SuperMap iServer为了满足自身应用的需求,不仅支持生成和使用满足MBTiles规范的瓦片地图数据,并且基于原规范对MBTiles中的内容进行了扩展。扩展后的.mbtiles文件支持任意坐标系,支持任意分辨率,支持JPG和PNG混合格式的地图瓦片数据。
扩展后的.mbtiles文件仍然使用元数据表”metadata”和瓦片数据表”tiles”来对瓦片地图数据进行管理。
metadata元数据表采用键值对的形式来存储地图瓦片数据的相关设置,包括两个文本类型的字段”name”和”value”,与MBTiles 1.1规范一致。表结构如图1所示:

图1 元数据表的表结构
元数据表的内容举例如表1所示:
表1 元数据表举例
|
元数据表的各字段(keys)说明如表2所示:
表2 元数据表各字段描述
|
tiles 瓦片数据表包括所有的瓦片数据和用于定位瓦片数据的一些值。除MBTiles1.1规范的zoom_level, tile_colum, tile_row, tile_data四个字段外,增加了resolution字段,支持任意比例尺、任意分辨率。表结构如图2所示:

图2 瓦片数据表的表结构
瓦片数据的表内容举例如图3:

图3 瓦片数据表的表内容举例
注:当瓦片对应的地面分辨率与表 3 中的地面分辨率无法对应时,zoom_level值为-1。
根据resolution值或对应比例尺读写对应瓦片数据。
表3 MBTiles各显示级别参数列表
|
tiles瓦片数据表中resolution存储时保留11位有效数字(四舍五入)。有效数字:从近似数的左边第一个不为0的数字起,到精确到的数为止,所有的数字叫这个近似数的有效数字(0.00123的有效数字是1,2,3,有效位数是3)。示例如表4所示:
表4 resolution近似值计算示例
|
Java中计算resolution的参考代码如下:
public static String getResolutionString(double resolution) {
int n = (int) Math.log10(resolution);
int precision = 11;
if (resolution < 1.0) {
n--;
}
int scale = precision - 1 - n;
return new BigDecimal(resolution).setScale(scale, BigDecimal.ROUND_HALF_UP).toString();
}
基于 MBTiles 规范扩展的缓存文件格式说明的更多相关文章
- 支持 MBTiles 规范的预缓存
SuperMap iServer 支持生成符合MBTiles规范的预缓存(MBTiles是由MapBox制定的一种将瓦片地图数据存储到SQLite数据库中并可快速使用,管理和分享的规范. 该规范由Ma ...
- 基于.net的分布式系统限流组件 C# DataGridView绑定List对象时,利用BindingList来实现增删查改 .net中ThreadPool与Task的认识总结 C# 排序技术研究与对比 基于.net的通用内存缓存模型组件 Scala学习笔记:重要语法特性
基于.net的分布式系统限流组件 在互联网应用中,流量洪峰是常有的事情.在应对流量洪峰时,通用的处理模式一般有排队.限流,这样可以非常直接有效的保护系统,防止系统被打爆.另外,通过限流技术手段,可 ...
- 缓存篇~第七回 Redis实现基于方法签名的数据集缓存(可控更新,分布式数据缓存)
返回目录 本篇文章可以说是第六回 Microsoft.Practices.EnterpriseLibrary.Caching实现基于方法签名的数据集缓存(可控更新,WEB端数据缓存)的续篇,事实上,有 ...
- iOS开发--基于AFNetWorking3.0的图片缓存分析
图片在APP中占有重要的角色,对图片做好缓存是重要的一项工作.[TOC] 理论 不喜欢理论的可以直接跳到下面的Demo实践部分 缓存介绍 缓存按照保存位置可以分为两类:内存缓存.硬盘缓存(FMDB.C ...
- ExtJS4.2学习(13)基于表格的扩展插件---rowEditing
鸣谢:http://www.shuyangyang.com.cn/jishuliangongfang/qianduanjishu/2013-11-24/182.html --------------- ...
- SpringMVC + ehcache( ehcache-spring-annotations)基于注解的服务器端数据缓存
背景 声明,如果你不关心java缓存解决方案的全貌,只是急着解决问题,请略过背景部分. 在互联网应用中,由于并发量比传统的企业级应用会高出很多,所以处理大并发的问题就显得尤为重要.在硬件资源一定的情况 ...
- 怎样基于谷歌地图的Server缓存公布Image Service服务
怎样基于谷歌地图的Server缓存公布Image Service服务 第一步:下载地图数据 下载安装水经注万能地图下载器,启动时仅仅选择电子.谷歌(这里能够依据自己的须要选择).例如以下图所看到的. ...
- 基于 angular 规范的 commit
基于 angular 规范的 commit commit格式如下: <type>: <subject> <BLANK LINE> <body> type ...
- Google Cardboard的九轴融合算法——基于李群的扩展卡尔曼滤波
Google Cardboard的九轴融合算法 --基于李群的扩展卡尔曼滤波 极品巧克力 前言 九轴融合算法是指通过融合IMU中的加速度计(三轴).陀螺仪(三轴).磁场计(三轴),来获取物体姿态的方法 ...
随机推荐
- python可变类型和不可变类型
原文地址:http://www.cnblogs.com/huamingao/p/5809936.html 可变类型 Vs 不可变类型 可变类型(mutable):列表,字典 不可变类型(unmutab ...
- 思科模拟器——允许远程telnet连接控制路由器/交换机
环境如下: 路由器配置如下.interface f0/0 配置该端口,ip address 192.168.1.1 255.255.255.0 配置ip,no shut激活,line vty 0 4 ...
- Gravitee.io Access Management docker-compose运行
Gravitee.io 官方提供的docker-compose 快速运行的方式 默认ui 账户 admin adminadmin 环境准备 docker-compose 文件 # # Copyrigh ...
- Modern Data Lake with Minio : Part 2
转自: https://blog.minio.io/modern-data-lake-with-minio-part-2-f24fb5f82424 In the first part of this ...
- activiti 委派和转办的区别
委派 委派:是将任务节点分给其他人处理,等其他人处理好之后,委派任务会自动回到委派人的任务中 将hr的任务进行委派: taskService.delegateTask(taskId, userId); ...
- 【转】OPPO A77保持应用后台运行方法
原文网址:http://www.3533.com/news/16/201708/163086/1.htm OPPO A77保持应用后台运行方法.手机的运行内存大小有限,因此在出现运行应用过多时,系统就 ...
- node 各模块及对应功能
node 各模块及对应功能 node 模块 对应功能 net 处理 TCP dgram 处理 UDP http 处理 HTTP/1 http2 处理 HTTP/2 https 处理 HTTPS tls ...
- chrome自定义ua(批处理文件方式)
新建bat文件,输入如下代码: @echo off start chrome.exe --user-agent="你自定义的ua字符串" EXIT 保存后运行bat文件. 这个时候 ...
- C# 使用委托实现多线程调用窗体的四种方式(转)
1.方法一:使用线程 功能描述:在用c#做WinFrom开发的过程中.我们经常需要用到进度条(ProgressBar)用于显示进度信息.这时候我们可能就需要用到多线程,如果不采用多线程控制进度条,窗口 ...
- 分布式超级账本Hyperledger为什么选择使用kafka引擎实现共识方案
使用kafka集群配置的原因也很简单,为orderer共识及排序服务提供足够的容错空间,当我们向peer节点提交Transaction的时候,peer节点会得到或返回(基于SDK)一个读写集结果,该结 ...