Mbtiles结构详解

MBTiles 文件结构详解

MBTiles 是一种用于存储地图瓦片数据的SQLite数据库格式规范,主要用于高效存储和访问地图瓦片。以下是其核心结构:

数据库表结构

元数据表 (metadata)

字段名 类型 描述 示例值
name TEXT 地图名称 “OpenStreetMap”
format TEXT 瓦片格式(png/jpg/webp/pbf) “png”
bounds TEXT 地图范围(WGS84) “-180,-85,180,85”
center TEXT 默认中心点 “-122.1906,37.7599,11”
minzoom INTEGER 最小缩放级别 0
maxzoom INTEGER 最大缩放级别 14
attribution TEXT 版权信息 “© OpenStreetMap”
description TEXT 描述文本 “Map data © OpenStreetMap”
type TEXT 类型(overlay/baselayer) “baselayer”
version TEXT 版本号 “1.0”

瓦片数据表 (tiles)

字段名 类型 描述
zoom_level INTEGER 缩放级别(0-22)
tile_column INTEGER 瓦片X坐标
tile_row INTEGER 瓦片Y坐标(TMS规范)
tile_data BLOB 瓦片二进制数据

可选表 (非必需)

  • grids:存储UTFGrid交互数据
  • grid_data:存储与grids相关的数据
  • map:已弃用,早期版本使用

文件特性

  1. SQLite数据库:单个.mbtiles文件就是一个完整的SQLite3数据库
  2. 索引优化:通常在tiles表上建立复合索引:
    1
    
    CREATE UNIQUE INDEX tile_index ON tiles (zoom_level, tile_column, tile_row);
    
  3. 压缩存储:瓦片数据通常已压缩(png/jpg等)

扩展功能

  1. 矢量瓦片:当format=“pbf"时存储Mapbox矢量瓦片
  2. 交互数据:通过grids表存储UTFGrid交互信息
  3. 多图层:通过不同表名支持多图层存储

文件验证

可以使用SQLite工具检查MBTiles文件:

1
2
sqlite3 example.mbtiles ".schema"
sqlite3 example.mbtiles "SELECT * FROM metadata;"
Licensed under CC BY-NC-SA 4.0
Gear(夕照)的博客。记录开发、生活,以及一些不足为道的思考……