[postgis-users] Is there a generic function to find coincident vertex?

Shaozhong SHI shishaozhong at gmail.com
Fri Dec 3 01:01:23 PST 2021


Hi, Simon,

That will not work.
Try turn p_geometry as an array.
Loop over the array and check each element of the array against the rest
elements of the array.

Regards,

David

On Fri, 3 Dec 2021 at 08:48, Simon SPDBA Greener <simon at spdba.com.au> wrote:

> Here is a simple wrapper SQL function.
>
> It checks that the geometry type is a LineString. Other types could be
> supported by extension of the SQL.
>
> create or replace function STNumDuplicateVertices( p_geometry geometry,
> p_tolerance numeric )
> returns integer
> language sql
> as
> $$
> select SUM(isDuplicate) as duplicateCount
>    from (select case when
> ST_Distance(ST_PointN(p_geometry,b.*),lead(ST_PointN(p_geometry,b.*))
> over (order by b.*)) < p_tolerance
>                      then 1
>                      else 0
>                  end as isDuplicate
>            from generate_series(1,ST_NumPoints(p_geometry),1) as b
>          where ST_GeometryType(p_geometry) = 'ST_LineString'
>         ) as f;
> $$
>
> select STNumDuplicateVertices(ST_GeomFromText('LINESTRING(0 0 1.1,1
> 1.001 1.2,1 1.0005 1.3,1 1 1.1,2 2 1.2)',0),0.01);
> select STNumDuplicateVertices(ST_GeomFromText('POLYGON((0 0,1 0,1 0,1
> 1,0 1,0 0))',0),0.01);
>
> _______________________________________________
> postgis-users mailing list
> postgis-users at lists.osgeo.org
> https://lists.osgeo.org/mailman/listinfo/postgis-users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/postgis-users/attachments/20211203/23cd202d/attachment.html>


More information about the postgis-users mailing list