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對象。