Thanks for sharing this! Such a great example of collaboration. You are all amazing.

Date: Wed, 5 Aug 2020 10:09:14 -0700
From: Martin Davis<[email protected]>
To: PostGIS Users Discussion<[email protected]>
Subject: Re: [postgis-users] Find LineString segment index containing
        closest point?
Message-ID:
        <cak2ens38o2ng2cr2gevm-lm6hgazq1s8eqo3dsj9pbjm2ms...@mail.gmail.com>
Content-Type: text/plain; charset="utf-8"

On Wed, Aug 5, 2020 at 9:38 AM Martin Davis<[email protected]>  wrote:

Added to the wiki:
https://trac.osgeo.org/postgis/wiki/UsersWikiLinearRefFunctions

It seems a bit awkward to use this as it stands for inserting a vertex in
a line at the closest point.  I wonder if the function should also return
the closest point itself?  (In fact, I am certain that it should if it is
implemented as a native function, since that additional useful information
costs very little to obtain).

And done...  updated the wiki with a new version of the function which
returns the index, distance and computed point on line.  Here it is in
action, used for adding a vertex to a line:

WITH data(id, line) AS (VALUES
     ( 1, 'LINESTRING (0 0, 10 10, 20 20, 30 30)'::geometry )
),
loc AS (
   SELECT id, line, index, geom AS pt
     FROM data
     JOIN LATERAL ST_LineLocateSegment( data.line, 'POINT(15
15.1)'::geometry ) AS lls ON true
)
SELECT id, ST_AsText( ST_AddPoint( line, pt, index ) )
   FROM loc;

Note this is probably better done using ST_Snap, but sometimes it's useful
to do things in a more explicit way.
--

------------------------------------------------------------------------
Phil Hurvitz, Research Scientist, CSDE <https://csde.washington.edu/>, UFL <sites.uw.edu/ufl>
Contact information <http://gis.washington.edu/phurvitz/contact>
Calendar <http://staff.washington.edu/phurvitz/calendar>


_______________________________________________
postgis-users mailing list
[email protected]
https://lists.osgeo.org/mailman/listinfo/postgis-users

Reply via email to