為一個空間幾何數據表創建矢量金字塔,加速數據顯示。
語法
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中包含level和value兩個值。 |
└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