A função ST_HMTAsArray converte um tile de mapa de calor (HMT) em um array float8 2D e permite ler diretamente os valores de pixel em um conjunto de resultados SQL.
Sintaxe
float8[][] ST_HMTAsArray(bytea hmt);
Parâmetros
|
Parâmetro |
Tipo |
Descrição |
|
|
|
Tile de mapa de calor codificado em binário no formato protobuf. Geralmente gerado por ST_AsHMT. |
Valor de retorno
Retorna um array bidimensional do tipo float8[][]. Cada elemento representa o valor estatístico do pixel correspondente no mapa de calor.
Exemplo
O exemplo a seguir crie uma tabela de teste com 10 geometrias de ponto, gera um tile de mapa de calor com ST_AsHMT e converte o tile em um array 2D com ST_HMTAsArray.
CREATE TABLE test_table AS
SELECT i num,
ST_setSRID(st_makepoint((i-0.5)::numeric, (i-0.5)::numeric), 4326) geom,
i*100::int4 weight,
i*i*i::float8 volume
FROM generate_series(1, 10) i;
SELECT ST_HMTAsArray(ST_AsHMT(geom, --geometry type
ST_MakeEnvelope(0, 0, 10, 10, 4326), -- Extent
10, -- Width, in pixel
10 -- height
))
FROM test_table;
Saída:
[0:9][0:9]={{1,0,0,0,0,0,0,0,0,0},{0,1,0,0,0,0,0,0,0,0},{0,0,1,0,0,0,0,0,0,0},{0,0,0,1,0,0,0,0,0,0},{0,0,0,0,1,0,0,0,0,0},{0,0,0,0,0,1,0,0,0,0},{0,0,0,0,0,0,1,0,0,0},{0,0,0,0,0,0,0,1,0,0},{0,0,0,0,0,0,0,0,1,0},{0,0,0,0,0,0,0,0,0,1}}
O prefixo [0:9][0:9]= é a notação do PostgreSQL para arrays bidimensionais com limites de subscrito explícitos. Ambas as dimensões variam do índice 0 ao 9 e correspondem à grade de pixels 10x10. O padrão diagonal de valores 1 reflete os 10 pontos de entrada distribuídos uniformemente pela grade.
Consulte também
ST_AsHMT — gera o binário do tile de mapa de calor (
bytea) que esta função consome.