この関数は、指定された範囲と解像度に基づいて、ジオメトリオブジェクトのセットをヒートマップタイル (H M T) に変換します。
構文
bytea ST_AsHMT(geometry geometry_set, geometry extent, int4 width, int4 height, int4 value default 1, boolean point_mode default false);
bytea ST_AsHMT(geometry geometry_set, geometry extent, int4 width, int4 height, int4 value);
bytea ST_AsHMT(geometry geometry_set, geometry extent, int4 width, int4 height, int4 value, boolean point_mode);
bytea ST_AsHMT(geometry geometry_set, geometry extent, int4 width, int4 height, float8 value);
bytea ST_AsHMT(geometry geometry_set, geometry extent, int4 width, int4 height, float8 value, boolean point_mode);
bytea ST_AsHMT(geometry geometry_set, geometry extent, int4 width, int4 height, int4 value, cstring config);
bytea ST_AsHMT(geometry geometry_set, geometry extent, int4 width, int4 height, float8 value, cstring config);
戻り値
protobufベースのバイナリデータ行列が返されます。 次の例は、protoファイルを示しています。
syntax = "proto2";
option optimize_for = LITE_RUNTIME;
message HMT {
required Type type = 1; // data value type
required uint32 rows = 2; // rows of matrix
required uint32 columns = 3; // columns of matrix
required uint32 srid = 4; // columns of matrix
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;
}
}
typeパラメーターの値は、入力パラメーターによって指定され、int32型またはdouble型にすることができます。 int32タイプは数量などの情報を計算するために使用され、doubleタイプはメトリクスなどの情報を計算するために使用されます。
rowsパラメーターは行列の行数を示し、columnsパラメーターは行列の列数を示します。
行列内の値は、指定されたデータ型の配列であり、行に編成されます。
行列は、X方向に昇順、Y方向に降順である。 これにより、画像への変換が容易になります。
ST_HMTAsArray関数を使用して、戻り値を配列表現に変換できます。 ST_HMTAsArray関数の詳細については、「ST_HMTAsArray」をご参照ください。
Parameters
パラメーター | 説明 |
geometry_set | ジオメトリ列フィールド。 |
extent | 地理的範囲。 境界ボックスのみが使用される。 ST_TileEnvelope関数と組み合わせて使用できます。 |
width | 結果のcolumnsパラメータに対応するメッシュ幅。 |
height | 結果の行パラメータに対応するメッシュの高さ。 |
value | 統計値。 値はプロセスで合計されます。 |
point_mode | ポイントモードを使用するかどうかを指定します。 ポイントモードを使用すると、メッシュ内のポイントのみがカウントされます。 |
config | ヒートマップのスタイルを示すJSON文字列。 |
使用上の注意
この関数は、指定された範囲と解像度に基づいて、一連のジオメトリオブジェクトをHMTに変換します。
データの空間参照が入力範囲の空間参照と一致しない場合、入力範囲の空間参照がデータのために使用されます。
config
パラメーターは、JSON文字列での計算方法を示します。 次の表に、パラメーターに設定できるオプションを示します。
オプション | 説明 | データ型 | デフォルト値 | 補足 |
type | 集計のタイプ。 | String | sum | 有効な値:
|
point_mod | ポイントモードを使用するかどうかを指定します。 | Boolean | false | - |
int4型を使用して合計値を計算すると、int32型の有効な値が-2147483648から2147483647の範囲であるため、無効な値が返される場合があります。 float8タイプの使用を推奨します。
例
-- create table
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;
-- count quantity
SELECT ST_AsHMT(geom, --geometry type
ST_MakeEnvelope(0, 0, 10, 10, 4326), -- Extent
1024, -- Width, in pixel
800 -- height
)
FROM test_table;
---------
\x080010a0061880083284...
-- count value
SELECT ST_AsHMT(geom, --geometry type
ST_MakeEnvelope(0, 0, 10, 10, 4326), -- Extent
1024, -- Width
800, -- height
weight -- value column
)
FROM test_table;
---------
\x080010a0061880...
-- complex count
SELECT ST_AsHMT(geom, --geometry type
ST_MakeEnvelope(0, 0, 10, 10, 4326), -- Extent
1024, -- Width
800, -- height
weight / volume * 1.2 -- complex value
)
FROM test_table;
---------
\x080110a0061880083a85...
-- point mode
SELECT ST_AsHMT(geom, --geometry type
ST_MakeEnvelope(0, 0, 10, 10, 4326), -- Extent
1024, -- Width, in pixel
800, -- height,
1::integer, -- value
true -- point mode
)
FROM test_table;
---------
\x080010a0061880083...
-- where clause
SELECT ST_AsHMT(geom, --geometry type
ST_MakeEnvelope(0, 0, 10, 10, 4326), -- Extent
1024, -- Width, in pixel
800 -- height
)
FROM test_table
WHERE num <5;
---------
\x080010a00618...
-- average
SELECT ST_AsHMT(the_geom,
ST_MakeEnvelope(0, 0, 10, 10, 4326), -- Extent
256, -- Width, in pixel
256 -- height
weight,
'{"type":"avg"}'::cstring)
FROM test_table;
---------
\x080010a00618...
-- Use min, point mode
SELECT ST_AsHMT(the_geom,
ST_MakeEnvelope(0, 0, 10, 10, 4326), -- Extent
256, -- Width, in pixel
256 -- height
weight,
'{"type":"min", "point_mode":true}'::cstring)
FROM test_table;
---------
\x080010a00618...