MBTiles 文件结构详解
MBTiles 是一种用于存储地图瓦片数据的SQLite数据库格式规范,主要用于高效存储和访问地图瓦片。以下是其核心结构:
数据库表结构
| 字段名 |
类型 |
描述 |
示例值 |
| 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:已弃用,早期版本使用
文件特性
- SQLite数据库:单个.mbtiles文件就是一个完整的SQLite3数据库
- 索引优化:通常在tiles表上建立复合索引:
1
|
CREATE UNIQUE INDEX tile_index ON tiles (zoom_level, tile_column, tile_row);
|
- 压缩存储:瓦片数据通常已压缩(png/jpg等)
扩展功能
- 矢量瓦片:当format=“pbf"时存储Mapbox矢量瓦片
- 交互数据:通过grids表存储UTFGrid交互信息
- 多图层:通过不同表名支持多图层存储
文件验证
可以使用SQLite工具检查MBTiles文件:
1
2
|
sqlite3 example.mbtiles ".schema"
sqlite3 example.mbtiles "SELECT * FROM metadata;"
|