Opened 2 years ago

Last modified 4 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 Fund Me
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 (3)

comment:1 Changed 2 years 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 16 months ago by robe

Milestone: PostGIS 2.5.0PostGIS 3.0.0

too late to make for 2.5.0

comment:3 Changed 4 months ago by pramsey

Milestone: PostGIS 3.0.0PostGIS Fund Me
Note: See TracTickets for help on using tickets.