PostGIS函数将几何线连接在一起?

Kor*_*not 5 php postgresql postgis function

(注意:the_geom 是一个几何值(类型:LINESTRING),在这种情况下,我将它们随机化以提高可读性)

gid | kstart  | kend    | ctrl_sec_no | the_geom | the_sum_geom
626 | 238     | 239     | 120802      | 123456   | NULL
638 | 249     | 250     | 120802      | 234567   | NULL
4037| 239     | 249     | 120802      | 345678   | NULL
Run Code Online (Sandbox Code Playgroud)

【真实实践说明】不介意目的者请跳过此部分

我想对表 B(又名 land_inventory)中的每一行执行“this”(来自我过去的问题的一组查询,链接位于本文末尾)。这两个表通过“ctrl_sec_no”(又名道路的控制路段编号)相关联,这意味着 :: 在一个 ctrl_sec_no -- 120802 中(事实上,这是一条道路,相当于连接在一起的 3 个几何 LINESTRING(the_geom),从 kstart 238(从 238 公里处开始)到 kend 250)

[PostGIS问题]

问题是如何使用 PostGIS 函数(无论如何)将这 3 行 {aka gid(626,638,4037) from the table} 连接在一起并生成“the_sum_geom”(最初为 NULL)。之后我们将使用这个“the_sum_geom”来查找这个几何体LINESTRING上的点

如何通过使用几个查询从多个表中计算数据?)。

Fra*_*dez 4

您正在寻找的函数是ST_Union,您需要以聚合形式使用它:

update mytable set the_sum_geom = 
ST_LineMerge( ( select ST_Union(the_geom) from mytable where ctrl_sec_no  = 120802 ) )
where ctrl_sec_no = 120802;
Run Code Online (Sandbox Code Playgroud)

使用ST_LineMerge,您可以从多行转换为 LineString,但有一个警告,如果无法合并多行,它将返回多行而不进行任何修改。请参阅ST_LineMerge文档以了解 ST_LineMerge 可以做什么或不能做什么。