Thanks Martin. Your query provides the result I was expecting. What is the difference between closest point along the line and the ST_Snap I have tried? ST_Snap was just providing one part.
Thanks again Nicol Am Freitag, den 30.04.2021, 12:45 -0700 schrieb Martin Davis: > It would probably be helpful if ST_Split was enhanced to have this > same behaviour (i.e. split at the closest point along the line). > > On Fri, Apr 30, 2021 at 12:27 PM Martin Davis <[email protected]> > wrote: > > For working with points and lines it's probably better to use the > > linear referencing functions. Here's a query which does what you > > require: > > > > WITH line(geom) AS (VALUES > > ('LINESTRING(8.39567520433486 49.4224277276901,8.39591232763397 > > 49.4198517063953)'::geometry) > > ) > > SELECT ST_AsText( > > ST_LineSubstring( geom, 0, ST_LineLocatePoint(geom, > > 'POINT(8.39583178549713 49.4207266868819)'::geometry)) > > ) AS part1, > > ST_AsText( > > ST_LineSubstring( geom, ST_LineLocatePoint(geom, > > 'POINT(8.39583178549713 49.4207266868819)'::geometry), 1) > > ) AS part2 > > FROM line; > > > > > > On Sun, Apr 25, 2021 at 7:49 AM Nicol Hermann <[email protected]> > > wrote: > > > Hello List, > > > > > > I am trying to split a linestring at an intersection to another > > > line > > > into it's two segments. > > > This works as expected with "dummy" coordinates, but fails with > > > "real- > > > world" coordinates. > > > > > > This: > > > > > > SELECT ST_AsText( ST_Split (ST_GeomFromText('LINESTRING(0 0,2 > > > 2)'), > > > ST_GeomFromText('POINT(1 1)') ) ) as lsegments; > > > > > > gives me the expected output: > > > > > > lsegments > > > ------------------------------------------------------------- > > > GEOMETRYCOLLECTION(LINESTRING(0 0,1 1),LINESTRING(1 1,2 2)) > > > (1 Zeile) > > > > > > > > > When I am trying this with real world coordinates I am always > > > getting > > > the un-splitted original linesting back. > > > Sample: > > > > > > SELECT ST_AsText(ST_intersection(aline, bline)) AS > > > wktcut > > > > > > > > > FROM (SELECT > > > ST_GeomFromText('LINESTRING(8.39567520433486 > > > 49.4224277276901,8.39591232763397 49.4198517063953)') As aline, > > > ST_GeomFromText('LINESTRING(8.39481293779266 > > > 49.4206708596104,8.39717339245195 49.4208001995917)') As bline ) > > > As > > > foo; > > > > > > returns > > > POINT(8.39583178549713 49.4207266868819) > > > > > > If I am using this in the split command > > > > > > SELECT ST_AsText( ST_Split > > > (ST_GeomFromText('LINESTRING(8.39567520433486 > > > 49.4224277276901,8.39591232763397 49.4198517063953)'), > > > ST_GeomFromText('POINT(8.39583178549713 49.4207266868819)') ) ) > > > as > > > lsegments; > > > > > > the result is > > > lsegments > > > --------------------------------------------------------------- > > > ------- > > > GEOMETRYCOLLECTION(LINESTRING(8.39567520433486 > > > 49.4224277276901,8.39591232763397 49.4198517063953)) > > > (1 Zeile) > > > > > > which es equal to the input. > > > > > > Is this a precision issue between differen postgis functions and > > > how > > > can I solve this? > > > > > > If I'am adding ST_Snap it returns a linestring which only > > > represents > > > one of the 2 segments I would expect. > > > > > > See: > > > > > > SELECT > > > ST_AsText( > > > ST_Split ( > > > ST_Snap ( > > > ST_GeomFromText('LINESTRING(8.39567520433486 > > > 49.4224277276901,8.39591232763397 49.4198517063953)'), > > > ST_GeomFromText('POINT(8.39583178549713 49.4207266868819)'), 1 > > > ), > > > ST_GeomFromText('POINT(8.39583178549713 49.4207266868819)') ) > > > ); > > > ) ) > > > as lsegments; > > > > > > response is: > > > > > > lsegemts > > > --------------------------------------------------------------- > > > ------- > > > GEOMETRYCOLLECTION(LINESTRING(8.39567520433486 > > > 49.4224277276901,8.39583178549713 49.4207266868819)) > > > > > > > > > Any hints, or do I have a misconception how ST_Split should work? > > > > > > Thanks > > > Nicol > > > > > > _______________________________________________ > > > postgis-users mailing list > > > [email protected] > > > https://lists.osgeo.org/mailman/listinfo/postgis-users > > _______________________________________________ > postgis-users mailing list > [email protected] > https://lists.osgeo.org/mailman/listinfo/postgis-users _______________________________________________ postgis-users mailing list [email protected] https://lists.osgeo.org/mailman/listinfo/postgis-users
