Confusion about ST_ReducePrecision and geometry validity
Marco Boeringa
marco at boeringa.demon.nl
Tue Jun 11 13:21:32 PDT 2024
Thanks Martin, that confirmation is really helpful. Should be a simple
fix now to amend the help text and avoid the confusion.
Op 11-6-2024 om 22:14 schreef Martin Davis:
> Yes, your interpretation is correct. ST_ReducePrecision is only
> guaranteed to work on VALID geometries. It will also work on *some*
> invalid geometries (such as ones which are invalid due to
> containing adjacent - but not overlapping - polygons). So the
> safest thing is to use ST_MakeValid if there is doubt about whether
> the inputs are valid.
>
> On Tue, Jun 11, 2024 at 1:00 PM Marco Boeringa
> <marco at boeringa.demon.nl> wrote:
>
> Hi,
>
> Currently, the help page of PostGIS's ST_ReducePrecision command
> more or less suggests that ST_ReducePrecision can be used as kind
> of "drop-in" replacement of ST_MakeValid. The actual text reads:
>
> /"Returns a valid geometry with all points rounded to the provided
> grid tolerance, and features below the tolerance removed.
>
> Unlike ST_SnapToGrid the returned geometry will be valid, with no
> ring self-intersections or collapsed components./
>
> /Precision reduction can be used to: /
>
> *
>
> /match coordinate precision to the data accuracy /
>
> *
>
> /reduce the number of coordinates needed to represent a geometry /
>
> *
>
> /ensure valid geometry output to formats which use lower
> precision (e.g. text formats such as WKT, GeoJSON or KML when
> the number of output decimal places is limited). /
>
> *
>
> /export valid geometry to systems which use lower or limited
> precision (e.g. SDE, Oracle tolerance value)"/
>
> However, a first test replacing:
>
> ST_CollectionExtract(ST_MakeValid(<SOME OTHER GENERALIZATION CODE>),3)
>
> with:
>
> ST_ReducePrecision(<SOME OTHER GENERALIZATION CODE>),<GRID SIZE>)
>
> failed on some geometries with a processing error.
>
> Replacing the first try with:
>
> ST_ReducePrecision(ST_CollectionExtract(ST_MakeValid(<SOME OTHER
> GENERALIZATION CODE>),3),<GRID SIZE>)
>
> did succeed.
>
> This suggest to me that the help page should actually read
> something like:
>
> /"Returns a geometry with all points rounded to the provided grid
> tolerance, and features below the tolerance removed.
>
> Unlike ST_SnapToGrid the returned geometry is guaranteed to be
> valid, with no ring self-intersections or collapsed components, if
> the input geometry itself is valid. If the input geometry is
> invalid, there is no guarantee the output will be valid. Use
> ST_MakeValid to ensure the input is valid before running this
> command if the input data may contain invalid geometries."/
>
> Is my interpretation of how//ST_ReducePrecision handles validity
> as reflected by this suggested updated help text correct?/
> /
>
> Marco/
> /
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/postgis-users/attachments/20240611/1f375244/attachment.htm>
More information about the postgis-users
mailing list