SVTiles 是由 SuperMap 制定的一种利用 SQLite 数据库存储矢量瓦片数据的存储格式,其文件名由地图名、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]

}

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

  • type:几何形状类型。可选值有:POINT、LINE、REGION 分别对应 WKT 中的 MultiPoint、MultLineString、MultiPolygon。
  • points:表示一组像素坐标序列,相邻两项代表一个坐标。
  • parts:表示当前几何对象的分段信息,每一个分段代表一个子对象,分段的数值代表子对象点的个数。对于 type 为 POINT 的几何对象,json 可不包含 parts 项。此类几何对象 points 中每一个坐标就表示一个子 POINT。

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

attributes 属性信息表

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

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

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

字段名称 数据类型 描述
layer Text 图层名。
fid Long 地理要素 ID。
attr_data Text 属性数据。
search_values Text 查询内容。

每个地理要素的几何对象可以分布在不同的切片中,因此 attributes 属性信息表和 geometries 几何对象表是1对多的关系。attributes 属性信息表中属性数据是和地理要素 ID 是一一对应的,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 几何对象。
  • SQL 清单

1)metadata

CREATE TABLE metadata (name text, value text);

CREATE UNIQUE INDEX metadata_idx ON metadata (name);

 2)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);

 3)geometries

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

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

 4)attributes

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

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

 5)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

 6)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

  • SVTiles V201401与 SVtiles V201310 版本对比

 1)功能对比:

表8 SVTile 功能对比

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

2)数据表对比:

表9 SVTile 数据表对比

版本

表说明

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

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符号数据表

记录切片中的符号图片。

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

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

字段名称 数据类型 描述
id Text 符号的标识符。id是由符号类型、所在图层、图片宽高、是否透明以及Hashcode组成
format Text 符号图片格式。如PNG
symboldata blob 符号图片

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