UTFGrid 格式的属性瓦片 |
UTFGrid 是由 MapBox 制定的一种将属性地图数据存储到 SQLite 数据库中并可快速使用,管理和分享的规范。该规范由 MapBox 制定,详见 https://github.com/mapbox/utfgrid-spec。
UTFGrid 采用 Unicode 字符将地理要素信息通过 UTF-8 编码成非常节省空间的数据切片,该切片叫做 Grid,存储在 SQLite 数据库中。
SuperMap iServer 为了满足自身应用的需求,基于原规范对 UTFGrid 中的内容进行了扩展,扩展后的 .utfgrid 文件仍保留元数据表“metadata”,并支持任意坐标系和任意分辨率。
UTFGrid 文件的文件的命名由地图名、图层名、EPSG Code、切片宽度和高度、pixCell 及.utfgrid 后缀组成(如:World_Countries@World_4326_256X256_8.utfgrid),其中 EPSG Code 参见:CoordSysType,pixCell 参见表2中的 pixCell。
数据库表结构如下图所示:
metadata 元数据表采用键值对的形式来存储地图属性数据的相关设置,包括两个文本类型的字段”name”和”value”,与 utfgrid1.0.0 一致。表结构如图1所示:
表1 metadata 元数据表举例
name |
value |
name | World |
layerName |
Countries@World |
version | 1.0.0 |
description | World created on 2013-07-23 17:27:18 by SuperMap iServer |
format | json |
bounds | -180.000,-90.000,180.000,90.000 |
ext_spec_version | 201310 |
axis_origin | -180.0,90.0 |
axis_positive_direction |
RightDown |
crs_wkid |
4326 |
crs_wkt | 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"]] |
tile_height | 256 |
tile_width | 256 |
resolutions | 0.34886137129 |
scales | 1.4677821811243212E8 |
pixCell |
8 |
metadata 元数据表的各字段(keys)说明如表2所示:
表2 metadata 元数据表各字段描述
字段名称 | 是否必须 | 是否 iServer 扩展 | 说明 |
name | 是 | 否 | 地图的英文名称,如果地图名称为中文会自动转换为中文名称的拼音。 |
layerName |
是 | 否 | 图层名称。 |
version | 是 | 否 | UTFGrid 版本规范,UTFGrid 规范的版本是 1.0.0。 |
description | 是 | 否 | 描述信息。 |
format | 是 | 否 | UTFGrid 格式:json,html,jsonp,rjson。 |
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 | 否 | 是 | 各级分辨率对应的比例尺集合。 |
pixCell | 否 | 是 | 格网中每个单元格的像素宽度。 |
grid_utfgrid 表用来记录 utfgrid 中的 grid_id 和 utfgrid 数据,表结构如下所示:
表3 grid_utfgrid 表各字段描述
字段名称 | 数据类型 | 描述 |
grid_id | TEXT | 格网标识 |
grid_utfgrid | BOLB | UTFGrid 数据 |
表内容举例如下:
map 表用来记录每个格网的行列号,分辨率,格网对应 id,比例尺,瓦片级别,瓦片创建时间信息,表结构如下所示:
表4 grid_utfgrid 表各字段描述
字段名称 | 数据类型 | 描述 |
zoom_level | integer | 瓦片所在级别,-1表示自定义比例尺集。 |
resolution | varchar | 分辨率,瓦片对应的分辨率。 |
tile_colum | integer | 瓦片列号。 |
tile_row |
integer |
瓦片行号。 |
grid_id | TEXT | 格网标识。 |
create_time | TEXT | 瓦片创建时间。 |
表内容举例如下:
keymap 表用来记录地理要素信息和 key_name 值,每个地理要素对应一个 key_name 值,也是该地理要素的 SMID 值,表结构如下所示
表5 keymap 表各字段描述
字段名称 | 数据类型 | 描述 |
key_name |
TEXT | UTFGrid 的标识。 |
key_json |
BOLB | 地理要素信息的 json 格式数据。 |
表内容举例如下:
grid_key 表用来记录每个格网对应哪些 key_name 值,一个 grid_id 对应多个 key_name,即一个格网中有多个地理要素,表结构如下所示:
表6 grid_key 表各字段描述
字段名称 | 数据类型 | 描述 |
grid_id |
TEXT | 格网标识。 |
key_name |
integer |
key 名称。 |
表内容举例如下: