基于 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中的加速度计(三轴).陀螺仪(三轴).磁场计(三轴),来获取物体姿态的方法 ...
随机推荐
- day07 eclipse使用本地 库文件 访问HDFS
常用命令 1. hdfs dfsadmin -report 查看系统的各台机器状态 HDFS的概念和特性 首先,它是一个文件系统,用于存储文件,通过统一的命名空间——目录树来定位文件 其次,它是分 ...
- java的数组和arraylist
1.数组 1.0 一开始就错了 int a[8]; //没有像C在内存中开辟了8个区域 改: int a[] = {1,2,3} ; System.out.println(a.length); ...
- 如何对oracle数据库进行监控检查
sqlplus '/as sysdba' 手动生成一个oracle数据库的快照 execute dbbms_workload_repository.create_snapshot(); 执行自动工作负 ...
- idea使用的JDK版本1.9换成1.8后相关的更改设置
File——>Project Structure 一.查看Project中的jdk 1.检查Project SDK:中jdk 版本是否为1.8版本 2.检查Project language le ...
- c# AddMonths,你了解吗?
AddMonths:找到对应月的day,如果没有则取最后一个day var d1 = new DateTime(2017, 6, 30); var d2 = d1.AddMonths(-1);//20 ...
- egg 官方文档之:框架扩展(Application、Context、Request、Response、Helper的访问方式及扩展)
地址:https://eggjs.org/zh-cn/basics/extend.html Application app 对象指的是 Koa 的全局应用对象,全局只有一个,在应用启动时被创建. 访问 ...
- c# 一些细节
1.动态对象和匿名对象偶然看到一个语法,觉得特别方便然后频繁使用,但是没有深究,直到今天忽然发现我潜意思中对它的认知居然是错误的. var data=new { State=1,Message=&qu ...
- Java模板引擎之Freemarker
Freemarker定义: 一款模板引擎 Freemarker是一个web图层组件不是web框架,解析服务端数据到页面 小例子: <#list 集合 as item> list标签对集合进 ...
- 回看《例说FPGA》---DDR2控制器集成与读写测试
回看<例说FPGA> ---DDR2控制器集成与读写测试 1.DDR2 IP核的配置 需要弄清楚的选项主要有: PLL reference clock frequency Memory c ...
- mysql_test
------------------ #/bin/sh binlogfile=$1 if [ ! -n $binlogfile ]thenecho "pls input your mysql ...