MBTiles
MBTiles Specification
MBTiles is a specification for storing tiled map data in SQLite databases for immediate usage and for transfer. MBTiles files, known as tilesets, must implement the specification below to ensure compatibility with devices.
UTFGrid
The MBTiles specification previously contained the UTFGrid specification. It was removed in version 1.2 and moved into its own specification with synced version numbers - so MBTiles 1.2 is compatible with UTFGrid 1.2. The specs integrate but do not require each other for compliance.
Versions
Changelog
Roadmap
- The format will switch tile ordering to the XYZ schema popularized by OpenStreetMap and away from the Tile Map Service specification.
1.1
name='format'
row required inmetadata
table.name='bounds'
row suggested inmetadata
table.- optional UTFGrid-based interaction spec.
Concept
MBTiles is a compact, restrictive specification. It supports only tiled data, including image tiles and interactivity grid tiles. Only the Spherical Mercator projection is supported for presentation - tile display - and only latitude-longitude coordinates are supported for metadata such as bounds and centers.
It is a minimum specification - only specifying the ways in which data must be retrievable. Thus MBTiles files can internally compress and optimize data, and construct views that adhere to the MBTiles specification.
Unlike Spatialite, GeoJSON, and Rasterlite, MBTiles is not raw data storage - it is storage for presentational data, like rendered map tiles.
One MBTiles file represents a single tileset, optionally including grids of interactivity data. Multiple tilesets - layers, or maps in other terms, can be represented by multiple MBTiles files.
Implementations.
License
The text of this specification is licensed under a Creative Commons Attribution 3.0 United States License. However, the use of this spec in products and code is entirely free: there are no royalties, restrictions, or requirements.
Authors
- Tom MacWright (tmcw)
- Will White (willwhite)
- Konstantin Kaefer (kkaefer)
- Justin Miller (incanus)
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
MBTiles 1.2
Sub-sections:
- Interaction: HTTP endpoints needed for implementing interactivity
- UTFGrid: This specification relies on UTFGrid 1.2 for interactivity.
Abstract
MBTiles is a specification for storing tiled map data in SQLite databases for immediate usage and for transfer. MBTiles files, known as tilesets, must implement the specification below to ensure compatibility with devices.
Database Specifications
Tilesets are expected to be valid SQLite databases of version 3.0.0 or higher. Only core SQLite features are permitted; tilesetscannot require extensions.
MBTiles databases can optionally use the officially assigned magic number to be easily identified as MBTiles.
Database
Note: the schemas outlined are meant to be followed as interfaces. SQLite views that produce compatible results are equally valid. For convenience, this specification refers to tables and virtual tables (views) as tables.
Metadata
Schema
The database is required to contain a table or view named metadata
.
This table must yield exactly two columns named name
and value
. A typical create statement for the metadata
table:
CREATE TABLE metadata (name text, value text);
Content
The metadata table is used as a key/value store for settings. Five keys are required:
name
: The plain-english name of the tileset.type
:overlay
orbaselayer
version
: The version of the tileset, as a plain number.description
: A description of the layer as plain text.format
: The image file format of the tile data:png
orjpg
One row in metadata
is suggested and, if provided, may enhance performance.
bounds
: The maximum extent of the rendered map area. Bounds must define an area covered by all zoom levels. The bounds are represented inWGS:84
- latitude and longitude values, in the OpenLayers Bounds format - left, bottom, right, top. Example of the full earth:-180.0,-85,180,85
.attribution
: An attribution string, which explains in English (and HTML) the sources of data and/or style for the map.
Several additional keys are supported for tilesets that implement UTFGrid-based interaction.
Tiles
Schema
The database is required to contain a table named tiles
.
The table must yield four columns named zoom_level
, tile_column
, tile_row
, and tile_data
. A typical create statement for the tiles
table:
CREATE TABLE tiles (zoom_level integer, tile_column integer, tile_row integer, tile_data blob);
Content
The tiles table contains tiles and the values used to locate them. The zoom_level
, tile_column
, and tile_row
columns follow the Tile Map Service Specification in their construction, but in a restricted form:
The global-mercator (aka Spherical Mercator) profile is assumed
The tile_data blob
column contains raw image data in binary.
A subset of image file formats are permitted:
png
jpg
Grids
See the UTFGrid specification for implementation details of grids and interaction metadata itself: the MBTiles specification is only concerned with storage.
Schema
The database can have optional tables named grids
, grid_data
.
The grids
table must yield four columns named zoom_level
, tile_column
, tile_row
, and grid
. A typical create statement for the grids
table:
CREATE TABLE grids (zoom_level integer, tile_column integer, tile_row integer, grid blob);
The grid_data
table must yield five columns named zoom_level
, tile_column
, tile_row
, key_name
, and key_json
. A typical create statement for the grid_data
table:
CREATE TABLE grid_data (zoom_level integer, tile_column integer, tile_row integer, key_name text, key_json text);
Content
The grids
table contains UTFGrid data, gzip compressed.
The grid_data
table contains grid key to value mappings, with values encoded as JSON objects.
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Implementations
Brendan Ward edited this page on Sep 8 · 65 revisions
<?XML:NAMESPACE PREFIX = "[default] http://www.w3.org/2000/svg" NS = "http://www.w3.org/2000/svg" />Pages 1
Clone this wiki locally
1.1 Compliant
- Mapbox
- TileStream
- Mapbox iOS SDK (example)
- GDAL
- node.js: mbtiles-generator
- python: rio-mbtiles (write)
- python: mbutil (read/write)
- python: landez (read/write) (uses mbutil)
- python: TileStache (code) (read/write) - a full, high-quality tile server
- python: python-mbtiles
- python: TileCloud
- python: servembtiles a pure python3 wsgi application for serving MBTiles.
- python: gdal2mbtiles - convert GDAL-readable datasets into an MBTiles file (write)
- python: tpkutils (write) - convert ArcGIS tile packages into MBtiles 1.1.
- proprietary: Arc2Earth (write)
- python: mapproxy (announcement) (read/write)
- proprietary: maperitive (write)
- PHP: mbtiles-generator (read/write)
- python mbtiles2s3
- objc: osm2mbtiles
- C++: tilemaker (write vector tiles)
Others
- ruby: silent_cartographer
- python/Django: django-mbtiles
- objc: MapDBImporter (write)
- java/android: MBTilesDroidSpitter (example) (read)
- objc/iPhone: Maptual (read)
- java/Android: Locus (read)
- java/Android: MapIt (read)
- Windows compatible viewer: MBTilesViewer (read)
- java/Android: Nutiteq SDK
- Python: MBTiles-Extractor
- Java/Processing: Unfolding (read) (example)
- PHP: tileserver-php
- PHP: MBTiles-PHP
- PHP: PHP-MBTiles-Server
- PHP: TilePhlox
- ASP.NET: tilecannon
- Python: MBTiles-extractor
- C++: Example C++ mbtiler
Applications
- js: TileMill (write)
- TileMill OS X QuickLook & Spotlight plugins (read)
- Portable Basemap Server An easy to use WPF application and has implemented map tile part of Esri’s “GeoServices REST Specification” and OGC WMTS specification (read/write)
- C++: osgEarth (read)
- iOS/Android/Web: Fulcrum- mobile field data collection (read)
- C: Viking GPS Desktop application. Linux + Windows (read)
- python: QTiles QGIS plugin (write)
- Windows: TilingTools - raster to tiles (read/write)
Websites
MBTiles的更多相关文章
- 与你相遇好幸运,mbview的mbtiles文件分析
mbview是一个查看.mbtiles文件的本地程序. https://github.com/mapbox/mbview .mbtiles文件就是一个Sqlite文件,用Navicat Premium ...
- 支持 MBTiles 规范的预缓存
SuperMap iServer 支持生成符合MBTiles规范的预缓存(MBTiles是由MapBox制定的一种将瓦片地图数据存储到SQLite数据库中并可快速使用,管理和分享的规范. 该规范由Ma ...
- MBTiles地图瓦片管理工具
采用C#+GMap.NET+MBTiles数据库来实现. 具有以下功能: 1) 支持单个文件追加到mbtiles数据库. 2) 支持批量导入Google切片组织的地图瓦片. 3) 支持直接对MB ...
- Exploring the MapBox stack: MBTiles, TileJSON, UTFGrids and Wax
转自:http://blog.thematicmapping.org/2012/11/exploring-mapbox-stack-mbtiles-tilejson.html In my last b ...
- 基于 MBTiles 规范扩展的缓存文件格式说明
MBTiles 是由 MapBox 制定的一种将瓦片地图数据存储到SQLite数据库中并可快速使用,管理和分享的规范.该规范由MapBox制定,详见http://mapbox.com/mbtiles- ...
- MBTIles实现
MBTIles实现 3.1 Compliant(符合) python: raster2mb (write) python: mbutil (read/write) python: landez (wr ...
- MBTiles 1.2 规范翻译
MBTiles 1.2 可以参考超图的文档MBTiles扩展 具体实现可以参考浅谈利用SQLite存储离散瓦片的思路和实现方法 mapbox提供了一个简单实现测试代码,github地址在这里https ...
- [转]MBTiles 离线地图演示 - 基于 Google Maps JavaScript API v3 + SQLite
MBTiles 是一种地图瓦片存储的数据规范,它使用SQLite数据库,可大大提高海量地图瓦片的读取速度,比通过瓦片文件方式的读取要快很多,适用于Android.IPhone等智能手机的离线地图存储. ...
- [转]MBTiles移动存储简介
首先奉上官网地址http://mapbox.com/developers/mbtiles/#storing_tiles 由于英文水平有限,看资料很费眼睛,特将它翻译成中文 存储瓦片 地图制作者面对一个 ...
随机推荐
- 在Linux配置Nginx web服务器步骤
系统环境:centos7 需要软件:nginx-1.3.16.tar.gz libevent-2.0.21-stable.tar.gz Pcre 和 pcre-devel nginx下载地址:h ...
- centos6和centos7防火墙的关闭
CentOS6.5查看防火墙的状态: [zh@localhost ~]$service iptable status 显示结果: [zh@localhost ~]$service iptable st ...
- 基于AngularJs的上传控件-angular-file-upload
今天跟大家分享的是一个依赖于angular的上传控件. 前段时间做项目遇到一个需求是上传文件,大概需要实现的样式是这样子的,见下图: 需要同时上传两个文件.并且规定文件格式和文件大小.因为前端框架使用 ...
- embedding mono实战笔录(一)
最近在给自己的服务器节点添加脚本功能,考虑到 执行性能.开发效率.调试效率.可维护性.严谨性 五大要素,最终选用C#作为脚本语言,并使用mono作为中间层,使其具备跨平台特性,以备具有在Windows ...
- Windows更新清理工具 (winsxs 清理工具)
Windows 更新清理工具是一款效果非常显著的Windows7.Windows8操作系统清理优化工具!经常安装系统的朋友相比有所体会,刚刚安装完成的Win7.Win8其实占的空间并不大,去掉页面文件 ...
- RCP:ISourceLocator翻译
org.eclipse.debug.core.model.ISourceLocator A source locator locates source elements for stack frame ...
- 【腾讯Bugly干货分享】微信热补丁Tinker的实践演进之路
本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/57ad7a70eaed47bb2699e68e Dev Club 是一个交流移动 ...
- 在 Linux 中使用 Eclipse 和 Gnu Autotools 管理 C/C++ 项目
在我该系列的之前的所有随笔中,都是采用 Linux 发行版自带的包管理工具(如 apt-get.yum 等)进行软件的安装和卸载,从来没有向大家展示使用源代码自行编译安装软件的方法.但是长期混迹于 U ...
- HTML5笔记:跨域通讯、多线程、本地存储和多图片上传技术
最近做项目在前端我使用了很多新技术,这些技术有bootstrap.angularjs,不过最让我兴奋的还是使用了HTML5的技术,今天我想总结一些HTML5的技术,好记性不如烂笔头,写写文章可以很好的 ...
- Html5 直接插入排序
直接插入排序算法(Straight Insertion Sort),是排序算法中简单的一种算法,基本思想如下: 将一个记录插入到已排序好的有序表中,从而得到一个新,记录数增1的有序表.即:先将序列的第 ...