MBTiles 1.2
可以参考超图的文档MBTiles扩展
具体实现可以参考浅谈利用SQLite存储离散瓦片的思路和实现方法
mapbox提供了一个简单实现测试代码,github地址在这里https://github.com/mapbox/mbtiler.git
子标签:
- Interaction: 实现交互所需的HTTP端点
- UTFGrid:此规范依赖于UTFGrid 1.2进行交互.
抽象
MBTiles是在SQLite数据库中存储地图瓦片数据的规范,用于即时使用和传送.
MBTiles文件称为tilesets(瓦片集),必须实现以下规范,以确保与设备的兼容性。
数据库规格
Tilesets使用version 3.0.0或更高版本的SQLite数据库。
仅使用SQLite核心功能; tilesets 无需扩展.
MBTiles数据库可以选用官方分配幻数(magic number)去快速识别为MBTiles。
数据库
注意: 所概述的schemas
尽量遵循接口。产生兼容结果的SQLite视图同样有效。
方便起见,本规范将表
(tables)和虚拟表
(virtual tables,视图views)都当做表(tables)。
Metadata 元数据
Schema 方案
数据库需要包含名为metadata
的table或view。
该表必须具有名为name
和value
的两列。metadata
表典型创建语句如下:
CREATE TABLE metadata (name text, value text);
Content 内容
metadata
表用作key/value
存储,用于保存一些配置settings
。
以下五个key是必须的:
name
: tileset的纯英文名称.type
:overlay
(覆盖型)或baselayer
(基本图层型).version
: tileset的版本,纯数字.description
: 描述图层(layer)的文本.format
: 瓦片数据的图像文件格式:png
或jpg
row
在metadata
中是推荐提供的,如有,可以提高性能。
bounds
: 呈现的地图区域的最大范围。Bounds
必须定义所有缩放级别所覆盖的区域。范围bounds
以WGS:84
中经纬度值表示,在OpenLayers Bounds
格式表示为-
左,下,右,上.全球范围为例:-180.0,-85,180,85
.attribution
:属性字符串,使用纯英文(和HTML)解释地图数据和(或)样式的来源.
通常的tilesets实现都支持这些附加键。
基于UTFGrid交互.
Tiles 瓦片
Schema 方案
数据库需要包含名为tiles
的表.
该表必须具有zoom_level
、tile_column
、tile_row
和tile_data
四列。tiles
表典型创建语句如下:
CREATE TABLE tiles (zoom_level integer, tile_column integer, tile_row integer, tile_data blob);
Content 内容
tiles
用于包含瓦片和用于定位的值。zoom_level
、tile_column
和tile_row
列在其构造中遵循
Tile Map Service规范,但受限于以下形式:
假定是global-mercator (球面墨卡托SphericalMercator)
tile_data blob
列包含原始图像二进制数据.
图像文件的格式允许使用以下两种:
png
jpg
Grids 网格
有关网格和交互元数据本身的实现细节,请参阅UTFGrid规范:MBTiles规范仅涉及存储。
Schema 方案
数据库可以有可选的表grids
和grid_data
。
grids
必须具有zoom_level
、tile_column
、tile_row
和grid
四列。grids
表典型创建语句如下:
CREATE TABLE grids (zoom_level integer, tile_column integer, tile_row integer, grid blob);
grid_data
必须具有zoom_level
、tile_column
、tile_row
、key_name
和key_json
五列。grid_data
表典型创建语句如下:
CREATE TABLE grid_data (zoom_level integer, tile_column integer, tile_row integer, key_name text, key_json text);
Content 内容
grids
表包含UTFGrid
数据,gzip压缩。grid_data
表包含grid key
到value
映射,将value
编码为JSON对象。