日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

軌跡抽稀

更新时间:2024-10-18 07:51:24

在軌跡分析場景中,通常需要對軌跡點進行計算和處理,得到軌跡規律和運動趨勢。如果業務中存在大量的冗余軌跡點,可能會導致計算成本的增加。您可以通過Lindorm時空函數完成軌跡抽稀,過濾掉冗余的軌跡點,提取特征數據并保留軌跡規律,同時降低計算成本。

場景描述

隨著移動互聯網的發展和移動終端的普及,我們日常生活中產生了大量的移動對象軌跡數據,這些數據的存儲成為了新的挑戰。為應對這一挑戰,Lindorm寬表引擎提供了空間數據類型和Ganos服務,支持將位置信息以POINT空間數據類型、FLOAT經緯度形式存儲在寬表引擎中,您還可以使用時空函數或通過構建索引,優化查詢性能。

以下是一個軌跡分析場景中,使用時空函數優化查詢的示例:

某物聯網平臺客戶使用Lindorm存儲軌跡數據,需要實時將軌跡顯示在大屏中,為減少前端渲染計算量,需要按照指定規則,根據不同的精度需求對軌跡進行抽稀,抽稀前后結果如下圖所示。

image.png

技術實現

Lindorm Ganos時空服務提供了ST_Resample聚合函數,可以通過指定抽稀算法實現不同效果的軌跡抽稀,減少數據傳輸和前端渲染的計算量。

ST_Resample函數共支持三種空間抽稀(降采樣)算法:

  • Visvalingam-Whyatt算法:指定容差,遞歸解出軌跡上連續三點組成的三角形的面積最大值,保留所有面積大于容差的點。

  • Douglas-Peucker (DP) 算法:指定容差,遞歸解出兩點連線與兩點之間的各個頂點的垂直距離最大值,保留所有垂直距離大于容差的點。

  • Topology Preserving DP算法:保留軌跡線串拓撲結構的Douglas-Peucker算法。

ST_Resample聚合函數也支持按照時間間隔來抽稀,詳細介紹,請參見ST_Resample

前提條件

步驟一:建表并寫入測試數據

  1. 創建表gps_points,包含三個列:設備ID列account_id、數據采集時間列collect_time、POINT類型軌跡點列gps_point。

    CREATE TABLE gps_points (account_id VARCHAR, collect_time TIMESTAMP, gps_point GEOMETRY(POINT), PRIMARY KEY(account_id, collect_time));
  2. 寫入測試數據。

    INSERT INTO gps_points(account_id, collect_time, gps_point) 
      VALUES('001', '2023-11-10 11:00:30', ST_MakePoint(113.665431, 34.773)),
            ('001', '2023-11-10 11:00:31', ST_MakePoint(113.665432, 34.773)),
            ('001', '2023-11-10 11:00:32', ST_MakePoint(113.665433, 34.773)),
            ('001', '2023-11-10 11:00:33', ST_MakePoint(113.665434, 34.774));

步驟二:抽稀查詢

使用Ganos聚合函數ST_Resample,可以實現僅通過一條SQL語句就獲取到抽稀結果。

以下示例指定了軌跡點對象列 (gps_point)、時間列 (collect_time),獲取account_id為001的設備在指定時間段內采集到的軌跡點,并指定抽稀算法和降采樣距離閾值。

SELECT ST_Resample(gps_point, collect_time,'{"downsample_distance": 0.0001, "simplifier": "vw"}') as resampled_traj FROM gps_points WHERE collect_time >=  '2023-11-10 00:00:00' and collect_time <= '2023-11-11 00:00:00'  and account_id='001';

返回結果如下:

+---------------------------------------------------------+
|                     resampled_traj                      |
+---------------------------------------------------------+
| [{"x":113.665431,"y":34.773,"t":"2023-11-10             |
| 11:00:30.0"},{"x":113.665434,"y":34.774,"t":"2023-11-10 |
| 11:00:33.0"}]                                           |
+---------------------------------------------------------+

返回值為降采樣后按時間排序的軌跡點序列,類型為STRING,格式為[{\"x\":經度,\"y\":緯度,\"t\":時間}, {\"x\":經度,\"y\":緯度,\"t\":時間}, ...]

性能表現

當表中的行數達到10億級別,查詢的軌跡時間范圍可能從幾小時到數天不等。

下表統計了數據集行數為10億以上時,不同時間維度,相同時間范圍內使用ST_Resample函數和不使用ST_Resample函數的返回點數:

查詢時間范圍

使用ST_Resample函數

不使用ST_Resample函數

查詢時間范圍

使用ST_Resample函數

不使用ST_Resample函數

1小時

9

405

1天

37

829

10天

118

8539

可以看出,當查詢數據范圍較大時,使用ST_Resample函數進行查詢時返回點數顯著減少。對比不使用ST_Resample函數,使用ST_Resample函數后可以減少數據計算成本,簡化數據計算方式。

  • 本页导读 (1)
  • 場景描述
  • 技術實現
  • 前提條件
  • 步驟一:建表并寫入測試數據
  • 步驟二:抽稀查詢
  • 性能表現