【问题标题】:PostGIS function to connect geometry LINE together?PostGIS功能将几何线连接在一起?
【发布时间】:2012-03-02 01:14:00
【问题描述】:

(注意:the_geom 是一个几何值(类型:LINESTRING),在这种情况下,为了便于阅读,我将它们随机化)

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 中的每一行(又名。 土地库存)。这两个表通过 'ctrl_sec_no' 关联 (又名。道路的控制部分编号)这意味着 :: in ONE ctrl_sec_no -- 120802(其实就是一条路,相当于3 几何线串(the_geom)连接在一起,从 kstart 238(从 238 公里开始)到 kend 250)

[PostGIS 问题]

问题是如何将这 3 行 {aka gid(626,638,4037) from the table} 连接在一起,并通过使用 PostGIS 函数(无论如何)产生“the_sum_geom”(最初为 NULL)。之后我们将使用这个 'the_sum_geom' 在这个几何线串上找到 POINT

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

【问题讨论】:

    标签: php function postgresql postgis


    【解决方案1】:

    你要找的函数是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,您可以将多行转换为 LineString,但需要注意的是,如果多行无法合并,它将返回多行而不做任何修改。请参阅 ST_LineMerge 文档以了解 ST_LineMerge 可以做什么或不可以做什么。

    【讨论】:

    • 如果我们使用 ST_UNION,返回值将是一个 LINESTRING,我希望结果是一个 linestring。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-14
    • 2011-12-12
    • 1970-01-01
    • 1970-01-01
    • 2017-02-08
    • 2022-01-01
    • 2021-05-04
    相关资源
    最近更新 更多