瓦片数据MBTiles存储简介

bigemap瓦片数据MBTiles存储简介

发布时间:2018-01-17 版权:

 

地图制作者面对一个数以百万计的地图瓦片残酷的现实:大多数文件系统和传输协议对处理数以百万计的图像不是很有效,在磁盘为FAT32格式中,一个文件夹中最多含有65536个文件,HFS最多能列出32,767个文件,EXT3超过20000个文件时会变的很慢。不论是你通过USB还是网络来复制数以百万计的瓦片数据是低效并且缓慢的。MBTiles利用SQLite数据库来存储,并提供一种规范,使得数以百万的瓦片数据存储在一个文件中,而且SQLite数据库支持多种平台,所以使用MBTiles在移动设备上浏览瓦片数据是比较理想的方式。

  • 简单介绍下SQLITE

如果你之前使用过SQL数据库,比如MySQL或PostgreSQL),那么使用SQLite数据库会觉得很熟悉,您可以运行熟悉的SQL SELECT、INSERT、UPDATE语句,并创建表、索引、视图。SQLite和其他数据库之间的区别是:每个SQLite数据库只包含在一个文件,没有外部权限系统,数据库后台进程,或配置。每个.sqlite文件是一个独立的数据库,你可以从电脑复制一个.sqlite文件到移动设备中,它的行、表和索引都可完全使用。

SQLite是很小的并且是无处不在的:iTunes使用它来存储元数据,firfox使用它来存储缓存信息,还有一些其他产品(虽然过时了,但仍记忆犹新)

总之,SQLite非常适合作为一个便携式,单个文件解决方案和用于存储和网络地图服务。

  • 在SQL中使用瓦片坐标

在WEB地图介绍中我们看到,瓦片是参照了他们的z / x / y 形式坐标,在磁盘存储上,他们通常存储在以z、x为名字上的目录中,这样就有一个瓦片文件路径是0/0/0.png,MBTiles提供了这样一个功能:瓦片表

wp1.png

这张表很容易查询并回答一个特定的瓦片或问题,例如“在这张地图中级别为8时有多少张瓦片?”这张表很容易查询并回答一个特定的瓦片或问题,例如“在这张地图中级别为8时有多少张瓦片?”这张表很容易查询并回答一个特定的瓦片或问题,例如“在这张地图中级别为8时有多少张瓦片?”这张表很容易查询并回答一个特定的瓦片或问题,例如“在这张地图中级别为8时有多少张瓦片?”这张表很容易查询并回答一个特定的瓦片或问题,例如“在这张地图中级别为8时有多少张瓦片?”这张表很容易查询并回答一个特定的瓦片或问题,例如“在这张地图中级别为8时有多少张瓦片?”这张表很容易查询并回答一个特定的瓦片或问题,例如“在这张地图中级别为8时有多少张瓦片?”这张表很容易查询并回答一个特定的瓦片或问题,例如“在这张地图中级别为8时有多少张瓦片?”

wp2.png

  • 使用视图引用冗余的图像

地图覆盖大面积的纯蓝色像海洋或空的土地,造成成千上万的重复、冗余的瓦片数据,例如,4/2/8的瓦片在太平洋中间,可能看起来就是一张蓝色图片

虽然它可能是一些处于第3级,但在16级可能存在数以百万计的蓝色图片,他们都完全一样。

MBTiles通过视图使用这些冗余瓦片数据可以减少占用的空间,而不是一个单一的、文字表,MBTiles实现者经常把瓦片表分成两种:一个用来存储原始图像和一个存储瓷砖坐标对应那些图片:

wp3.png

 瓦片的表是这两个表的视图,允许成千上万的瓷砖坐标参考相同的图像大字段:

wp4.png

使用这种技术,MBTiles可以比普通文件系统存储更有效率  —有时提高60%或更多

  • MBTiles 在使用上

MBTiles是一种存储格式,他常被TileMill来导出或上传自定义地图。你可以通过MapBox ios SDK 来使用移动设备上MBTiles离线文件。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值