Função de agregação que serializa linhas de geometria MVT 3D em um tile binário Mapbox Vector Tile (MVT). Esse recurso estende o formato MVT padrão com suporte ao eixo Z (elevação) e permite gerar tiles vetoriais 3D diretamente no PostgreSQL.
Sintaxe
-- Syntax 1: minimal form
bytea ST_AsMVT3D(anyelement set row)
-- Syntax 2: specify layer name
bytea ST_AsMVT3D(anyelement row, text name)
-- Syntax 3: specify layer name and tile extent
bytea ST_AsMVT3D(anyelement row, text name, integer extent)
-- Syntax 4: specify layer name, tile extent, and geometry column
bytea ST_AsMVT3D(anyelement row, text name, integer extent, text geom_name)
-- Syntax 5: full form with Feature ID
bytea ST_AsMVT3D(anyelement row, text name, integer extent, text geom_name, text feature_id_name)
Parâmetros
|
Parâmetro |
Tipo |
Padrão |
Valores válidos |
Descrição |
|
|
|
— |
— |
Linha com pelo menos uma coluna de geometria 3D. |
|
|
|
|
— |
Nome da camada no tile de saída. |
|
|
|
|
|
Número de tiles no espaço de tela. |
|
|
|
Primeira coluna de geometria |
— |
Nome da coluna de geometria na linha. |
|
|
|
— |
|
Nome da coluna Feature ID na linha. Defina como |
Notas de uso
ST_AsMVT3Dé uma função de agregação. Use-a comSELECT ... FROMem uma tabela derivada.Chame ST_AsMVTGeom3D para representar geometrias 3D no sistema de coordenadas do tile e codificar outras colunas como atributos não geométricos de features espaciais.
-
Combine várias camadas com
||ouSTRING_AGG:SELECT ST_AsMVT3D(layer1.*) || ST_AsMVT3D(layer2.*) AS tile;
Codificação do eixo Z
ST_AsMVT3D estende o conjunto de comandos MVT para codificar a elevação:
Codificação CommandID: usa
MoveTo3D(5)eLineTo3D(6)para codificar sequências de coordenadas XYZ.Quantização do eixo Z:
Numeric value = 7 × (z + 450), com intervalo de elevação válido de −450 a 8848.
Para obter a especificação completa, consulte vector-tile-spec.
A imagem a seguir mostra um cenário 3D de grande escala renderizado com tecnologia de tiles MVT 3D.

Exemplo
A consulta abaixo gera um tile MVT 3D. ST_AsMVTGeom3D prepara as geometrias 3D nas coordenadas do tile e ST_AsMVT3D serializa o resultado em um tile binário.
WITH mvtgeom AS (
SELECT
ST_AsMVTGeom3D(
ST_Transform('SRID=4326; MULTIPOLYGON(((100 50 0, -100 50 1, -100 -50 2, 100 -50 3, 100 50 0)), ((0 0 0, 1 0 1, 2 2 2, 0 0 0)))'::geometry, 3857),
ST_TileEnvelope(1, 0, 0)
) AS geom,
'test' AS name
)
SELECT ST_AsMVT3D(mvtgeom.*) FROM mvtgeom;
Saída esperada (MVT binário em hexadecimal):
st_asmvt3d
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
\x1a760a0764656661756c74125812020000180322500d8044a842b83116ff23d80105802400080f0d810481041d162e000e2e590e0f0dd920dc0405168024d70106c727f3160d0f0dc827f4160e1600f31615c72700080f0d0000001600cc1808c80300000f1a046e616d6522060a04746573742880207802
(1 row)
Tópicos relacionados
ST_AsMVTGeom3D — prepara geometrias 3D para uso com
ST_AsMVT3D