2012-02-09 11 views
4

(注:the_geomは、ジオメトリ値が(TYPEである。この場合、読みやすくするために、私のランダムな彼らに、LINESTRING))ジオメトリLINEを一緒に接続する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)のすべての行は「この」(私の過去の質問、この記事の末尾にあるリンク からのクエリのセットを)やりたいです。これらの2つのテーブルは、「ctrl_sec_no」 (道路の管理セクション番号とも呼ばれます)と関連しています:: ONE内で ctrl_sec_no-120802(実際には3 ジオメトリLINESTRING(the_geom) kstart 238から、互いに接続)250をkendする(238のキロで開始)

質問から別名GIDこの3行{(626,638,4037)を接続する方法である[PostGISの質問] table}を一緒にして、PostGIS関数(何でも)を使って 'the_sum_geom'(最初はNULL)になります。その後、この 'the_sum_geom'を使用してこのジオメトリ上のPOINTを検索します。LINESTRING

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

答えて

2

あなたが探している機能がST_Unionで、あなたが集計フォームでそれを使用する必要があります。ST_LineMerge

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のドキュメントを参照してください。

+0

ST_UNIONを使用すると、戻り値はLINESTRINGになります。結果は線ストリングになります。 –

+0

私はちょうど答えを変更しました、それがあなたのために働くことを願っています。 –

関連する問題