为一个空间几何数据表创建矢量金字塔,加速数据显示。

语法

boolean ST_BuildPyramid(cstring table, cstring geom, cstring fid, cstring config)

参数

参数名称 描述
table 空间几何表名。
geom 几何字段名。
fid 要素标识字段名。
config 创建金字塔的参数,JSON格式的字符串。

config参数说明如下。

参数名称 类型 默认值 说明
name string 与table名称相同 金字塔的名称。
parallel int 0 并行构建任务数,需要设置max_prepared_transactions参数,0表示并行最大化。
tileSize int 1024 瓦片大小,取值需大于0且小于4096。
tileExtend int 8 瓦片的外扩大小,取值需大于0。
userExtent array[double] null 自定义地理轮廓,设置 [], 分别为:minx、miny、maxx、maxy。
splitSize int 10000 决定索引节点分裂的最大要素数量。数值越大,金字塔越稀疏。
maxLevel int 16 金字塔的最大层级,取值为0~20。
sourceSRS int -1 源数据的坐标系。如果不设置,则读取元数据的 SRID。
destSRS int 3857 输出瓦片坐标系参考编码(EPSG),仅支持3857和4326两个值。
updateExtentSRS int 4326 更新金字塔函数的更新范围使用的EPSG格式,详情见ST_UpdatePyramid函数的说明。
updateBoxScale int 10 影响更新金字塔操作的精度,详情见ST_UpdatePyramid函数的说明。
buildRules array[object] null 构建规则,每个object中包含levelvalue两个值。
level array[int] null 规则适用的层级数组。
value object null 构建规则值。
filter string "" 过滤表达式,PostgreSQL的查询语法。
attrFields array[string] null mvt中的属性字段名称。
merge array[string] null 对数据进行分组合并的过滤条件。

config示例:

{
   "name" : "hello",           
   "parallel": 4,         
   "tileSize": 512,           
   "tileExtend": 8,
   "userExtent": [-180,-90,180,90],
   "splitSize": 5000,
   "maxLevel": 16,  
   "destSRS": 3857,
   "buildRules": [             
     {
       "level": [0,1,2],  
       "value": {
         "filter": "code!=0",
         "attrFields": ["name","color"],    
         "merge":["code=1"]
       }
     }
   ]
}

示例

--为空间几何表roads创建矢量金字塔。
select ST_BuildPyramid('roads', 'geom', 'id', '');
st_buildpyramid
----------
t