基于 MBTiles 规范扩展的缓存文件格式说明

MBTiles 是由 MapBox 制定的一种将瓦片地图数据存储到SQLite数据库中并可快速使用,管理和分享的规范。该规范由MapBox制定,详见http://mapbox.com/mbtiles-spec/

SuperMap iServer为了满足自身应用的需求,不仅支持生成和使用满足MBTiles规范的瓦片地图数据,并且基于原规范对MBTiles中的内容进行了扩展。扩展后的.mbtiles文件支持任意坐标系,支持任意分辨率,支持JPG和PNG混合格式的地图瓦片数据。

扩展后的.mbtiles文件仍然使用元数据表”metadata”和瓦片数据表”tiles”来对瓦片地图数据进行管理。

metadata元数据表采用键值对的形式来存储地图瓦片数据的相关设置,包括两个文本类型的字段”name”和”value”,与MBTiles 1.1规范一致。表结构如图1所示:

metadataArch.png

图1 元数据表的表结构

元数据表的内容举例如表1所示:

表1 元数据表举例

name

value

nameWorld
typebaselayer
version1.1
descriptionWorld created on 2012-12-17 16:51:22 by SuperMap iServer
formatPNG
bounds-180.0,-90.0,180.0,90.0
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_height256
tile_width256
resolutions78271.516964,529.1666666666666
scales5.0E-7
map_parameter{"scale":0.00101610071425,"clipRegion":{"center":null,"id":0,"style…
compatiblefalse

元数据表的各字段(keys)说明如表2所示:

表2 元数据表各字段描述

字段名称是否必须是否 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。
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各级分辨率对应的比例尺集合。
map_parameter地图默认参数的 json 字符串,地图默认参数包含了地图的所有特征信息,如地图的名称 name、地图的比例尺 mapScale等。
compatible是否兼容MBTiles规范,仅当wkid字段为3857并且分辨率集合中所有分辨率均属于MBTiles规范分辨率时为true,否则为false。

tiles 瓦片数据表包括所有的瓦片数据和用于定位瓦片数据的一些值。除MBTiles1.1规范的zoom_level, tile_colum, tile_row, tile_data四个字段外,增加了resolution字段,支持任意比例尺、任意分辨率。表结构如图2所示:

tilesArch.png

图2 瓦片数据表的表结构

瓦片数据的表内容举例如图3:

tilesSamp.png

图3 瓦片数据表的表内容举例

注:当瓦片对应的地面分辨率与表 3 中的地面分辨率无法对应时,zoom_level值为-1。

根据resolution值或对应比例尺读写对应瓦片数据。

表3 MBTiles各显示级别参数列表

显示级别地图宽高 (像素)切片数量地面分辨率(米 / 像素)地图比例尺(96 dpi)
02561156543.0339281:591658710.909131
1512478271.5169641:295829355.454566
210241639135.7584821:147914677.727283
320486419567.8792411:73957338.863641
440962569783.9396211:36978669.431821
5819210244891.9698101:18489334.715910
61638440962445.9849051:9244667.357955

7

32768163841222.9924531:4622333.678978
86553665536611.4962261:2311166.839489
9131072262144305.7481131:1155583.419744
102621441048576152.8740571:577791.709872
11524288419430476.4370281:288895.854936
1210485761677721638.2185141:144447.927468
1320971526710886419.1092571:72223.963734
1441943042684354569.5546291:36111.981867
15838860810737418244.7773141:18055.990934
161677721642949672962.3886571:9027.995467
1733554432171798691841.1943291:4513.997733
1867108864687194767360.5971641:2256.998867
191342177282748779069440.2985821:1128.499433
2026843545610995116277760.1492911:564.249717
2153687091243980465111040.0746461:282.124858
221073741824175921860444160.0373231:141.062429

tiles瓦片数据表中resolution存储时保留11位有效数字(四舍五入)。有效数字:从近似数的左边第一个不为0的数字起,到精确到的数为止,所有的数字叫这个近似数的有效数字(0.00123的有效数字是1,2,3,有效位数是3)。示例如表4所示:

   表4 resolution近似值计算示例

resolution实际值数据库存储的近似值
156543.03392804097156543.03393
0.000291584122791962640.00029158412279
1.194328566955871.1943285670

Java中计算resolution的参考代码如下:

public static String getResolutionString(double resolution) {

        int n = (int) Math.log10(resolution);

        int precision = 11;

        if (resolution < 1.0) {

            n--;

        }

        int scale = precision - 1 - n;

        return new BigDecimal(resolution).setScale(scale, BigDecimal.ROUND_HALF_UP).toString();

    }

转载于:https://www.cnblogs.com/janehlp/p/5641007.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值