MBTiles 与 SMTiles 格式的地图瓦片 |
SuperMap iServer 、iEdge支持生成符合 MBTiles 规范的地图瓦片,以及一种对 MBTiles 格式的扩展格式,称为 SMTiles 格式。MBTiles 是由 MapBox 制定的一种将瓦片地图数据存储到 SQLite 数据库中并可快速使用,管理和分享的规范。
关于 MBTiles 的其他信息,请参考: http://mapbox.com/mbtiles-spec/。
MBTiles 格式的瓦片要求切图的地图坐标系统为:Web Mercator,即 PCS_WGS_1984_WORLD_MERCATOR ,EPSG Code:3857。MBTiles 规范按照 OSGeo 的 TMS 规范来生成和组织地图瓦片,仅支持 Web Mercator 坐标系下的固定比例尺集合。如表1所示,这种比例尺定义的初始化显示级别0中包含了1张覆盖全球的256*256大小的切片,并且定义原点坐标为(-20037508.34,-20037508.34),即全球范围的左下角。MBTiles 格式的地图瓦片,支持的图片存储类型为 PNG 和 JPG。
显示级别 | 地图宽高 (像素) | 切片数量 | 地面分辨率(米 / 像素) | 地图比例尺(96 dpi) |
0 | 256 | 1 | 156543.033928 | 1:591658710.909131 |
1 | 512 | 4 | 78271.516964 | 1:295829355.454566 |
2 | 1024 | 16 | 39135.758482 | 1:147914677.727283 |
3 | 2048 | 64 | 19567.879241 | 1:73957338.863641 |
4 | 4096 | 256 | 9783.939621 | 1:36978669.431821 |
5 | 8192 | 1024 | 4891.969810 | 1:18489334.715910 |
6 | 16384 | 4096 | 2445.984905 | 1:9244667.357955 |
7 | 32768 | 16384 | 1222.992453 | 1:4622333.678978 |
8 | 65536 | 65536 | 611.496226 | 1:2311166.839489 |
9 | 131072 | 262144 | 305.748113 | 1:1155583.419744 |
10 | 262144 | 1048576 | 152.874057 | 1:577791.709872 |
11 | 524288 | 4194304 | 76.437028 | 1:288895.854936 |
12 | 1048576 | 16777216 | 38.218514 | 1:144447.927468 |
13 | 2097152 | 67108864 | 19.109257 | 1:72223.963734 |
14 | 4194304 | 268435456 | 9.554629 | 1:36111.981867 |
15 | 8388608 | 1073741824 | 4.777314 | 1:18055.990934 |
16 | 16777216 | 4294967296 | 2.388657 | 1:9027.995467 |
17 | 33554432 | 17179869184 | 1.194329 | 1:4513.997733 |
18 | 67108864 | 68719476736 | 0.597164 | 1:2256.998867 |
19 | 134217728 | 274877906944 | 0.298582 | 1:1128.499433 |
20 | 268435456 | 1099511627776 | 0.149291 | 1:564.249717 |
21 | 536870912 | 4398046511104 | 0.074646 | 1:282.124858 |
22 | 1073741824 | 17592186044416 | 0.037323 | 1:141.062429 |
MBTiles 格式的地图瓦片存储形式 *.mbtiles 文件,命名由地图名、Hashcode、瓦片的宽和高、瓦片格式,T(表示透明)及 .mbtiles 后缀组成,如:China_69470548_256X256_PNG_T.mbtiles,China_69470548_256X256_PNG.mbtiles。
SuperMap iServer 为了满足应用需求,不仅支持生成和使用满足 MBTiles 规范的瓦片地图数据,并且基于原规范对 MBTiles 格式进行了扩展,并把扩展后的格式命名为 SMTiles。相对于 MBTiles 格式,SMTiles 支持任意坐标系,支持任意比例尺,切片的起算原点为任意指定点,行列号的方向为原点开始向左下递增。此外,地图瓦片的存储类型支持 PNG、 JPG,以及 PNG 和 JPG 混合格式的瓦片,
SMTiles 格式的地图瓦片存储形式 *.smtiles 文件,命名由地图名、Hashcode、瓦片的宽和高、瓦片格式,T(表示透明)及 .smtiles 后缀组成,如:China_69470548_256X256_PNG_T.smtiles,China_69470548_256X256_PNG.smtiles。
MBTiles 与 SMTiles 格式的地图瓦片的存储机制基本相同,都是通过元数据表”metadata”,和 tiles 视图,map 数据表,image 数据表一起管理地图瓦片数据,仅在 tiles 视图中略有不同。
采用键值对的形式来存储地图瓦片数据的相关设置,包括两个文本类型的字段”name”和”value”,与 MBTiles 1.1规范一致。表结构如下图所示:
元数据表的内容举例如表1所示:
表2 元数据表举例
name |
value |
name | World |
type | baselayer |
version | 1.1 |
ext_spec_version | 201310 |
description | World created on 2012-12-17 16:51:22 by SuperMap iServer |
format | PNG |
bounds | -180.0,-90.0,180.0,90.0 |
ext_spec_version | 201309 |
axis_origin | -180.0,90.0 |
axis_positive_direction |
RightDown |
crs_wkid |
4326 |
crs_wkt | GEOGCS["WGS 84", DATUM["WGS_1984", SPHEROID["WGS 84", 6378137, 298.257223563, AUTHORITY["EPSG", "7030"]], AUTHORITY["EPSG", "6326"]], PRIMEM["Greenwich", 0, AUTHORITY["EPSG", "8901"]], UNIT["degree", 0.0174532925199433, AUTHORITY["EPSG", "9122"]], AUTHORITY["EPSG", "4326"]] |
tile_height | 256 |
tile_width | 256 |
resolutions | 78271.516964,529.1666666666666 |
scales | 5.0E-7 |
transparent | false |
mapStatusHashCode | -411043745 |
map_parameter | {"scale":0.00101610071425,"clipRegion":{"center":null,"id":0,"style… |
compatible | false |
元数据表的各字段(keys)说明如表2所示:
表3 元数据表各字段描述
字段名称 | 是否必须 | 是否 iServer 扩展 | 说明 |
name | 是 | 否 | 地图的英文名称,如果地图名称为中文会自动转换为中文名称的拼音。 |
type | 是 | 否 | 地图类型,其值可以是 overlay 或 baselayer。 |
version | 是 | 否 | 地图瓦片数据的版本,MBTiles 规范的版本是 1.1。 |
description | 是 | 否 | 描述信息。 |
format | 是 | 否 | 瓦片数据的格式:png、jpg 或 jpg_png,其中 jpg_png 是 V5缓存支持的混合格式。 |
bounds | 否 | 否 | 地图的切图范围,单位为度。iServer 中 bounds 的格式为:左,下,右,上,例如:-180,-85,180,85。 |
ext_spec_version | 否 | 是 | SuperMap iServer 基于 MBTiles 规范扩展的版本,例如这里是:201310。 |
axis_origin | 否 | 是 | 切图原点的位置。 |
axis_positive_direction | 否 | 是 | 坐标系中坐标轴的正方向的枚举类型(RightDown, RightUp, LeftDown, LeftUp),例如:x 轴向右 y 轴向下 RightDown。 |
crs_wkid | 否 | 是 | 坐标系的 EPSG Code(-1000为用户自定义坐标系,0为普通平面坐标系)。 |
crs_wkt | 否 | 是 | 用 wkt 表示的地理坐标系信息。(wkt:由开放地理空间联盟(OGC)制定的一种文本标记语言,详见:http://docs.geotools.org/stable/javadocs/org/opengis/referencing/doc-files/WKT.html) |
tile_height | 否 | 是 | 瓦片高度,通常为256。 |
tile_width | 否 | 是 | 瓦片宽度,通常为256。 |
resolutions | 否 | 是 | 分辨率集合,各级瓦片对应的分辨率。 |
scales | 否 | 是 | 各级分辨率对应的比例尺集合。 |
transparent | 否 | 是 | 地图图片是否透明。 |
mapStatusHashCode | 否 | 是 | 地图名称的哈希码,例如地图 World 的 HashCode:-411043745。 |
map_parameter | 否 | 是 | 地图默认参数的 json 字符串,地图默认参数包含了地图的所有特征信息,如地图的名称 name、地图的比例尺 mapScale 等。 |
compatible | 否 | 是 | 是否兼容 MBTiles 规范,仅当 wkid 字段为3857并且分辨率集合中所有分辨率均属于 MBTiles 规范分辨率时为 true,否则为 false。 |
包括所有的瓦片数据和用于定位瓦片数据的一些值。
MBTiles 格式支持 MBTiles1.1 规范中规定的 zoom_level、 tile_colum、 tile_row、 tile_data 四个字段,SMTiles 格式在此基础上增加了 resolution 字段用以支持任意比例尺和分辨率,且 zoom_level 统一填充为-1,如下图所示。
注:当瓦片对应的地面分辨率与表 3 中的地面分辨率无法对应时,zoom_level 值为-1。
使用 tiles 视图的好处在于可以减少冗余瓦片。地图中像海洋或空旷的土地等区域包含有成千上万重复而冗余的纯色瓦片,类似下图这种太平洋中蔚蓝色的瓦片。在小比例尺中,它可能只有几张,但在大比例尺如1:10000的地图中,就会存在上百万这种单一颜色的蓝色瓦片。MBTiles 通过拆分瓦片索引和瓦片原始图像的存储,使用视图的方式来关联二者,这样成千上万的瓦片索引就可以指向同一个瓦片图像,从而大大减少纯色瓦片的冗余存储,提升磁盘利用率以及瓦片检索效率。
包括用于定位瓦片数据的值和瓦片 id。除 MBTiles1.1规范的 zoom_level、tile_colum、tile_row、tile_id 四个字段外增加了 resolution 字段,支持任意比例尺或分辨率,create_time 字段标识瓦片生成时间。若切片为单色图片 tile_id 为图片 RGB 值的16进制值组合而成,比如红色图片 tile_id 为”ff0000”,其他非单色图片 tile_id 为 resolution_x_y 的拼串。
图4 map 表结构图
包括瓦片 id 和瓦片数据。
根据 resolution 值或对应比例尺读写对应瓦片数据,MBTils 格式的比例尺与分辨率,请参考表1。