All Products
Search
Document Center

:ST_AsHMT

Last Updated:Jun 25, 2025

Mengonversi sekumpulan objek trajektori menjadi ubin peta panas (HeatMapTiles) berdasarkan rentang dan resolusi tertentu.

Sintaksis

bytea ST_AsHMT(trajectory trajectory_set, geometry extent, int4 width, int4 height, int4 value default 1, boolean point_mode default false);
bytea ST_AsHMT(trajectory trajectory_set, geometry extent, int4 width, int4 height, int4 value);
bytea ST_AsHMT(trajectory trajectory_set, geometry extent, int4 width, int4 height, int4 value, boolean point_mode);
bytea ST_AsHMT(trajectory trajectory_set, geometry extent, int4 width, int4 height, float8 value);
bytea ST_AsHMT(trajectory trajectory_set, geometry extent, int4 width, int4 height, float8 value, boolean point_mode);

Nilai Kembali

Mengembalikan struktur data biner berbasis Protobuf yang merepresentasikan nilai setiap titik dalam matriks. Lihat file Protobuf sampel berikut:

syntax = "proto2";
option optimize_for = LITE_RUNTIME;

message HMT {
    required Type type = 1; // tipe nilai data
    required uint32 rows = 2;   // baris matriks
    required uint32 columns = 3; // kolom matriks
    required uint32 srid = 4; // kolom matriks
    required float  xmin = 5; // xmin
    required float  ymin = 6; // ymin
    required float  xmax = 7; // xmax
    required float  ymax = 8; // ymax

    oneof matrix {
        intMatrix intValues = 10;
        doubleMatrix doubleValues = 11;
    }

    message intMatrix {
        repeated sint32 values = 12 [packed = true];
    }

    message doubleMatrix {
        repeated double values = 13 [packed = true];
    }

    enum Type {
        INT32 = 0;
        DOUBLE = 1;
    }
}
Catatan
  • Tipe nilai ditentukan oleh parameter input, yang dapat berupa int32 atau double. Tipe int32 digunakan untuk menghitung informasi seperti kuantitas, sedangkan tipe double digunakan untuk menghitung informasi seperti metrik.

  • Nilai baris menunjukkan jumlah baris matriks, dan nilai kolom menunjukkan jumlah kolom matriks.

  • Nilai-nilai dalam matriks merupakan array dari tipe yang ditentukan oleh Tipe dan disusun per baris.

  • Anda dapat menggunakan fungsi ST_HMTAsArray untuk mengonversi nilai yang dikembalikan menjadi array.

Parameter

Parameter

Deskripsi

geometry_set

Kolom geometri yang digunakan oleh fungsi agregat.

extent

Rentang geografis yang akan diperoleh. Hanya kotak pembatas yang diperoleh. Parameter ini dapat digunakan bersama dengan fungsi ST_TileEnvelope.

width

Lebar matriks, yang sesuai dengan kolom hasil.

height

Tinggi matriks, yang sesuai dengan baris hasil.

value

Nilai yang akan dihitung. Jumlah nilai yang ditentukan dihitung.

point_mode

Apakah akan mengaktifkan mode titik. Jika Anda menggunakan mode titik, hanya nilai titik-titik dalam matriks yang dihitung.

Deskripsi

Mengonversi sekumpulan objek trajektori menjadi ubin peta panas berdasarkan rentang dan resolusi tertentu.

Contoh

-- membuat tabel
CREATE test_table AS
SELECT i as num, 
               st_maketrajectory('STPOINT'::leaftype, 
                    st_MakeLine(ST_Point(i::numeric/10, i::numeric/10), ST_Point((i+10)::numeric/10, (i+10)::numeric/10)), 
                    '[2010-01-01 14:30, 2010-01-01 15:30)'::tsrange, NULL) as traj,
    i*100::int4 weight,
    i*i*i::float8 volume
FROM generate_series(1, 100) i;

-- menghitung kuantitas
SELECT ST_AsHMT(traj, --tipe trajektori
    ST_MakeEnvelope(0, 0, 10, 10), -- Rentang 
    1024,        -- Lebar, dalam piksel
    800        -- tinggi
)
FROM test_table;

---------
\x080010a0061880083284...

-- menghitung nilai
SELECT ST_AsHMT(traj, --tipe trajektori
    ST_MakeEnvelope(0, 0, 10, 10), -- Rentang 
    1024,        -- Lebar
    800,       -- tinggi
    weight     -- kolom nilai
)
FROM test_table;    
---------
\x080010a0061880...

-- hitungan kompleks
SELECT ST_AsHMT(traj, --tipe trajektori
    ST_MakeEnvelope(0, 0, 10, 10), -- Rentang 
    1024,        -- Lebar
    800,        -- tinggi
    weight / volume * 1.2     -- nilai kompleks
)
FROM test_table;
---------
\x080110a0061880083a85...

-- mode titik
SELECT ST_AsHMT(traj, --tipe trajektori
    ST_MakeEnvelope(0, 0, 10, 10), -- Rentang 
    1024,        -- Lebar, dalam piksel
    800,        -- tinggi,
    1::integer,  -- nilai
    true        -- mode titik
)
FROM test_table;
---------
\x080010a0061880083...

-- klausa where
SELECT ST_AsHMT(traj, --tipe trajektori
    ST_MakeEnvelope(0, 0, 10, 10), -- Rentang 
    1024,        -- Lebar, dalam piksel
    800        -- tinggi
)
FROM test_table
WHERE num <5;
---------
\x080010a00618...