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;
}
}
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...