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列包含原始圖像二進制數據.
圖像文件的格式允許使用以下兩種:
pngjpg
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對象。
