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 |
|
|
geometry |
Objeto de geometria 3D a transformar. |
— |
— |
|
|
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. |
— |
— |
|
|
integer |
Tamanho do tile no espaço de coordenadas de tile, conforme a especificação MVT. |
4096 |
256–8192 |
|
|
integer |
Tamanho do buffer no espaço de coordenadas de tile para recorte de geometria. |
256 |
1–4096 |
|
|
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_TileEnvelopepara 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
ST_AsMVT3D — agrega geometrias de tile no formato binário MVT
ST_AsMVTGeom — função 2D do PostGIS estendida por esta função
ST_TileEnvelope — gera caixas de limite de tile