1.MBTiles初步了解
MBTiles是一个在SQLite 数据库存储瓦片地图数据的标准。MBTiles 仅支持切片数据,包括矢量、栅格瓦片,它使得数以百万的瓦片数据存储在一个文件中,而且SQLite数据库支持多种平台,MBTiles在移动设备上浏览瓦片数据有一定的优势。
-
SQLite数据库
SQLites是一个轻量级的嵌入数据库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。
可以运行熟悉的SQL SELECT、INSERT、UPDATE语句,并创建表、索引、视图
每个.sqlite文件是一个独立的数据
SQLite数据库可以通过navicate打开
2.MBTiles特点
- 遵循 TMS 规范来生成和组织地图瓦片。即原点坐标为左下角,Y轴坐标向上。
- 只支持 Web Mercator 投影(EPSG:3857 或 EPSG:900913)。
- 表的文本列中的所有文本都必须编码为UTF-8
- 瓦片尺寸为 256 X 256。支持格式:jpg 或 png
- 通过建立视图,减少重复瓦片的存储,减少数据大小。
- 后缀名为.mbtiles,可以通过一般的 SQLite 查看器查看,也可通过QGIS查看。
- 瓦片比例尺固定。参照下表:
3.MBTiles表
MBTiles 存储格式通过元数据表”metadata”,和 tiles 视图,map 数据表,image 数据表一起管理地图瓦片数据。其中metadata和tiles是必须包含的表格
3.1metadata 元数据表
metadata元数据表采用键值对的形式来存储地图瓦片数据的相关设置,包括两个文本类型的表name和value
metadata表必须包含name和format字段
元数据表个字段描述参考:mbtile_github
-元数据表各字段描述与例子(来自iserver11教程)
举例:
3.2.tiles 视图
包括所有的瓦片数据和用于定位瓦片数据的一些值。
- zoom_level、tile_column和tile_row列必须按照瓦片地图服务规范对瓦片的位置进行编码
- 在TMS瓦片方案中,11/327/791的瓦片被插入为zoom_level 11, tile_column 327, and tile_row 1256,因为1256是2^11-1-791。
- tile_data列必须包含作为blob的关联瓦片的原始二进制图像或矢量瓦片数据(数据库看会乱码)
- 使用 tiles 视图的好处在于可以减少冗余瓦片。地图中像海洋或空旷的土地等区域包含有成千上万重复而冗余的纯色瓦片。MBTiles 通过拆分瓦片索引和瓦片原始图像的存储,使用视图的方式来关联二者,这样成千上万的瓦片索引就可以指向同一个瓦片图像,从而大大减少纯色瓦片的冗余存储,提升磁盘利用率以及瓦片检索效率。
- navicate打开sqlite数据库中的mbtiles如下:(tile_data是blob数据会乱码)
4.MBTile文件展示
- MBTiles原则上仅支持存储墨卡托投影的瓦片,但如果一定要存储WGS84坐标系的地图瓦片,在QGIS中可以打开,只是在显示地图时会动态投影为墨卡托。
- 直接将mbtiles文件拖入QGIS即可