2012-02-09 56 views
4

(注:the_geom是一个几何值(TYPE:LINESTRING),在这种情况下,我随机他们可读性)PostGIS函数将几何线连接在一起?

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 几何LINESTRINGs(the_geom)连接在一起的,从KSTART 238(在开始的238公里)的至DMOZ目录250)

[PostGIS的问题]

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

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

回答

2

你正在寻找的是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你可以从多行转换成线段形式,但有一个警告,如果多线倾斜合并它将返回多行而不做任何修改。请参阅ST_LineMerge文档以了解ST_LineMerge可以或不可以执行的操作。

+0

如果我们使用ST_UNION,返回的值将会是一个LINESTRING,我想要的结果是一个线串。 – 2012-02-09 17:33:05

+0

我刚刚修改了答案,希望它适合您。 – 2012-02-10 17:37:06