Opened 9 months ago
Closed 9 months ago
#5709 closed defect (fixed)
ST_ChangeEdgeGeom fails to update face MBR when movement is smaller than float4
Reported by: | strk | Owned by: | strk |
---|---|---|---|
Priority: | medium | Milestone: | PostGIS 3.4.3 |
Component: | topology | Version: | 3.4.x |
Keywords: | Cc: |
Description
Similarly to what was reported for ST_RemEdgeModFace
and TopoGeo_addLineString
there are cases in which the MBR of a face gets ruined by calling ST_ChangeEdgeGeom
and slightly moving a vertex.
Downstream report: https://gitlab.com/nibioopensource/resolve-overlap-and-gap/-/issues/74
Change History (4)
comment:1 by , 9 months ago
comment:2 by , 9 months ago
The problem, like in #4941, is that lwgeom_get_bbox gets an approximaged bounding box from the serialized representation of the geometry:
+psql:test.sql:28: DEBUG: [topo/lwgeom_topo.c:lwt_ChangeEdgeGeom:3569] BBOX of changed edge did not change
Paul, Regina: should we maybe stop reding that lamed-down box from the serialized representation when deserializing into LWGEOM ?
comment:3 by , 9 months ago
Or, what we would need is an SQL accessible function to round float8 boxes into float4 ones, as the topology MBR doesn't really need to be all that strict, as long as it contains all the face edges. But that's probably worth a separate ticket as it's a performance concern.
comment:4 by , 9 months ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
Fixed in:
- master branch (3.5.0dev) with [b123d48a7b6bf127120dd3eca5d892cf95180c73/git]
- 3.4 branch (3.4.3dev) with [3f2959841ec3ba916428e65930651607138c1a58/git]
- 3.3 branch (3.3.7dev) with [8769361951c659719f8292303d55f1dbfa3f85e5/git]
I will not backport further for now
Testcase: