MBTiles入门必读:10个核心概念与术语完整清单
2026/8/21 20:18:53 网站建设 项目流程

MBTiles入门必读:10个核心概念与术语完整清单

【免费下载链接】mbtiles-specspecification documents for the MBTiles tileset format项目地址: https://gitcode.com/gh_mirrors/mb/mbtiles-spec

MBTiles 是一种在 SQLite 数据库中存储瓦片地图数据的开放规范,也是离线地图领域最流行的文件格式之一。一个 MBTiles 文件(官方术语为 tileset,即瓦片数据集)本质是一个 .mbtiles 数据库文件,把成千上万张地图瓦片、元数据与交互信息打包在一起,方便拷贝、传输与离线使用。无论你是 GIS 新手、前端地图开发者,还是想给 App 添加离线地图功能,理解这些核心概念都能事半功倍。本文用 10 个核心概念加一张术语速查表,带你快速入门 MBTiles 格式。

MBTiles 是什么?先看三个关键认知

在逐个拆解概念之前,先建立三个最基础的认知:

  • 📦一个 MBTiles 文件 = 一个瓦片数据集(tileset),官方规范见仓库内最新文档1.3/spec.md
  • 🗃️MBTiles 本质是一个 SQLite 数据库,用标准的数据库表组织瓦片数据。
  • 🗺️里面装的是"可直接显示的瓦片",而非原始矢量数据(这与 GeoJSON、Spatialite 有本质区别)。

💡 MBTiles 是一个"最小规范":它只规定数据如何被读取,不限制内部如何压缩与优化,因此各家实现可以在内部自由发挥,只要对外满足规范即可。

概念 1:Tileset(瓦片数据集)—— MBTiles 文件的本体

Tileset 是官方对 MBTiles 文件的称呼,意为"瓦片数据集"。一个 MBTiles 文件恰好代表一个瓦片数据集,并可以附带交互网格数据(如 UTFGrid)。如果你的项目包含多个图层(或地图),通常的做法是把它们拆分为多个 MBTiles 文件,各文件互不干扰。

概念 2:SQLite 数据库—— MBTiles 的容器格式

MBTiles 的物理形态就是一个 SQLite 数据库文件,硬性要求有三点:

  • SQLite 版本必须为 3.0.0 或更高;
  • 只允许使用 SQLite 核心特性,不得依赖任何扩展
  • 可以使用 SQLite 官方为 MBTiles 分配的 magic number,便于程序快速识别文件类型。

一个合规的 MBTiles 数据库至少包含两张表:

  • metadata(必需):元数据键值对表;
  • tiles(必需):瓦片数据表;
  • grids/grid_data(可选):UTFGrid 交互数据表。

规范还允许用"视图(view)"来模拟表结构,所以两个实现内部存储细节可以完全不同,但对外都满足同一套接口。

概念 3:地图瓦片(Tile)—— 一张一张的小方块

地图瓦片就是把整幅地图按 256×256 像素切成的无数小方块,不同缩放级别下的瓦片组合起来,就形成了"瓦片金字塔":级别越高,瓦片数量越多、细节越丰富。MBTiles 的tiles表中,tile_data列存放的就是每张瓦片的二进制数据(blob),可能是图片,也可能是矢量瓦片数据。

概念 4:瓦片坐标(zoom_level / tile_column / tile_row)—— 每张瓦片的"身份证"

tiles表用三个整数字段唯一定位一张瓦片:

  • zoom_level:缩放级别;
  • tile_column:列号(X);
  • tile_row:行号(Y)。

这套坐标遵循 TMS(Tile Map Service)规范,并且强制使用 global-mercator(即 Spherical Mercator)投影剖面。需要特别注意的是,TMS 的行号 Y 轴与 Web 地图常见的 "XYZ" 坐标系是反向的。例如 URL 中常见的瓦片 11/327/791,在 MBTiles 中应存为zoom_level=11, tile_column=327, tile_row=1256,因为 1256 = 2¹¹ − 1 − 791。这是新手最容易踩的坑之一!🕳️

概念 5:metadata 元数据表—— 瓦片数据集的"户口本"

metadata表是 MBTiles 的信息中心,采用最简单的键值对结构:只有namevalue两列(均为 text 类型,且必须用 UTF-8 编码),建表语句仅一行CREATE TABLE metadata (name text, value text);。在 1.3 规范中:

类型说明
必需name数据集名称
必需format瓦片格式(pbf/jpg/png/webp 等)
建议bounds覆盖范围(经纬度)
建议center默认视角(经度,纬度,级别)
建议minzoom/maxzoom缩放级别上下限
可选attribution版权与数据来源说明
可选description/type/version描述、类型、数据集版本

概念 6:format 字段—— 瓦片数据的"血型"

format决定了瓦片数据的编码格式,是读取工具选择解码方式的关键依据。在最新 1.3 规范中,允许的取值包括:

format含义
png/jpg栅格瓦片(传统图片格式)
webp栅格瓦片(WebP 格式)
pbfgzip 压缩的 Mapbox Vector Tile 矢量瓦片
其他任意合法的 IETF media type

早期版本(1.0/1.1/1.2)只支持pngjpg,矢量瓦片支持是 1.3 才加入的重要变化。

概念 7:bounds 与 center—— 地图的范围与默认视角

  • bounds:描述瓦片数据集覆盖的最大范围,使用 WGS 84 经纬度,格式为 OpenLayers 的left,bottom,right,top。例如全球(不含两极)为-180.0,-85,180,85
  • center:描述地图打开时的默认视角,格式为经度,纬度,缩放级别,例如-122.1906,37.7599,11(旧金山)。

这两个键能帮助地图客户端快速定位与渲染,新建数据集时建议务必填上。

概念 8:minzoom 与 maxzoom—— 缩放级别的上下限

minzoommaxzoom分别表示数据集提供瓦片的最低与最高缩放级别,客户端据此判断"哪些级别可以请求"。值得一提的是,未来版本的规范计划把boundsminzoommaxzoom都升级为必需键,所以现在建数据集时最好一次性写全,避免将来不兼容。

概念 9:PBF 矢量瓦片—— 1.3 时代的矢量革命

1.3 规范的最大亮点是正式支持矢量瓦片。当formatpbf时,瓦片数据是 gzip 压缩的 Mapbox Vector Tile 数据,同时metadata表中必须包含一个json键,用来描述瓦片内的图层结构:

  • vector_layers:图层清单,包含每个图层的idfields(字段名与类型:Number / Boolean / String),以及可选的descriptionminzoommaxzoom
  • tilestats:可选的图层统计信息,含属性示例值与数值范围,便于前端做样式匹配。

矢量瓦片的优势是体积小、可动态样式化,是目前 Web 地图的主流方案。🚀

概念 10:UTFGrid 交互网格—— 让瓦片"可点击"

UTFGrid 是让静态瓦片具备交互能力的轻量方案,例如鼠标悬停显示地名。从 1.2 起,UTFGrid 从 MBTiles 中独立为配套规范(仓库中1.1/utfgrid.md仍保留完整说明与示例)。在 MBTiles 数据库中,它对应两张可选表:

  • grids:存放 gzip 压缩的 UTFGrid 数据;
  • grid_data:存放 key 到 JSON 对象的映射。

UTFGrid 的核心思想是用一长串字符代替逐像素存储信息,把 256×256 瓦片的交互数据压缩到极小体积(gzip 后通常不足 2KB),非常适合浏览器场景。服务端还可通过layer.json(formatter 格式化函数、legend 图例)与*.grid.json端点提供交互数据,详见1.1/interaction.md

附:MBTiles 术语速查表

术语一句话解释
TilesetMBTiles 文件,即一个瓦片数据集
Tile256×256 的地图瓦片
SQLiteMBTiles 的容器数据库
TMS瓦片地图服务规范,MBTiles 坐标遵循它
XYZ常见瓦片 URL 坐标系,Y 轴与 TMS 相反
Spherical Mercator球形墨卡托投影,MBTiles 唯一支持的投影
WGS 84经纬度坐标系统,bounds/center 使用它
blobSQLite 的二进制类型,存放瓦片原始数据
gzip压缩格式,pbf 与 grids 数据使用
overlay / baselayer叠加层 / 底图层
magic numberSQLite 官方为 MBTiles 分配的文件标识

快速了解:MBTiles 版本演进

想读透规范,建议按版本顺序阅读仓库中的规格文档:

版本关键变化文档
1.0基础版本,metadata 含 name/type/version/description1.0/spec.md
1.1format 升级为必需键,bounds 建议提供,加入 UTFGrid 交互1.1/spec.md1.1/utfgrid.md
1.2UTFGrid 独立成规范1.2/spec.md
1.3支持矢量瓦片(pbf),修订 metadata1.3/spec.md

版本变更记录可查看CHANGELOG.md,交互细节可参考1.1/interaction.md与示例文件1.1/demo.json

常见问题(FAQ)

MBTiles 是什么?MBTiles 是一种把瓦片地图数据存进 SQLite 数据库的开放规范,文件后缀通常为.mbtiles,一个文件就是一个完整的瓦片数据集。

MBTiles 能存什么?可以存栅格瓦片(png/jpg/webp)、矢量瓦片(pbf)以及 UTFGrid 交互数据。

如何查看 MBTiles 文件内容?因为它就是 SQLite 数据库,用任意 SQLite 工具(如 sqlite3 命令行或数据库管理软件)即可直接打开,查看metadatatiles等表的结构与数据。

MBTiles 与在线瓦片服务有什么区别?在线瓦片服务按需返回单张瓦片,而 MBTiles 把整组瓦片打包在一个文件里,天然适合离线地图、内网分发与数据交换。

结语

至此,MBTiles 的 10 个核心概念与常见术语你已经全部掌握:从 SQLite 容器、瓦片坐标,到 metadata 元数据、PBF 矢量瓦片和 UTFGrid 交互,这套知识足以支撑你读懂任何一份 MBTiles 数据集。下一步,建议打开仓库中的1.3/spec.md对照本文逐条验证,再找个真实的.mbtiles文件用 SQLite 工具"解剖"一遍,入门就是水到渠成的事。祝你玩得开心!🎉

【免费下载链接】mbtiles-specspecification documents for the MBTiles tileset format项目地址: https://gitcode.com/gh_mirrors/mb/mbtiles-spec

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询