PostGIS功能将几何LINE连接在一起?

时间:2012-02-09 14:50:13

标签: php function postgresql postgis

(注意:the_geom是一个几何值(TYPE: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

[真实练习说明]只是为那些不介意目的的人跳过这个

  

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

[PostGIS问题]

问题是如何将这3行{aka gid(626,638,4037)从表}连接在一起,并通过使用PostGIS函数(无论如何)导致'the_sum_geom'(最初为NULL)。之后我们将使用这个'the_sum_geom'来找到这个几何上的POINT LINESTRING

How calculate things from many tables by using a few queries?)。

1 个答案:

答案 0 :(得分:3)

您要查找的功能是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;

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