Opened 7 years ago

Last modified 5 years 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 by robe, 7 years ago

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 by robe, 6 years ago

Milestone: PostGIS 2.5.0PostGIS 3.0.0

too late to make for 2.5.0

comment:3 by pramsey, 5 years ago

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