开发者社区> 问答> 正文

PostgreSQL如何实现连通性分析

目前数据有:

一个点类型数据表,格式为ID,Geom。
一个线类型数据表,格式为STARTID,ENDID,Geom,其中STARTID和ENDID都来源于点数据的ID值,为了表示点和线的连接关系。

问题:

如何实现随意指定一条点记录或者一条线记录,查询出所有能够跟这条记录连通的点和线(直到最末级无法查询出连通的记录为止)?

现状:

用了PostgreSQL的递归,如下:
WITH RECURSIVE T(START_SID,END_SID,GID) AS(

SELECT START_SID,END_SID,GIDFROM pipesection WHERE GID=23822
UNION ALL
    SELECT T1.START_SID,T1.END_SID,T1.GID
    FROM pipesection T1 JOIN T ON T1.START_SID=T.END_SID

)
SELECT START_SID,END_SID,GID FROM T;
但是只能查询出单一方向的连通关系,还望高人指点,谢谢!

展开
收起
Xu'J 2019-03-28 16:04:16 1966 0
0 条回答
写回答
取消 提交回答
问答排行榜
最热
最新

相关电子书

更多
云栖大会:开源 PolarDB 架构演进、关键技术与社区建设 立即下载
2023云栖大会:和客户一起玩转PolarDB新特性 立即下载
2023云栖大会:PolarDB for AI 立即下载

相关镜像