[postgis-users] (Bug?) Strange Behavior with ST_SymDifference (line, surface)

Rémi Cura remi.cura at gmail.com
Fri Sep 27 07:15:10 PDT 2013


Hello strk,
thanks for the answer.

Sorry for the ascii "art",
my example looks like the ST_Split example, except that the line doesn't go
outside of the circle.


There is no problem with dimensions, as the mathematical definition does
not depend on dimension.
Output should just be a representation of (infinite) set of points where
points are in A Or B and not in A And B.


Output for line vs surface should be multipolygon, or poylgon with holes (
flat hole : the parts of the line inside the polygon), or multipolygon with
holes (flat holes : same).

Output for point vs surface should be polygon with holes (1 point hole :
point inside or on  boundary of surface), or multipolygons with holes (1
point holes : same).

I think there would be no problem to store this geometry in postgis ().

Then output of SymDiff would be a SymDiff and not an union when points or
lines are involved with surfaces (Which makes output false, and anything
using it possibly false also).
At the very least SymDiff should not add points to surface boundary where
it crossed line (what is the sense of it??).

Surely enough some output wouldn't be "valid", depending on your criteria
(quite sure QGis wouldn't like it). Yet it would be possible to warn about
invalid (for postgis) output and possibly deal with it.

Shall we switch to the dev list?
Thanks for your time,

Rémi-C



2013/9/27 Sandro Santilli <strk at keybit.net>

> Your ascii art doesn't render correctly with fixed font,
> unfortunately. Anyway I think I understood the issue.
>
> I belive the problem is with mix of dimensions.
> A line has 1 dimension only, by definition.
> If we had to make "space" to subtract the points that
> compose that line, how much space would those points take ?
> Points have even less dimension: 0...
>
> It's like subtracting points from an area and expecting
> to see holes in it. Does it sound ?
>
> --strk;
>
>
> On Fri, Sep 27, 2013 at 02:52:42PM +0200, Rémi Cura wrote:
> > hey,
> > I'm experiencing a strange behavior with ST_SymDifference
> > :<http://postgis.net/docs/manual-2.0/ST_SymDifference.html>
> >
> > When doing symdiff of a line and a surface, I get the same surfaces with
> > added points on surfaces boundary (where line crossed surface).
> >
> > Example :
> >   ___________
> > *├---------┤*
> >   -------------------
> >
> > gives
> >   ___________
> > *|             |***
> >   -------------------
> >
> > I read the SQL MM definition
> > (here<http://jtc1sc32.org/doc/N1101-1150/32N1107-WD13249-3--spatial.pdf
> ‎>,
> > page 67-68-69), and I found no trace of behavior with line against
> > surfaces.
> >
> > Mathematically , if we take for definition the union without the
> > intersection, the result is false (no point on the line should be in the
> > result, yet they are).
> >
> > I was expecting as output one polygon each side of the line (ie 2
> polygons).
> >
> > I would appreciate any thoughts about this.
> > Cheers,
> >
> > Rémi-C
> > PS : I know I can use ST_Split or other tricks for the same result in
> this
> > simple case, but not so easily for trickier case.
> _______________________________________________
> 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/20130927/82114a8c/attachment.html>


More information about the postgis-users mailing list