PolarDB 开源版 轨迹应用实践 - 出行、配送、快递等业务的调度; 传染溯源; 刑侦

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
简介: 背景PolarDB 的云原生存算分离架构, 具备低廉的数据存储、高效扩展弹性、高速多机并行计算能力、高速数据搜索和处理,PolarDB与计算算法结合, 将实现双剑合璧, 推动业务数据的价值产出,将数据变成生产力。本文将介绍PolarDB 开源版 轨迹应用实践,例如:出行、配送、快递等业务的调度快递员...

背景

PolarDB 的云原生存算分离架构, 具备低廉的数据存储、高效扩展弹性、高速多机并行计算能力、高速数据搜索和处理,PolarDB与计算算法结合, 将实现双剑合璧, 推动业务数据的价值产出,将数据变成生产力。

本文将介绍PolarDB 开源版 轨迹应用实践,例如:

  • 出行、配送、快递等业务的调度

    • 快递员有预规划的配送轨迹(轨迹)

    • 客户有发货需求(时间、位置)

    • 根据轨迹估算最近的位置和时间

  • 通过多个嫌疑人的轨迹,计算嫌疑人接触的地点、时间点

  • 根据轨迹, 对传染源进行溯源

  • 测试环境为macOS+docker,PolarDB部署请参考如何用 PolarDB 证明巴菲特的投资理念 - 包括PolarDB简单部署

轨迹介绍

轨迹的定义:

  • 位置1、位置2、...位置N 组成的线段, 加上 开始时间、结束时间

  • 轨迹的常见计算:

  • 两个轨迹何时最接近

  • 最近的距离是多少

  • 两个轨迹最近时的位置分别是什么

相关函数

https://postgis.net/docs/manual-3.3/reference.html#Temporal

8.18. Linear Referencing

  • ST_LineInterpolatePoint — Returns a point interpolated along a line at a fractional location.

  • ST_3DLineInterpolatePoint — Returns a point interpolated along a 3D line at a fractional location.

  • ST_LineInterpolatePoints — Returns points interpolated along a line at a fractional interval.

  • ST_LineLocatePoint — Returns the fractional location of the closest point on a line to a point.

  • ST_LineSubstring — Returns the part of a line between two fractional locations.

  • ST_LocateAlong — Returns the point(s) on a geometry that match a measure value.

  • ST_LocateBetween — Returns the portions of a geometry that match a measure range.

  • ST_LocateBetweenElevations — Returns the portions of a geometry that lie in an elevation (Z) range.

  • ST_InterpolatePoint — Returns the interpolated measure of a geometry closest to a point.

  • ST_AddMeasure — Interpolates measures along a linear geometry.

8.19. Trajectory Functions Abstract These functions support working with trajectories. A trajectory is a linear geometry with increasing measures (M value) on each coordinate. Spatio-temporal data can be modeled by using relative times (such as the epoch) as the measure values.

  • ST_IsValidTrajectory — Tests if the geometry is a valid trajectory.

  • ST_ClosestPointOfApproach — Returns a measure at the closest point of approach of two trajectories.

  • ST_DistanceCPA — Returns the distance between the closest point of approach of two trajectories.

  • ST_CPAWithin — Tests if the closest point of approach of two trajectories is within the specified distance.

轨迹计算举例

  1. 构造3维轨迹:

ST_AddMeasure('LINESTRING Z (0 0 0, 10 0 5, 1 1 1)'::geometry,  -- 三个3维点  
    extract(epoch from '2015-05-26 10:00'::timestamptz),  -- 开始时间  
    extract(epoch from '2015-05-26 11:00'::timestamptz)   -- 结束时间  
)  
  1. 构造2维轨迹:

ST_AddMeasure('LINESTRING (0 0, 10 0, 1 1)'::geometry,  -- 三个2维点  
    extract(epoch from '2015-05-26 10:00'::timestamptz),  -- 开始时间  
    extract(epoch from '2015-05-26 11:00'::timestamptz)   -- 结束时间  
)  
  1. 返回2条轨迹距离最接近时的第一个时间点(因为2条轨迹可能有多个时间处于最近距离, 但是这里只返回最早的时间点, 如果要求后面的时间点, 可以切分线段)。

  • 两个轨迹何时最接近

  • 最近的距离是多少

  • 两个轨迹最近时的位置分别是什么

-- Return the time in which two objects moving between 10:00 and 11:00  
-- are closest to each other and their distance at that point  
WITH inp AS ( SELECT  
  ST_AddMeasure('LINESTRING Z (0 0 0, 10 0 5)'::geometry,  -- 如果轨迹是一个点, 这里就直接填2个一样位置的点  
    extract(epoch from '2015-05-26 10:00'::timestamptz),  
    extract(epoch from '2015-05-26 11:00'::timestamptz)  
  ) a,  
  ST_AddMeasure('LINESTRING Z (0 2 10, 12 1 2, 15 3 5)'::geometry,  -- 两条轨迹的点数可以不一样  
    extract(epoch from '2015-05-26 10:00'::timestamptz),  
    extract(epoch from '2015-05-26 11:00'::timestamptz)  
  ) b  
), cpa AS (  
  SELECT ST_ClosestPointOfApproach(a,b) m FROM inp  -- 计算a,b 2条轨迹距离最近时的最早时间点  
), points AS (  
  SELECT ST_Force3DZ(ST_GeometryN(ST_LocateAlong(a,m),1)) pa,   -- ST_LocateAlong(a,m)  计算a轨迹在某个时间点m对应的位置点(集合点)   
         ST_Force3DZ(ST_GeometryN(ST_LocateAlong(b,m),1)) pb    -- ST_GeometryN 返回集合的第一个点, 由于a,b线段是3维线段, 所以返回后需要再使用ST_Force3DZ格式化一下?  
  FROM inp, cpa  
)  
SELECT st_astext(pa) pa, st_astext(pb) pb,   
       to_timestamp(m) t,  -- a,b线段距离最近时的最早的时间点m   
       ST_Distance(pa,pb) distance  -- a,b线段最接近的pa,pb点的距离   
FROM points, cpa;  
  
                       pa                        |                               pb                               |               t               |     distance       
-------------------------------------------------+----------------------------------------------------------------+-------------------------------+------------------  
 POINT Z (5.798478121227689 0 2.899239060613844) | POINT Z (9.041623081002845 1.24653140991643 3.972251279331437) | 2015-05-26 10:34:47.452124+00 | 3.47445388313376  
(1 row)  

以上SQL应用场景举例:

  1. 出行、配送、快递等业务的调度, 例如

快递员预规划的配送轨迹(轨迹a)

客户有发货需求(时间、位置)(轨迹b)

  1. 多个嫌疑人的轨迹

计算嫌疑人接触的地点、时间点

  1. 根据传染病人的多人多轨迹进行轨迹的碰撞计算, 对传染源进行溯源追踪

参考

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
10月前
|
算法 安全 数据挖掘
开源代码分享(6)—考虑实时市场联动的电力零售商鲁棒定价策略
提出了考虑实时市场联动的电力零售商鲁棒定价策略,以提升其抗风险能力。首先,考虑电力零售商日前定价、日前购电、实时能量管理、电动 车用户需求响应和电力市场统一出清价格等因素,建立了考虑电动汽车不确定性的电力零售商鲁棒定价模型。然后,通过线性化方法将鲁棒定价模型转化为两阶段混合整数规划,并通过列与约束生成算法迭代求解。最后,在 IEEE-33节点测试系统上进行了仿真,结果表明所提策略充分考虑了市场不确定性因素的影响,利用对冲机制降低了市场风险,提高了电力零售商的经营效率。
|
12月前
《快递行业云上技术服务白皮书》——3. 快递业务介绍——3.4 快递业务核心系统分析
《快递行业云上技术服务白皮书》——3. 快递业务介绍——3.4 快递业务核心系统分析
|
12月前
《快递行业云上技术服务白皮书》——3. 快递业务介绍——3.1 快递行业业务术语
《快递行业云上技术服务白皮书》——3. 快递业务介绍——3.1 快递行业业务术语
|
10天前
|
存储 关系型数据库 分布式数据库
使用 PolarDB 开源版 部署 pgrouting 支撑出行、快递、配送等商旅问题的路径规划业务
背景PolarDB 的云原生存算分离架构, 具备低廉的数据存储、高效扩展弹性、高速多机并行计算能力、高速数据搜索和处理; PolarDB与计算算法结合, 将实现双剑合璧, 推动业务数据的价值产出, 将数据变成生产力.本文将介绍使用 PolarDB 开源版 部署 pgrouting 支撑出行、快递、配...
24 0
|
10天前
|
存储 并行计算 关系型数据库
PolarDB 开源版通过 vrpRouting 解决 快递、出行、餐饮配送、旅游等商旅问题的最优解问题
背景PolarDB 的云原生存算分离架构, 具备低廉的数据存储、高效扩展弹性、高速多机并行计算能力、高速数据搜索和处理; PolarDB与计算算法结合, 将实现双剑合璧, 推动业务数据的价值产出, 将数据变成生产力.本文将介绍PolarDB 开源版通过 vrpRouting 解决 快递、出行、餐饮配...
23 0
|
存储 并行计算 Cloud Native
PolarDB 开源版 轨迹应用实践 - 出行、配送、快递等业务的调度; 传染溯源; 刑侦
PolarDB 的云原生存算分离架构, 具备低廉的数据存储、高效扩展弹性、高速多机并行计算能力、高速数据搜索和处理; PolarDB与计算算法结合, 将实现双剑合璧, 推动业务数据的价值产出, 将数据变成生产力. 本文将介绍PolarDB 开源版 轨迹应用实践, 例如: - 出行、配送、快递等业务的调度 - 快递员有预规划的配送轨迹(轨迹) - 客户有发货需求(时间、位置) - 根据轨迹估算最近的位置和时间 - 通过多个嫌疑人的轨迹, 计算嫌疑人接触的地点、时间点
277 0
|
存储 并行计算 Cloud Native
使用 PolarDB 开源版 部署 pgrouting 支撑出行、快递、配送等商旅问题的路径规划业务
PolarDB 的云原生存算分离架构, 具备低廉的数据存储、高效扩展弹性、高速多机并行计算能力、高速数据搜索和处理; PolarDB与计算算法结合, 将实现双剑合璧, 推动业务数据的价值产出, 将数据变成生产力. 本文将介绍使用 PolarDB 开源版 部署 pgrouting 支撑出行、快递、配送等商旅问题的路径规划业务
254 0
|
存储 并行计算 Cloud Native
PolarDB 开源版通过 vrpRouting 解决 快递、出行、餐饮配送、旅游等商旅问题的最优解问题
PolarDB 的云原生存算分离架构, 具备低廉的数据存储、高效扩展弹性、高速多机并行计算能力、高速数据搜索和处理; PolarDB与计算算法结合, 将实现双剑合璧, 推动业务数据的价值产出, 将数据变成生产力. 本文将介绍PolarDB 开源版通过 vrpRouting 解决 快递、出行、餐饮配送、旅游等商旅问题的最优解问题
178 0
|
存储 SQL JSON
ClickHouse:抓住你的每一个目标用户,人群圈选业务的大杀器
随着数据时代的发展,各行各业数据平台的体量越来越大,用户个性化运营的诉求也越来越突出,用户标签系统,做为个性化千人千面运营的基础服务,应运而生。如今,几乎所有行业(如互联网、游戏、教育等)都有实时精准营销的需求。针对复杂条件过滤的场景,ClickHouse对多条件筛选流程做出优化,扫描的数据量更小,性能也较ES而言更高效。
5852 0
ClickHouse:抓住你的每一个目标用户,人群圈选业务的大杀器
|
人工智能 文字识别 安全
阿里安全OCR技术刷新世界纪录 曾协助14省侦办百余起制售假疫情物资案
日前,阿里知产保护科技大脑中的一项OCR技术刷新世界纪录。OCR是学界业界必争之战,阿里、谷歌、微软、亚马逊等互联网公司也都研究多年。有OCR奥斯卡之称的ICDAR赛事,吸引全球近百国家数千队伍参加。近期,来自中国的阿里巴巴,一举刷新ICDAR-RCTW17文字检测及端到端文字识别两项世界最好成绩,位列世界第一。
阿里安全OCR技术刷新世界纪录 曾协助14省侦办百余起制售假疫情物资案