Opened 20 months ago

Last modified 10 months ago

#3905 new enhancement

Extend ST_SetEffectiveArea so it also works on start/endpoints of polygons

Reported by: tomvantilburg Owned by: pramsey
Priority: medium Milestone: PostGIS 3.0.0
Component: postgis Version: 2.4.x
Keywords: ST_SetEffectiveArea Cc: strk@…, nicklas.aven@…

Description

ST_SetEffectiveArea (and hence ST_SimplifyVW) always sets the points related to start and endpoint of a polygon to dbl_max (example below). While this is logical for linestrings (it would break your network otherwise), it could be implemented better for polygons by reconnecting the polygon when start/endpoint are throw out because of a small effective area. This would be useful for example when polygons have spikes originating from the startpoint that are supposed to be removed by this algorithm. Not to break existing behaviour or break existing topological nodes this should be optional.

Also see this thread: https://lists.osgeo.org/pipermail/postgis-devel/2017-October/026669.html


Example:

SELECT
 ST_AsTExt(
  (ST_DumpPoints(
   ST_SetEffectiveArea(
    ST_GeometryFromText(
'POLYGON((
0 0,
10 0,
20 0,
20 10,
10 10,
10 0,
0 0
))'
    )
   ,0.1)
)).geom)

Result:

"POINT M (0 0 3.40282346638529e+38)"
"POINT M (20 0 3.40282346638529e+38)"
"POINT M (20 10 3.40282346638529e+38)"
"POINT M (10 10 50)"
"POINT M (10 0 50)"
"POINT M (0 0 3.40282346638529e+38)"

Change History (2)

comment:1 Changed 20 months ago by robe

Milestone: PostGIS 2.4.1PostGIS 2.5.0

sounds too invasive to try to put in 2.4.1 even though the api doesn't change. Pushing to 2.5.0

comment:2 Changed 10 months ago by robe

Milestone: PostGIS 2.5.0PostGIS 3.0.0

too late to make for 2.5.0

Note: See TracTickets for help on using tickets.