Todos os produtos
Search
Central de documentação

ApsaraDB RDS:ST_AsMVTGeom3D

Última atualização: Sep 02, 2026

Transforma uma geometria 3D no sistema de coordenadas de tile exigido pelo ST_AsMVT3D para gerar saída Mapbox Vector Tile (MVT). Esta função estende a ST_AsMVTGeom com suporte ao eixo z e preserva os valores da coordenada z durante a transformação.

Sintaxe

geometry ST_AsMVTGeom3D(
  geometry geom,
  box2d bounds,
  integer extent = 4096,
  integer buffer = 256,
  boolean clip_geom = true
);

Parâmetros

Parâmetro

Tipo

Descrição

Padrão

Valores válidos

geom

geometry

Objeto de geometria 3D a transformar.

bounds

box2d

Limites retangulares do tile no sistema de referência de coordenadas (CRS) de destino, excluindo o buffer. Use ST_TileEnvelope para gerar esse valor.

extent

integer

Tamanho do tile no espaço de coordenadas de tile, conforme a especificação MVT.

4096

256–8192

buffer

integer

Tamanho do buffer no espaço de coordenadas de tile para recorte de geometria.

256

1–4096

clip_geom

boolean

Define se a geometria 3D será recortada nos limites do tile.

true

Descrição

A função ST_AsMVTGeom3D prepara a geometria 3D para uso com ST_AsMVT3D. Ela transforma as coordenadas da geometria para o espaço de tile e recorta as geometrias nos limites do tile quando clip_geom é true.

Comportamentos principais:

  • Transforma os dados do eixo z junto com as coordenadas x e y e preserva a geometria 3D completa durante a conversão de tile.

  • Exige limites de tile no mesmo CRS da geometria de entrada para garantir a transformação e o recorte corretos. Use ST_TileEnvelope para gerar esses limites.

  • Não oferece suporte a objetos de polígono 3D com anéis internos.

Exemplos

Transformar uma string de linha 3D em espaço de coordenadas de tile

O exemplo abaixo transforma uma string de linha 3D do SRID 4326 para Web Mercator (SRID 3857) e a converte para o espaço de coordenadas de tile correspondente ao tile (1, 0, 0).

SELECT ST_AsText(
  ST_AsMVTGeom3D(
    ST_Transform('SRID=4326; LINESTRING(-10 -10 30, -10 -20 30)'::geometry, 3857),
    ST_TileEnvelope(1, 0, 0)
  )
) AS geom;

Saída esperada:

                                        geom
------------------------------------------------------------------------------------
 MULTILINESTRING Z ((3868.44444444444 4324.7197219642 30,3868.44444444444 4352 30))
(1 row)

Gerar um tile MVT 3D usando ST_AsMVT3D

Este exemplo apresenta uma consulta completa de geração de tiles com uma CTE. As geometrias de uma tabela são transformadas para o espaço de coordenadas de tile e agregadas no formato binário MVT para o tile (12, 513, 412).

WITH mvtgeom AS (
  SELECT ST_AsMVTGeom3D(
    ST_Transform(geom, 3857),
    ST_TileEnvelope(12, 513, 412),
    extent => 4096,
    buffer => 256
  ) AS geom
  FROM your_3d_table
  WHERE geom && ST_Transform(ST_TileEnvelope(12, 513, 412), 4326)
)
SELECT ST_AsMVT3D(mvtgeom.*)
FROM mvtgeom;

Substitua your_3d_table pelo nome da sua tabela que contém dados de geometria 3D.

Veja também