一 前言
工作中处理GIS数据时,最常规的操作是对多条线记录,他们的几何关系存在首尾相连的情况,需要合并成一个完整的线路。如路径分析中,路网都是一段一段的,显示的时候很不好看,合并成一个完整的显示比较好,如下图:
PostGIS中,线路合并有几个相似的方法,如ST_Union,ST_LineMerge,ST_MakeLine方法,几种方法看起来很相似,实际应用的差别挺大。本文主要阐述这几种方法的异同点和使用场景。
二 ST_Union
ST_Union是图形批处理中的一个函数,用于将图形联合(不是合并)成一条图形记录的方法。
#方法简介
geometry ST_Union(geometry set g1field);
geometry ST_Union(geometry g1, geometry g2);
geometry ST_Union(geometry[] g1_array);
输入参数:一般是图形的记录集或者图形的几何数组,也可以指定两个图形建立联合。
输出参数:返回的一般是Multi的geometry,或者geometry的collection。
使用场景:一般和聚合函数搭配使用。
使用示例:将数据中拥有相同start_id,end_id的线数据聚合成一条线路:
先查看下测试数据:
dianzhou=# select start_vid,end_vid,st_astext(geom) from a;
start_vid | end_vid | st_astext
-----------+---------+-------------------------------------------------------------------