(注意: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”相关
(又名道路的控制路段编号),这意味着 :: 在 ONE 中
ctrl_sec_no -- 120802(实际上是一条路,相当于3
连接在一起的几何线串 (the_geom),从 kstart 238(从 238 公里开始)到 kend 250)
[PostGIS问题]
问题是如何使用 PostGIS 函数(无论如何)将这 3 行 {aka gid(626,638,4037) from the table} 连接在一起并生成“the_sum_geom”(最初为 NULL)。之后我们将使用这个“the_sum_geom”来查找这个几何体LINESTRING上的点
(如何通过使用几个查询从多个表中计算数据? https://stackoverflow.com/questions/9211362/how-calculate-things-from-many-tables-by-using-a-few-queries).
您正在寻找的功能是ST_Union http://postgis.org/docs/ST_Union.html,您需要将其与聚合形式一起使用:
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;
With ST_LineMerge http://www.postgis.org/docs/ST_LineMerge.html您可以从 Multiline 转换为 LineString 但有一个警告,如果多行无法合并,它将返回多行而不进行任何修改。请参阅ST_LineMerge http://www.postgis.org/docs/ST_LineMerge.html文档以了解 ST_LineMerge 可以做什么或不能做什么。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)