为一个空间几何数据表创建矢量金字塔,加速数据显示。
语法
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两个值。 |
| buildRules | array[object] | null | 构建规则,每个object中包含level和value两个值。 |
| └level | array[int] | 无 | 规则适用的层级数组。 |
| └value | object | 无 | 构建规则值。 |
| └filter | string | 无 | 过滤表达式,PostgreSQL的查询语法。 |
| └attrFields | array[string] | 无 | mvt中的属性字段名称。 |
| └merge | array[string] | 无 | 对数据进行分组合并的过滤条件。 |
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