2012-02-09 22 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