使用st_makeline()连接单列相邻点,是否需要新增列?
使用ST_Makeline()连接单列中相邻点的实现方法
不需要预先创建包含两个点的额外列,利用BigQuery的窗口函数LEAD()就能获取当前行的下一个点,再结合ST_Makeline()生成连线。
修正后的完整代码如下:
WITH t1 AS ( SELECT *, ST_GEOGPOINT(CAST(long AS FLOAT64), CAST(lat AS FLOAT64)) AS geometry FROM `my_table.faissal.trajets_flix` WHERE id = 1 ) SELECT index_loc, geometry AS current_point, LEAD(geometry) OVER (ORDER BY index_loc) AS next_point, ST_MAKELINE(geometry, LEAD(geometry) OVER (ORDER BY index_loc)) AS line_geometry FROM t1 WHERE LEAD(geometry) OVER (ORDER BY index_loc) IS NOT NULL ORDER BY index_loc
代码说明:
LEAD(geometry) OVER (ORDER BY index_loc):按index_loc排序后,获取当前行的下一个点的几何对象。ST_MAKELINE(geometry, next_point):将当前点和下一个点连接成线。WHERE LEAD(geometry) OVER (...) IS NOT NULL:过滤掉最后一行(因为最后一行没有下一个点,无法生成连线)。
执行后,结果中的line_geometry列就是每两个相邻点之间的连线。
内容的提问来源于stack exchange,提问作者Galiado
相关产品推荐
相关产品推荐

