【发布时间】:2021-11-25 16:10:37
【问题描述】:
我有一个带有线条的大图层,以及一个需要计算这些线条的长度而不计算它们的重叠的视图
完成一半工作的有效查询(但不考虑重叠,因此高估了数量)
select name, sum(st_length(t.geom)) from mytable t where st_isvalid(t.geom) group by name
返回 SQL 错误 [XX000] 的预期查询:错误:GEOSUnaryUnion:TopologyException:发现 LINESTRING (446659 422287、446661 422289) 和 LINESTRING (446659 422288、446660 422288) 之间的非节点交集在 446659.27994408668 处
08666select name,st_length(st_union(t.geom)) from mytable t where st_isvalid(t.geom) group by name
问题是后者对前 200 行工作正常,只有当我尝试导出整个视图时才会出现错误
有没有办法先使用首选查询,如果它在一行上返回错误,则使用另一个?比如:
case when st_length(st_union(t.geom)) = error then sum(st_length(t.geom))
else st_length(st_union(t.geom)) end
【问题讨论】:
标签: sql postgresql intersection geos