Membangun piramida vektor untuk tabel data geometri spasial dengan melakukan pra-pembagian (pre-tiling) data geometri pada berbagai tingkat zoom guna mempercepat rendering peta di berbagai skala.
Sintaksis
boolean ST_BuildPyramid(cstring table, cstring geom, cstring fid, cstring config)Parameter
| Parameter | Deskripsi |
|---|---|
table | Nama tabel data geometri spasial. |
geom | Nama kolom geometri. |
fid | Nama bidang ID elemen. |
config | Opsi pembuatan piramida, ditentukan sebagai string JSON. Lihat Field konfigurasi untuk daftar lengkap field yang didukung. |
Field konfigurasi
Parameter config menerima objek JSON yang mencakup field-field berikut.
| Field | Tipe | Bawaan | Deskripsi |
|---|---|---|---|
name | string | Sama dengan nama tabel | Nama piramida. |
parallel | int | 0 | Jumlah maksimum tugas yang dijalankan secara paralel. Tetapkan ke 0 untuk tanpa batas. Memerlukan parameter max_prepared_transactions dikonfigurasi. |
tileSize | int | 1024 | Ukuran tile. Harus lebih besar dari 0 dan kurang dari 4096. |
tileExtend | int | 8 | Ukuran ekstensi tile piramida. Harus lebih besar dari 0. |
userExtent | array[double] | null | Kotak pembatas yang membatasi pembuatan piramida, ditentukan sebagai [minx, miny, maxx, maxy]. Tetapkan ke [] untuk tidak menggunakan kotak pembatas. |
splitSize | int | 10000 | Jumlah maksimum elemen per node indeks. Nilai yang lebih besar menghasilkan piramida yang lebih jarang. |
maxLevel | int | 16 | Jumlah maksimum tingkat zoom. Nilai yang valid: 0–20. |
sourceSRS | int | -1 | Spatial Reference Identifier (SRID) dari data sumber. Tetapkan ke -1 untuk membaca SRID dari metadata tabel. |
destSRS | int | 3857 | Kode EPSG untuk sistem koordinat tile output. Nilai yang didukung: 3857 (EPSG:3857, Web Mercator) dan 4326 (EPSG:4326, WGS84). |
buildRules | array[object] | null | Aturan per tingkat zoom untuk pembuatan piramida. Lihat field buildRules. |
Field buildRules
Setiap objek dalam array buildRules menerapkan aturan pada satu set tingkat zoom. Aturan ini memungkinkan Anda mengontrol kerapatan data per tingkat—misalnya, menyaring fitur minor pada tingkat zoom rendah untuk mengurangi volume data, serta menyertakan detail atribut lengkap pada tingkat zoom tinggi guna mendukung interaktivitas peta.
| Field | Tipe | Deskripsi |
|---|---|---|
level | array[int] | Tingkat zoom tempat aturan diterapkan. |
value | object | Definisi aturan. Berisi field-field berikut. |
value.filter | string | Ekspresi filter PostgreSQL untuk hanya menyertakan fitur yang sesuai. |
value.attrFields | array[string] | Bidang atribut yang disertakan dalam output Mapbox Vector Tile (MVT). |
value.merge | array[string] | Kondisi filter yang digunakan untuk mengelompokkan catatan data. |
Contoh konfigurasi
{
"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"]
}
}
]
}Contoh
Membangun piramida dengan pengaturan bawaan
Berikan string kosong sebagai config untuk menggunakan semua nilai bawaan.
SELECT ST_BuildPyramid('roads', 'geom', 'id', '');Output yang diharapkan:
st_buildpyramid
-----------------
t