Todos os produtos
Search
Central de documentação

ApsaraDB RDS:ST_AsMVT3D

Última atualização: Sep 02, 2026

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

row

anyelement

Linha com pelo menos uma coluna de geometria 3D.

name

text

Default

Nome da camada no tile de saída.

extent

integer

4096

2568192

Número de tiles no espaço de tela.

geom_name

text

Primeira coluna de geometria

Nome da coluna de geometria na linha.

feature_id_name

text

NULL ou valor negativo → ignorado

Nome da coluna Feature ID na linha. Defina como NULL ou valor negativo para omitir o Feature ID.

Notas de uso

  • ST_AsMVT3D é uma função de agregação. Use-a com SELECT ... FROM em 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 || ou STRING_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) e LineTo3D(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.

image..png

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