Kor*_*not 5 php postgresql postgis function
(注意: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
Run Code Online (Sandbox Code Playgroud)
【真实实践说明】不介意目的者请跳过此部分
我想对表 B(又名 land_inventory)中的每一行执行“this”(来自我过去的问题的一组查询,链接位于本文末尾)。这两个表通过“ctrl_sec_no”(又名道路的控制路段编号)相关联,这意味着 :: 在一个 ctrl_sec_no -- 120802 中(事实上,这是一条道路,相当于连接在一起的 3 个几何 LINESTRING(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上的点
您正在寻找的函数是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;
Run Code Online (Sandbox Code Playgroud)
使用ST_LineMerge,您可以从多行转换为 LineString,但有一个警告,如果无法合并多行,它将返回多行而不进行任何修改。请参阅ST_LineMerge文档以了解 ST_LineMerge 可以做什么或不能做什么。
| 归档时间: |
|
| 查看次数: |
4803 次 |
| 最近记录: |