PostGIS 3: Função ST_TileEnvelope – Blog do Fernando Quadro
Com a disponibilização do formato MVT no PostGIS via função ST_AsMVT(), mais e mais pessoas estão gerando seus tiles diretamente do banco de dados. Isso geralmente envolve algumas etapas comuns:
Expor os tiles a partir de uma API web sobre o HTTP
Conversão de coordenadas dos tiles para impulsionar a geração do tile
As coordenadas do tile consistem em três valores:
zoom , o nível da "pirâmide" de tiles
x , a coordenada do tile nesse zoom, contando a partir da esquerda, começando em zero
y , a coordenada do tile nesse zoom, contando a partir do topo, começando em zero
A maioria das coordenadas de referência dos tiles são construídas na projeção "spherical mercator", que é uma projeção plana que cobre a maior parte do planeta, embora com distorções substanciais de distância quanto mais ao norte você for.
Conhecendo o nível de zoom e as coordenadas do tile, a matemática para encontrar os limites da projeção mercator é bastante direta. Veja:
A maioria das pessoas que geram tiles a partir do banco de dados escreve seu próprio "wrapper" para conversão da coordenada do tile em mercator.
Parece complicado fazer isso, por isso foi adicionado a função ST_TileEnvelope() ao PostGIS. Por padrão, a função ST_TileEnvelope obtém o zoom, as coordenadas x e y e gera os limites na projeção Spherical Mercator.
Se você precisar gerar tiles em outro sistema de coordenadas – um caso de uso raro, mas não impossível -, você poderá trocar o sistema de referência espacial e definir limites diferentes do conjunto de tiles por meio do parâmetro bounds, que pode codificar os limites do plano e o sistema de referência espacial em uma geometria:
Observe que as mesmas coordenadas do tile geram limites diferentes – porque os limites do tile no nível base são diferentes.
A função ST_TileEnvelope também pode gerar tiles não quadrados, basta você fornecer limites não quadrados.