您可以使用Z
维将时间戳的EPOCH
添加到坐标对中,例如POINT Z
:
SELECT
ST_AsText(
ST_PointZ(
52.0,
6.0,
EXTRACT(EPOCH FROM '2023-05-23 10:22:18'::timestamp),
4326)
);
st_astext
---------------------------
POINT Z (52 6 1684837338)
(1 row)
要将纪元转换回时间戳..
WITH j (geo) AS (
VALUES ('POINT Z (52 6 1684837338)'::geometry)
)
SELECT ST_X(geo), ST_Y(geo),
to_timestamp(ST_Z(geo))
FROM j;
st_x | st_y | to_timestamp
------+------+------------------------
52 | 6 | 2023-05-23 10:22:18+00
(1 row)
将几何图形转换为GeoJSON的步骤
SELECT
ST_AsGeoJSON(
ST_MakeLine(
ST_PointZ(52.0,6.0,EXTRACT(EPOCH FROM now()-'1 hour'::interval),4326),
ST_PointZ(52.0,6.0,EXTRACT(EPOCH FROM now()),4326))
);
st_asgeojson
-----------------------------------------------------------------------------------------
{"type":"LineString","coordinates":[[52,6,1684836224.778756],[52,6,1684839824.778756]]}
(1 row)
..这将创建您的FeatureCollection:
WITH j (geo) AS (
VALUES
(ST_MakeLine(
ST_PointZ(52,6,EXTRACT(EPOCH FROM now()-'1 hour'::interval),4326),
ST_PointZ(52,6,EXTRACT(EPOCH FROM now()),4326))),
(ST_MakeLine(
ST_PointZ(55,7,EXTRACT(EPOCH FROM now()-'2 hour'::interval),4326),
ST_PointZ(55,7,EXTRACT(EPOCH FROM now()),4326)))
)
SELECT json_build_object(
'type', 'FeatureCollection',
'features', json_agg(ST_AsGeoJSON(j.*)::json)
)
FROM j;
json_build_object
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
{"type" : "FeatureCollection", "features" : [{"type": "Feature", "geometry": {"type":"LineString","coordinates":[[52,6,1684836873.929858],[52,6,1684840473.929858]]}, "properties": {}}, {"type": "Feature", "geometry": {"type":"LineString",
"coordinates":[[55,7,1684833273.929858],[55,7,1684840473.929858]]}, "properties": {}}]}
(1 row)
演示:db<>fiddle