【重新发现PostgreSQL之美】- 27 无中生有

简介: 大家好,这里是重新发现PostgreSQL之美 - 27 无中生有

背景


场景:

•   路径规划: 大型商业综合体, 自动驾驶, 虚拟现实.

•   共享出行(拼车), 配送调度(餐饮、包裹).

•   刑侦: 轨迹相遇分析

                       《重新发现PostgreSQL之美- 11 时空轨迹系统新冠&刑侦&预测》

挑战:

•   传统数据库不支持路网数据, 需要move data到应用端进行计算.

•   现实中轨迹存在缺失点, 当需要分析轨迹相遇事件时, 准确度下降.

•   在共享出行拼单, 包裹和餐饮配送中存在一到多, 多到多的路径规划, 非常复杂传统数据库不支持.

PG 解决方案:

•   支持路网数据存储: 点, 线. 支持道路正、反权重来表示路段通畅度.

•   内置多重路径规划算法, 支持one to one,one to many,many to one,many to many等算法.

 

pgrouting

https://docs.pgrouting.org/latest/en/index.html

https://workshop.pgrouting.org/

数据库路由优点:

•   兼容更多客户端, 都可以修改数据和属性,例如QGIS通过JDBC、ODBC 或直接使用Pl/pgSQL。客户端可以是PC 或移动设备。

•   数据更新后, 全网可见. 无需预先计算。

•   路径规划中的变量: “成本”、“路段” 参数可以通过SQL 动态计算,其值可以来自多个字段或表。

◦                    例如路段施工、路段拥堵都可以实时反馈.

核心功能, pgRouting 库包含以下功能(算法):

•   All Pairs Shortest Path, Johnson’s Algorithm

•   All Pairs Shortest Path, Floyd-Warshall Algorithm

•   Shortest Path A*

•   Bi-directional Dijkstra Shortest Path

•   Bi-directional A* Shortest Path

•   Shortest Path Dijkstra

•   Driving Distance

•   K-Shortest Path, Multiple Alternative Paths

•   K-Dijkstra, One to Many Shortest Path

•   Traveling Sales Person

•   Turn Restriction Shortest Path (TRSP)

 

例子

某个轨迹信息:

point1, ts  

point2, ts  

...  

pointn, ts  

绘图后发现缺失某些点, 出现飞行轨迹, 怎么办?以下是路网情况, cost可以表示为当时的道路通过耗时

pointx1, pointy1, cost, reverse_cost  

pointy1, pointz1, cost, reverse_cost  

...  

point??, point??, cost, reverse_cost  

无中生有:

采用one to one的算法的到缺失路径

https://docs.pgrouting.org/latest/en/pgr_dijkstra.html

pgr_dijkstra(Edges SQL, start_vid,  end_vid [, directed])  

pgr_dijkstra(Edges SQL, start_vid,  end_vids [, directed])  

pgr_dijkstra(Edges SQL, start_vids, end_vid  [, directed])

pgr_dijkstra(Edges SQL, start_vids, end_vids [, directed])  

pgr_dijkstra(Edges SQL, Combinations SQL [, directed]) -- Proposed on v3.1  

RETURNS SET OF (seq, path_seq [, start_vid] [, end_vid], node, edge, cost, agg_cost)  

OR EMPTY SET  

Example

•   From vertex to vertex on a directed graph

SELECT * FROM pgr_dijkstra(  

   'SELECT id, source, target, cost, reverse_cost FROM edge_table',  

   2, 3  

);  

seq | path_seq | node | edge | cost | agg_cost  

-----+----------+------+------+------+----------  

  1 |        1 |    2 |    4 |   1 |        0  

  2 |        2 |   5 |    8 |    1 |       1  

  3 |        3 |   6 |    9 |    1 |       2  

  4 |        4 |   9 |   16 |    1 |       3  

  5 |        5 |   4 |    3 |    1 |       4  

  6 |        6 |   3 |   -1 |    0 |       5  

(6 rows)  

 

参考

https://locatepress.com/pgrouting

https://pgrouting.org/

https://www.openstreetmap.org/#map=4/36.96/104.17

 

 

 



相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍如何基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
人工智能 编解码 芯片
告别低效沟通|让技术提问不再头疼-这套高效AI提问模板来帮你
不会向ai提问,不知道怎么提问的 可以看看
21459 1
告别低效沟通|让技术提问不再头疼-这套高效AI提问模板来帮你
|
消息中间件 XML 网络协议
『NLog』.Net使用NLog使用方式及详细配置(输出至文件/RabbitMQ/远程网络Tcp)
📣读完这篇文章里你能收获到 - Nlog输出至文件/RabbitMQ/远程网络Tcp配置文档 - Nlog配置参数详解 - .NET CORE项目接入
6849 0
『NLog』.Net使用NLog使用方式及详细配置(输出至文件/RabbitMQ/远程网络Tcp)
|
存储 算法 数据库
一起聊聊图像质量和美学评估的数据集
图像质量和美学评估是计算机视觉领域中热点的研究问题,并且极具应用前景,可与众多实际应用深度结合。评价一张图片,主要从两个方向,一个是图像的质量,如像素、清晰度、有无噪声等,一个是图像的感觉,也就是美学,如构图、颜色、内容主体等。通过这两个方面就可以评价一张图片的好坏,通过计算机视觉算法,可以为图片自动评分,得分高的图片被认为较好,可以用于推荐和搜索等应用场景。本文主要聊聊一些关于图像质量和美学评估
14576 1
|
XML IDE Java
Android gradle.properties 基础使用和常规配置
Gradle 是一个开源构建自动化工具,其设计足够灵活,可以构建几乎任何类型的软件。
|
12月前
|
人工智能 JavaScript 前端开发
LangGraph架构解析
本文深入解析了传统Agent开发的三大痛点:状态管理碎片化、流程控制复杂及扩展性差,提出使用LangGraph通过有向图模型重构工作流,将LLM调用与工具执行抽象为节点,实现动态流程跳转。文中详述LangGraph四大核心组件——状态机引擎、节点设计、条件边与工具层集成,并结合生产环境最佳实践,如可视化调试、状态持久化与人工干预机制,最终对比LangGraph与传统方案的性能差异,给出选型建议。
2616 1
|
人工智能 自然语言处理 运维
工业组态 + LLM : 大模型技术引领传统工业软件创新与实践(上)
工业组态 + LLM : 大模型技术引领传统工业软件创新与实践(上)
3414 1
|
人工智能 自然语言处理 安全
AI技术发展下,单智能体局限性凸显,如何通过MCP和A2A协议实现智能体团队协作转变?
本文智能体专家三桥君探讨了AI智能体协作的关键技术MCP(工具调用协议)和A2A(智能体协作协议)。MCP扩展智能体功能边界,支持动态连接外部工具;A2A实现智能体间的安全协作与状态同步,通过AgentCard实现能力匹配。二者集成后,可构建跨框架协作生态,解决复杂任务处理难题。三桥君指出,拥抱该技术体系是突破单智能体局限、实现AGI落地的核心路径。
522 0
|
存储 人工智能 弹性计算
从“云+原神”到“云上星穹”,阿里云支持米哈游新游全球首发
近日,阿里云支持米哈游新作《崩坏:星穹铁道》正式上线,首发当天全网下载量突破2000万,当日登上iOS免费榜与畅销榜的总榜第一及其他多国榜首。
|
数据安全/隐私保护 开发者
六、ArkTS 常用组件-按钮(Button)/切换按钮(Toggle)/文本输出(TextInput)
`Button` 组件是 HarmonyOS 应用开发中的基本组件之一,主要用于响应用户的点击操作。它支持两种使用方式:不包含子组件和包含子组件。不包含子组件时,`Button` 通过 `label` 属性设置按钮上的文字,同时提供 `options` 参数来配置按钮类型和点击效果;包含子组件的方式则允许更灵活的内容展示,如图片或复杂布局,此时无需设置 `label`。此外,`Button` 组件还提供了设置背景颜色、边框圆角等样式的方法,以及绑定点击事件的功能,使开发者能够轻松实现丰富的交互体验。
1122 0
六、ArkTS 常用组件-按钮(Button)/切换按钮(Toggle)/文本输出(TextInput)