[postgis-users] st_split

franco base frenk.calza at gmail.com
Tue Oct 29 03:56:06 PDT 2013


Ayway
St_split and St_snap don't work

SELECT line,
point,
st_contains (st_snap (geom_line, geom_point,0.001), geom_point),
st_geometrytype ((st_dump(ST_split(st_snap (geom_line, geom_point,0.001),
geom_point))).geom),
(st_dump(ST_split(st_snap (geom_line, geom_point,0.001), geom_point))).geom
as splitted_geometry

give

"id";"line";"point";"st_contains";"st_geometrytype";"splitted_geometry"
1;7646;11764;t;"ST_LineString";"0102000020BB0B000006000000A4703D0A471F37412D211F04AF335341FAEDEBE0491F3741325530C2AE335341BD5296014F1F37418FC2F578AE3353414694F606521F3741D2DEE07BAE3353412D211F74541F37418FC2F578AE3353415713362F611F37410D996234AF335341"
2;7646;11764;t;"ST_LineString";"0102000020BB0B0000020000005713362F611F37410D996234AF33534123B9FC675020374112143FF6BC335341"
3;7646;11769;t;"ST_LineString";"0102000020BB0B000006000000A4703D0A471F37412D211F04AF335341FAEDEBE0491F3741325530C2AE335341BD5296014F1F37418FC2F578AE3353414694F606521F3741D2DEE07BAE3353412D211F74541F37418FC2F578AE3353415EF0DD584620374139BF2762BC335341"
4;7646;11769;t;"ST_LineString";"0102000020BB0B0000020000005EF0DD584620374139BF2762BC33534123B9FC675020374112143FF6BC335341"
5;7646;11762;t;"ST_LineString";"0102000020BB0B000006000000A4703D0A471F37412D211F04AF335341FAEDEBE0491F3741325530C2AE335341BD5296014F1F37418FC2F578AE3353414694F606521F3741D2DEE07BAE3353412D211F74541F37418FC2F578AE335341A5CBC785841F374156A2A33CB1335341"
6;7646;11762;t;"ST_LineString";"0102000020BB0B000002000000A5CBC785841F374156A2A33CB133534123B9FC675020374112143FF6BC335341"

St_geometrytype=ST_LineString but in qgis I have point and line.

point splitted geometry (id =2,4,6) = geom_point (starting gometry)
line splitted geometry  (id =1,3,5)  = geom_line (starting gometry)


2013/10/29 franco base <frenk.calza at gmail.com>

> Hi.
> Yes the cause can be that every function has his own "tolerance"
>
> SELECT line,geom_line,point,geom_point,
> ST_ClosestPoint(geom_line,geom_point), ----- return geometry=geom_point
> ST_distance (geom_line,geom_point), ---- return 0
> ST_contains(geom_line,geom_point) ---- return false
>
>
> "line";"geom_line";"point";"geom_point";"st_closestpoint";"st_distance";"st_contains"
>
> 7646;"0102000020BB0B000006000000A4703D0A471F37412D211F04AF335341FAEDEBE0491F3741325530C2AE335341BD5296014F1F37418FC2F578AE3353414694F606521F3741D2DEE07BAE3353412D211F74541F37418FC2F578AE33534123B9FC675020374112143FF6BC335341";11764;"0101000020BB0B00005713362F611F37410D996234AF335341";"0101000020BB0B00005713362F611F37410D996234AF335341";0;f
>
> 7646;"0102000020BB0B000006000000A4703D0A471F37412D211F04AF335341FAEDEBE0491F3741325530C2AE335341BD5296014F1F37418FC2F578AE3353414694F606521F3741D2DEE07BAE3353412D211F74541F37418FC2F578AE33534123B9FC675020374112143FF6BC335341";11769;"0101000020BB0B00005EF0DD584620374139BF2762BC335341";"0101000020BB0B00005EF0DD584620374139BF2762BC335341";0;f
>
> 7646;"0102000020BB0B000006000000A4703D0A471F37412D211F04AF335341FAEDEBE0491F3741325530C2AE335341BD5296014F1F37418FC2F578AE3353414694F606521F3741D2DEE07BAE3353412D211F74541F37418FC2F578AE33534123B9FC675020374112143FF6BC335341";11762;"0101000020BB0B0000A5CBC785841F374156A2A33CB1335341";"0101000020BB0B0000A5CBC785841F374156A2A33CB1335341";0;f
>
> Remi I don't undesrtand very well your tip to translate date and use
> St_SnapToGrid
>
> I cannot snap (using St_Snap) line to point because I'm working on a road
> network and I cannot move the line versus point.
>
>
> Thanks
> fb
>
>
> 2013/10/28 Rémi Cura <remi.cura at gmail.com>
>
>> I had the same problem,
>> all function don't react the same way when hitting precision limit.
>>
>> You may want to translate your data to reduce digits, and/or use
>> ST_SnapToGrid on everything before using ST_ClosestPoint.
>>
>> Cheers,
>> Rémi-C
>>
>>
>> 2013/10/28 Nicolas Ribot <nicolas.ribot at gmail.com>
>>
>>> Hmm this is strange:
>>>
>>> Finding the closest point (st_closestPoint) or using
>>> st_lineLocatePoint to project point onto the line does not work either
>>> on the provided dataset.
>>> Though the st_distance(line, point) returns 0.
>>>
>>> Nicolas
>>>
>>>
>>>
>>> On 28 October 2013 18:42, Rémi Cura <remi.cura at gmail.com> wrote:
>>> > You may want to split not with point but with the projected point one
>>> line
>>> > (use http://postgis.refractions.net/docs/ST_ClosestPoint.html)
>>> > If it is not enough, you may want to translate all your geometries to
>>> reduce
>>> > the number of digits in coordinates.
>>> > Another possibility is to use ST_Snap to snap line to point (won't
>>> work the
>>> > other way)
>>> >
>>> > Cheers,
>>> > Rémi-C
>>> >
>>> >
>>> > 2013/10/28 Nicolas Ribot <nicolas.ribot at gmail.com>
>>> >>
>>> >> Hi,
>>> >>
>>> >> The points are not on the line, probably due to rounding errors.
>>> >>
>>> >> st_contains(line, point) returns false.
>>> >>
>>> >> Nicolas
>>> >>
>>> >> On 28 October 2013 18:07, franco base <frenk.calza at gmail.com> wrote:
>>> >> > Hi.
>>> >> > I have a set of linestring and point on linestring.
>>> >> > I want cut the linestring on the point.
>>> >> > I can have n points for one linestring,
>>> >> > so I use ST_Split
>>> >> > (insted of ST_Line_Interpolate_Point and ST_Line_Substring)
>>> >> > but it doesn't work.
>>> >> >
>>> >> > line;geom_line;point;geom_point
>>> >> >
>>> >> >
>>> 7646;"0102000020BB0B000006000000A4703D0A471F37412D211F04AF335341FAEDEBE0491F3741325530C2AE335341BD5296014F1F37418FC2F578AE3353414694F606521F3741D2DEE07BAE3353412D211F74541F37418FC2F578AE33534123B9FC675020374112143FF6BC335341";11764;"0101000020BB0B00005713362F611F37410D996234AF335341"
>>> >> >
>>> >> >
>>> 7646;"0102000020BB0B000006000000A4703D0A471F37412D211F04AF335341FAEDEBE0491F3741325530C2AE335341BD5296014F1F37418FC2F578AE3353414694F606521F3741D2DEE07BAE3353412D211F74541F37418FC2F578AE33534123B9FC675020374112143FF6BC335341";11769;"0101000020BB0B00005EF0DD584620374139BF2762BC335341"
>>> >> >
>>> >> >
>>> 7646;"0102000020BB0B000006000000A4703D0A471F37412D211F04AF335341FAEDEBE0491F3741325530C2AE335341BD5296014F1F37418FC2F578AE3353414694F606521F3741D2DEE07BAE3353412D211F74541F37418FC2F578AE33534123B9FC675020374112143FF6BC335341";11762;"0101000020BB0B0000A5CBC785841F374156A2A33CB1335341"
>>> >> >
>>> >> > ST_GeometryType(St_Split(geom_line, geom_point))
>>> >> > give "ST_GeometryCollection"
>>> >> >
>>> >> > but
>>> >> >
>>> >> > (ST_Dump(ST_Split(geom_line, geom_point))).geom
>>> >> >
>>> >> > return only 3 linestring (one for record) and the geometry is egual
>>> to
>>> >> > geom_line
>>> >> >
>>> >> >
>>> >> > thanks.
>>> >> >
>>> >> > fb
>>> >> >
>>> >> > _______________________________________________
>>> >> > postgis-users mailing list
>>> >> > postgis-users at lists.osgeo.org
>>> >> > http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users
>>> >> _______________________________________________
>>> >> postgis-users mailing list
>>> >> postgis-users at lists.osgeo.org
>>> >> http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users
>>> >
>>> >
>>> >
>>> > _______________________________________________
>>> > postgis-users mailing list
>>> > postgis-users at lists.osgeo.org
>>> > http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users
>>> _______________________________________________
>>> postgis-users mailing list
>>> postgis-users at lists.osgeo.org
>>> http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users
>>>
>>
>>
>> _______________________________________________
>> postgis-users mailing list
>> postgis-users at lists.osgeo.org
>> http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/postgis-users/attachments/20131029/9701bc46/attachment.html>


More information about the postgis-users mailing list