
深度解析MBTiles的metadata表瓦片数据集元数据字段完全手册【免费下载链接】mbtiles-specspecification documents for the MBTiles tileset format项目地址: https://gitcode.com/gh_mirrors/mb/mbtiles-specMBTiles 是一种把瓦片地图数据打包进 SQLite 数据库的开放规范由 mbtiles-spec 项目维护生成的 .mbtiles 文件也被称为瓦片集tileset。而在整个 MBTiles 数据库中metadata表就像瓦片数据集的身份证记录着名称、格式、范围、缩放级别等全部关键元数据字段。无论你是地图开发者、GIS 从业者还是离线地图使用者理解 MBTiles metadata 表都是用好瓦片数据的第一步。本文将从表结构、必填字段、可选字段到矢量瓦片专属字段带你一次看懂 MBTiles 元数据规范。为什么说 metadata 表是 MBTiles 的身份证MBTiles 本质上是一个麻雀虽小、五脏俱全的 SQLite 数据库其中通常包含metadata、tiles两张核心表可能还有grids、grid_data交互网格表。其中tiles表存放实际的瓦片二进制数据图片或矢量瓦片metadata表用键值对key/value形式描述这个瓦片集是什么、覆盖哪里、能用到几级缩放。打个比方tiles表是图书正文metadata表就是书的封面和版权页。地图引擎加载 MBTiles 文件时最先读取的往往是 metadata 表用它来决定地图的默认视角、缩放范围和数据来源声明。MBTiles metadata 表结构两列搞定一切在 MBTiles 规范如1.3/spec.md中metadata表的定义非常精简数据库必须包含一个名为metadata的表或视图且恰好包含两列文本类型的name和valueCREATE TABLE metadata (name text, value text);没错整个 metadata 表就是一个最简单的键值存储——name是字段名value是字段值每一行都是一种元数据。查看一个 MBTiles 文件的元数据只需一条 SQLSELECT * FROM metadata; 规范还要求metadata 表以及所有表的 text 列中的文本必须使用UTF-8 编码否则可能导致地图客户端解析异常。另外MBTiles 规范允许用 SQLite 视图View来模拟表结构所以不同工具生成的 MBTiles 内部实现可能不同但对外暴露的字段必须一致。MBTiles 必填字段name 和 format 缺一不可在最新的MBTiles 1.3规范中metadata表有两个**强制要求MUST**的字段任何合规的瓦片集都必须包含字段类型含义namestring瓦片集的人类可读名称如 北京离线地图formatstring瓦片数据的文件格式pbf、jpg、png、webp或其他 IETF 媒体类型其中format的值直接影响地图引擎的解析方式png/jpg/webp栅格图片瓦片pbfgzip 压缩的 Mapbox Vector Tile 矢量瓦片体积小、可交互、可样式化是目前在线地图的主流格式。如果format是pbf则 metadata 表还必须额外包含一个json字段下文详细介绍用于描述矢量图层结构。四个黄金建议字段bounds、center、minzoom、maxzoom ️MBTiles 1.3 规范建议SHOULD瓦片集包含以下四个字段它们能让地图客户端快速定位、正确渲染官方强烈推荐补齐字段格式示例作用bounds逗号分隔的数字WGS 84left,bottom,right,top-180.0,-85,180,85瓦片集覆盖的最大地理范围center经度,纬度,缩放级别-122.1906,37.7599,11地图默认视角的中心点和缩放级别minzoom数字0瓦片集提供数据的最低缩放级别maxzoom数字14瓦片集提供数据的最高缩放级别这里有几个容易踩坑的细节bounds的坐标顺序是 left, bottom, right, top即 西经,南纬,东经,北纬与直觉中的 左,上,右,下 不同写反会导致地图范围错乱bounds必须是 WGS 84 经纬度且要覆盖所有缩放级别的瓦片范围minzoom/maxzoom直接决定客户端最多能放大到哪一级写小了会显示缺瓦写大了会请求不存在的瓦片。MBTiles 可选字段attribution、description、type、version除必填和建议字段外MBTiles 1.3 还定义了四个**可选MAY**字段用于补充瓦片集的说明信息字段类型含义attributionHTML 字符串数据来源和样式版权声明如© OpenStreetMap contributorsdescriptionstring瓦片集内容的文字描述typestringoverlay叠加层或baselayer底图versionnumber瓦片集自身的版本号注意不是 MBTiles 规范版本其中attribution在商业地图应用中尤其重要——使用 OSM 等开放数据时必须通过该字段保留版权信息。而version表示的是这个瓦片集修订了几版与 MBTiles 规范的 1.0/1.1/1.3 完全无关千万别混淆。矢量瓦片专属metadata 表中的 json 字段 当format为pbf矢量瓦片时metadata 表必须包含一个名为json的行其值是一个UTF-8 编码的 JSON 字符串主要描述瓦片内包含哪些图层、每个图层有哪些属性。它的核心结构是vector_layers数组{ vector_layers: [ { id: roads, description: 道路图层, minzoom: 0, maxzoom: 14, fields: { name: String, class: String, lanes: Number } } ] }vector_layers中每个图层对象的关键字段id图层 ID对应矢量瓦片规范中的图层名称fields属性字典键是属性名值只能是Number、Boolean或String三种类型如果某属性在不同要素间类型不固定应声明为Stringdescription图层内容的可读描述可选minzoom/maxzoom该图层出现的缩放级别范围可选且不能超出瓦片集整体的 minzoom/maxzoom——例如次要道路图层可能只在高层级缩放时才出现。此外json中还可以包含可选的tilestats字段以 geostats 格式记录每个图层的要素数量、几何类型、属性统计如数值属性的最小值/最大值、常见取值样本方便客户端做图层样式和分析。MBTiles metadata 字段的版本演进从 1.0 到 1.3 metadata 表的字段要求在不同版本中变化明显理解演进脉络有助于兼容老旧的 .mbtiles 文件MBTiles 版本必填字段建议字段关键变化1.0name、type、version、description无最早的四个基础字段1.1增加 formatboundsformat 变为必填bounds 被建议1.2同 1.1增加 attribution新增 attributionUTFGrid 独立成规范1.3name、formatbounds、center、minzoom、maxzoom依据实际使用习惯重订type/version/description 降为可选新增矢量瓦片 json 字段规范的详细定义分别见1.0/spec.md、1.1/spec.md、1.2/spec.md和1.3/spec.md。如果你在维护老工具生成的 MBTiles 文件建议对照 1.3 规范补齐建议字段提升兼容性。快速查看 MBTiles metadata 表的实用方法 想实际查看一个 .mbtiles 文件的 metadata 表用命令行工具 sqlite3 即可无需安装地图软件sqlite3 your_tileset.mbtiles SELECT * FROM metadata;也可以用.mode line让输出更易读sqlite3 your_tileset.mbtiles .mode line SELECT * FROM metadata;对于不熟悉命令行的用户DB Browser for SQLite 等图形工具也能直接打开 .mbtiles 文件浏览 metadata 表非常直观。编写 metadata 表的实用建议与常见坑 ⚠️最后总结几条实战经验帮助新手少走弯路先写 name 和 format这是硬性要求缺了它们地图客户端可能直接拒绝加载尽量补齐四个建议字段bounds、center、minzoom、maxzoom 能让客户端开箱即用避免手动设置视角牢记 bounds 的坐标顺序left, bottom, right, top别写成 top/bottom 颠倒pbf 瓦片务必写 json 字段没有 vector_layers 说明矢量瓦片的图层信息将无法被正确解析所有文本保持 UTF-8尤其是 json 字符串乱码问题多半出在编码上依赖规范之外的字段需谨慎自定义 metadata 字段可能造成跨工具兼容性问题。metadata 表的未来compression 等新字段 MBTiles 规范仍在演进。官方文档已预告未来版本中 metadata 表将新增compression字段用于声明瓦片数据的压缩方式同时bounds、minzoom、maxzoom三个字段将升级为必填项。提前按规范补齐字段能让你的瓦片数据集在未来版本中保持长期兼容。总结MBTiles 的 metadata 表虽然结构极简只有 name 和 value 两列却承载着瓦片集的核心信息name、format两个必填字段决定了瓦片集的身份bounds、center、minzoom、maxzoom四个建议字段决定了地图的展示方式而矢量瓦片专用的json字段则揭示了图层与属性的完整结构。掌握这些 MBTiles 元数据字段你就能轻松读懂、校验甚至修复任意一个 .mbtiles 瓦片数据集。对照1.3/spec.md规范文档实践一遍你会很快成为 MBTiles 元数据专家【免费下载链接】mbtiles-specspecification documents for the MBTiles tileset format项目地址: https://gitcode.com/gh_mirrors/mb/mbtiles-spec创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考