Hi Marcin,

thanks for your reply. I don't think, that will provide the results I am looking for. I am deliberately aggregating all intersecting lines with ST_Union because otherwise the query would result in several collections per polygon, each collection containig the st_split result for one of the intersecting lines (blades). But I want the polygon cut with all blades.

Currently I am trying Marcone's suggestion (although I cannot imagine why this should solve anything - but you never know until you try, right?).

So, thank you both, Marcin and Marcone!

Regards,

Birgit

Am 15.06.2016 um 09:24 schrieb Marcin Mionskowski:
On Tue, 14 Jun 2016 15:37:40 +0200, Marcone <marconepe...@gmail.com> wrote:


2016-06-14 9:52 GMT-03:00 Birgit Laggner <birgit.lagg...@thuenen.de>:
I would like to use the ST_Split function to split polygons from one
   table with all intersecting lines from another table. Unfortunately,
   I get the following error:

     ERROR: Splitting a Polygon by a MultiLineString is unsupported

   SQL Status:XX000

     This is my query:

     select betr_id, (cut).path[1], (cut).geom from (select betr_id,
   st_dump(st_split) as cut from (select a.betr_id, ST_Split(a.geom,
   st_union(b.geom)) from p_sam.nihb_2013_convex_hull_betr a left join
   p_sam.ni_dlm13_aaa_gew_sie_ver_l b on st_intersects(a.geom, b.geom)
   group by a.betr_id, a.geom) sel1) sel2;

     The Manual contains the following info regarding this problem:

"The function supports splitting a line by (multi)point, (multi)line
   or (multi)polygon boundary, a (multi)polygon by line."

     This might mean that I would be able to split a line by
   multilinestrings, but a polygon only by single linestrings - is that
   correct? Does anyone has a suggestion how I could work around this
   problem (aside from looping the ST_Split with some function, DO
   block or pgScript after selecting all intersecting linestrings per
   polygon)?

     Thanks a lot for any helpful suggestions!

I'm not sure if I understand your problem, but try use ST_Split(st_multi(a.geom), st_union(b.geom)). I'm not test this, but I think that will solve your problem.

Best regards.



Have you tried to ST_Dump multilinestrings first?
Using CTE this could look like:

with
a as ( --polygon
    select ST_Buffer(ST_GeomFromText('POINT(100 90)'), 50) a
    ),
b as ( --multilinestring
    select ST_Union(
(select ST_MakeLine(ST_MakePoint(10, 10),ST_MakePoint(190, 190))), (select ST_MakeLine(ST_MakePoint(191, 191),ST_MakePoint(200, 200)))
    ) b
    ),
c as ( --multilinestring dump -> 2 separate linestrings
    select (ST_Dump(b)).geom c
    from b
    )

SELECT ST_AsText(ST_Split(a, c))
from a,c
where ST_Intersects(a,c)

Intersection check is done here on line parts.

Regards
_______________________________________________
postgis-users mailing list
postgis-users@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/postgis-users

_______________________________________________
postgis-users mailing list
postgis-users@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/postgis-users

Reply via email to