MBTiles :https://github.com/mapbox/mbtiles-spec/blob/master/1.3/spec.md
1.MBTiles是什么
MBTiles是一个在SQLite 数据库存储瓦片地图数据的标准,该标准的目的是即时传输和使用数据。
作为一个容器格式,MBTiles可以存储任何瓦片数据, 因为用来存储数据 ,所以不能对其做任何修改。
2.如何查看
我们可以通过SQLite打开MBTiles,或QGIS查看。
GDAL的MBTiles驱动读取;QGIS就依赖于GDAL;
GDAL : MBTiles — GDAL 文档 (osgeo.cn)
3.如何发布
通过geoserve 添加插件发布;
如果存储矢量瓦片格式使用 MBTiles with vector tiles - MBTiles with vector tiles 发布。
如果存储栅格瓦片格式使用 MBTiles - MBTiles plugin 发布。
4.MBTiles中瓦片数据格式
MBTiles 中存储的瓦片为矢量瓦片和栅格瓦片;
4.1.矢量瓦片格式
MBTiles 中储存的矢量瓦片格式遵从mapbox矢量瓦片规格。
4.1.1 mapbox矢量瓦片规格
mapbox矢量瓦片规格:
mapbox矢量瓦片格式使用 Google Protocol Buffers 作为编码格式(.pbf)。Protocol Buffers 是一种与语言无关、与平台无关的可扩展机制,用于序列化结构化数据。
4.1.2 矢量瓦片规格读取(GDAL的MVT)
- GDAL 的 MVT驱动程序读取
GDAL MVT:MVT:地图框矢量平铺 — GDAL 文档 (osgeo.cn)
一般通过MVT驱动程序:矢量瓦片格式为独立文件、未压缩文件或gzip压缩文件(典型的扩展名是.pbf、.MVT、.MVT.gz)。
5 .整体关系
关于矢量瓦片中 mvt 与 pbf 的关系:
6 MBTiles爬取到发布
知道数据格式与原理后实战:
首先拿到矢量图层链接{z}/{x}/{y}.pbf 到 QGIS添加数据源 使用工具箱下载矢量瓦片;
发布:geoserve MBTiles with vector tiles 发布 。发现无法发布提示无json字段;
看文档 :
如果是 pbf
格式, 元数据表Vector tileset metadata 必须 包含这一行:
json
(JSON字符串): 列出矢量瓦片中出现的层,和名字, 和层中出现的特性所包含属性的类型。
矢量瓦片集元数据Vector tileset metadata:
json
行中的JSON对象必须包含vector_layers
键, 它的值是一个JSON对象数组。
json
行的 JSON 对象也可以包含 tilestats
键, 它的值是一个"geostats"格式的对象。
即必须包含vector_layers ,至于tilestats
无所谓。
那就添加 通过SQLite编辑:
{ "vector_layers": [{"id": "airways","description": "airways","minzoom": 0,"maxzoom": 7,"fields": {"wkt_geom": "LineString","ident": "String","type": "String"}},]}
通过QGIS矢量要素识别找到fields 与id;
再次添加成功:--->点击发布
最后成功发布;