SVTiles 格式的矢量瓦片

发送反馈


 SVTiles 是由 SuperMap 制定的一种利用 SQLite 数据库存储矢量瓦片数据的存储格式。

 SVTiles 文件的命名由地图名、Hashcode、瓦片的宽和高及.svtiles 后缀组成(如:China_-678451788_256X256.svtiles)。

iServer 9D 后的版本,矢量瓦片支持风格属性信息。生成矢量缓存时,除生成SVTiles文件以外,同时也会生成.resource后缀的风格信息文件,用于存储矢量瓦片的风格属性信息。

风格信息文件也使用SQLite 数据库存储。文件的命名方式同SVTiles一致。

SVTiles 文件

.svtiles 文件、.resource文件分别通过以下表格和视图来存储、管理矢量瓦片:

metadata 元数据表

采用键值对的形式来存储矢量瓦片数据的相关设置,包括两个文本类型的字段”name”和”value”。表结构如图所示。

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

1 元数据表举例

name

value

name China
version 201401
bounds

-20037508.342787,-20037508.342787,20037508.342787,20037508.342787

tile_origin -20037508.342787,20037508.342787

crs_wkid

3857
crs_wkt

PROJCS["User Define",

GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",

SPHEROID["WGS_1984",6378137.0,298.2572235630001,

AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],

PRIMEM["Greenwich",0.0,AUTHORITY["EPSG","8901"]],

UNIT["DEGREE",0.017453292519943295],AUTHORITY["EPSG","4326"]],

PROJECTION["Popular Visualisation Pseudo Mercator",

AUTHORITY["EPSG","1024"]],

PARAMETER["False_Easting",0.0],

PARAMETER["False_Northing",0.0],

PARAMETER["Central_Meridian",0.0],

PARAMETER["Latitude_Of_Origin",0.0],

PARAMETER["Scale_Factor",1.0],

UNIT["METER",1.0],

AUTHORITY["EPSG","3857"]]

tile_height 256
tile_width 256
 
scales 1.690163e-9,3.380327e-9
resolutions

156543.033928,78271.516964

geometry_storage_type

SuperMapJson

attribute_storage_type

Json

layer_infos

[

{"Capitals": {

        "expand_pixels": 2

    },

    "Road": {

        "expand_pixels ": 2

    },

    "Provinces": {

        "expand_pixels ": 2

    }

}

]

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

表2 元数据表各字段描述

字段名称 说明
name 地图的英文名称,如果地图名称为中文会自动转换为中文名称的拼音。
version 矢量瓦片数据的版本,当前版本201401。
bounds 地图的切图范围,使用的单位与地图单位保持一致。在 iServer 中 bounds 的格式为:左,下,右,上,例如:-180,-85,180,85。
tile_origin 切图原点的位置。
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。
scales 各级分辨率对应的比例尺集合。
resolutions 各级瓦片对应的分辨率的值。
geometry_storage_type 几何对象存储的格式。支持的格式为SuperMapJson。
attribute_storage_type 属性数据存储格式。支持的格式为Json。
layer_infos 描述各图层的元数据信息。

tiles 瓦片数据表

包括所有的矢量瓦片数据和用于定位瓦片的值。如图所示。

瓦片数据表的各值说明如表3所示。

表3 SVTiles 瓦片数据表的值说明

字段名称 数据类型 描述
resolution varchar 分辨率,瓦片对应的分辨率。
tile_colum integer 瓦片列号。

tile_row

integer

瓦片行号。
tile_id String 切片 ID。
create_time Text 创建时间。

瓦片数据集内容举例如图所示。

geometries 几何对象表

记录切片中地理要素的几何信息。如图所示

 

 

                  

几何对象表的各值说明如表4所示。

表4 SVTiles 几何对象表的值说明

字段名称 数据类型 描述

layer

Text

图层名。

fid  

Long 地理要素 ID。
tile_id

Text

切片 ID。
geometry_data Text 几何对象。

每条记录对应了一个被裁剪后的几何对象,geometry_data 存储的是像素坐标。不同级别下,同一个几何对象的像素坐标是不一样的;同一级别下,一个几何对象可能横跨多个切片(如图1所示),切片中保存的是被裁剪后的几何对象(如图2所示)。

 

图1 横跨2个切片的地理要素

图2 裁剪后的几何对象

存储格式为 SuperMapJSON,如下所示:

{

“type”:”REGION”,

“points”:[0,0,256,0,256,256,0,256,0,0,1,1,3,3,2,2,1,1],

“parts”:[5,4]

}

attributes 属性信息表

记录了地理要素的属性信息。如图所示

属性信息表的各值说明如表5所示。

  表5 SVTiles 属性信息表的值说明

字段名称 数据类型 描述

layer

Text

图层名。

fid  

Long 地理要素 ID。

attr_data

Text

属性数据。

search_values

Text 查询内容。

属性是和地理要素是一一对应的。而每个地理要素的几何对象可以分布在不同的切片中(2.3),因此 attributes 和 geometry 是1对多的关系。attr_data 的 Json 形式如下所示:

{

“NAME”:”北京”,

“PostCode”:100000,

“POP”:11510000,

“Country”:”China”

}

search_values 是以英文逗号隔开的字符串,用于快速查询。如北京的 search_values 为:“北京,100000”。按 search_values 的查询语句形式如下所示:

where search_values like ‘%北京%’

tilefeatures 视图

基于 tiles、attributes、geometies 生成的 tilesfeatures 视图。如图所示

tilefeatures 视图的各值说明如表6所示。

 表6 SVTiles tilefeature 视图的值说明

字段名称 数据类型 描述

resolution  

Double

分辨率。

tile_column  

Long 切片列号。

tile_row

Long 切片行号。

tile_id

String 切片 ID。

create_time

Text 创建时间。

layer

Text 图层名。

fid  

Integer 地理要素 ID。

geometry_data

Text 几何对象。

search_values

Text 查询内容。

attr_data

Text 属性数据。

 

 tilegeometries 视图

基于 tiles、attributes、geometies 生成的 tilesgeometries 视图用来完整地呈现 tile、tile 内部地理要素的几何信息。若不需要获取地理要素的属性信息,基于 tilegeometries 查询速度更快。如图所示:

tilegeometries  视图的各值说明如表7所示。

表7 SVTile stilegeometries 视图的值说明

字段名称 数据类型 描述

resolution  

Double

分辨率。

tile_column  

Long 切片列号。

tile_row

Long 切片行号。

tile_id

String 切片 ID。

create_time

Text 创建时间。

layer

Text 图层名。

fid  

Integer 地理要素 ID。

geometry_data

Text 几何对象。

metadata

CREATE TABLE metadata (name text, value text);

CREATE UNIQUE INDEX metadata_idx ON metadata (name);

 tiles

CREATE TABLE tiles (resolution double, tile_column integer, tile_row integer,tile_id text, create_time

text);

CREATE UNIQUE INDEX tiles_index on tiles(resolution,tile_column,tile_row);

Create index tiles_id_index ON tiles(tile_id);

 geometries

CREATE TABLE geometries(layer text,fid long,tile_id text,geometry_data text );

CREATE UNIQUE INDEXgeometries_index ON geometries(layer ,fid,tile_id);

 attributes

CREATE TABLE attributes( layer text, fid long, attr_datatext,search_values text);

CREATE UNIQUE INDEX attrbutes_index ON attributes (layer, fid);

 tilefeatures

CREATE VIEW tilefeatures as

SELECT A.*,B.layer,B.fid,B.geometry_data,C.search_values,C.attr_data

FROM tiles as A,geometries as B,attributes as C

WHERE A.tile_id=B.tile_id and B.layer=C.layer and B.fid=C.fid

 tilegeometries

CREATEVIEW tilegeometries as

SELECT A.*,B.layer,B.fid,B.geometry_data

FROM tiles as A,geometries as B

WHERE A.tile_id=B.tile_id

功能对比如表8所示:

表8 SVTile 功能对比

功能

 V201310 V201401
几何对象存储  SuperMapJson 扩展规范支持多种格式 SuperMapJson、WKT、GeoJson、GML
要素属性存储 不支持  XML,Json

数据表对比如表9所示:

表9 SVTile 功能对比

版本

表说明

V201310 metadata 元数据表。
tiles 切片表。
tiles_data 字段中存储了所有的几何对象集合。
V201401 metadata 元数据表。
tiles 切片表。仅存储切片索引。
geometries 几何对象表。
attributes 属性信息表。
tilefeatures 切片及要素视图。
tilegeometries 切片及几何对象视图。

 

SuperMapJson 是 SuperMap iServer 定义的一种 Json 格式。该 Json 由以下三部分构成:

 type:几何形状类型。

可选值有:POINT、LINE、REGION 分别对应 WKT 中的 MultiPoint、MultLineString、MultiPolygon。

 points:表示一组像素坐标序列,相邻两项代表一个坐标。

 parts:表示当前几何对象的分段信息,每一个分段代表一个子对象,分段的数值代表子对象点的个数。

示例:

{

“type”:”REGION”,

“points”:[0,0,256,0,256,256,0,256,0,0,1,1,3,3,2,2,1,1],

“parts”:[5,4]

}

上面示例中“parts”:[5,4]表示该对象两个分段,两个分段的坐标分别为:[0,0 ,256,0,256,256,0,256,0,0]、[1,1,3,3,2,2,1,1]。

注:对于 type 为 POINT 的几何对象,json 可不包含 parts 项。此类几何对象 points 中每一个坐标就表示一个子 POINT。

resource文件

style风格数据表

记录了每个图层的风格类型和风格描述信息。表中包含的字段如图所示:

风格信息表的各值说明如表10所示。

表10 resource文件style数据表各值说明

字段名称 数据类型 描述

layer name

Text

图层名。

type  

Text

风格类型。目前支持CartoCSS。
style

Text

风格信息。

其中style字段描述了该图层的风格属性信息。示例如下:

#District@Changchun[zoom<=9.80459446371E-5][zoom>=1.05263157895E-5]{text-placement-type:simple;text-placements:"E,NE,SE,W,NW,SW";line-pattern-file:url(SYMBOLLINE__District@Changchun__64__64__true__-1483079698.png);polygon-pattern-file:url(SYMBOLFILL__District@Changchun__64__64__true__-1483079698.png);point-file:url(SYMBOLMARKER__District@Changchun__64__64__true__-1483079698.png);polygon-opacity:1;polygon-pattern-opacity:1;}

Symbol符号数据表

记录切片中的符号图片。

符号数据表的各值说明如表12所示。

表12 resource文件symbol数据表各值说明

字段名称 数据类型 描述

id

Text

符号的标识符。id是由符号类型、所在图层、图片宽高、是否透明以及Hashcode组成

format

Text

符号图片格式。如PNG

symboldata

blob

符号图片

symbol符号数据库内容举例如图所示。