[geos-devel] Fwd: Geometry/Rectangle Intersection: line touching rectangle

Sandro Santilli strk at keybit.net
Fri Sep 12 02:42:17 PDT 2014


On Fri, Sep 12, 2014 at 12:32:32PM +0300, Mika Heiskanen wrote:
> On 09/12/2014 11:28 AM, Sandro Santilli wrote:
> >On Thu, Sep 11, 2014 at 07:30:45PM +0300, Mika Heiskanen wrote:
> >>On 09/11/2014 06:57 PM, Sandro Santilli wrote:
> >>>Did you take a look at the algorithm ?
> >>>It sounds like by the end of operations the class is left with a bunch
> >>>of lines to work with, not much to build a result w/out going back
> >>>to look at which sides of those lines are internal or external of the
> >>>originals.
> >>
> >>At the time of insertion into the builder it is known for all
> >>linestrings whether they are part of a hole or the exterior of
> >>a polygon. This information can be inserted into the builder
> >>along with the linestring, and used in the rebuild phase.
> >
> >Not only whether the linestring was part of an hole or a shell, but
> >in case it was part of the hole, we must also pass along which side
> >of boundary segments had the area. Look here:
> >
> >Clipping rectangle       Expected result
> >and input                ( a poligon + a line )
> >
> >  +-------+               . . . . .
> >  |rect   |               .       .
> >  |  +----:-----+         .  +----+
> >  |  |    :     |         .  |    |
> >  |  | +--+     |         .  | +--+
> >  |  | |h |     |         .  | |  | <-- dangling line
> >  |  | +--+ s   |         .  | +--+
> >  |  |    :     |         .  |    |
> >  |  |    +--+  |         .  |    |
> >  |  |    |h |  |         .  |    | <-- dissolved
> >  |  |    +--+  |         .  |    |
> >  |  |    :     |         .  |    |
> >  |  +----:-----+         .  +----+
> >  |       :               .       .
> >  +-------+               . . . . .
> 
> I do not think the extra information is necessary, since if the input
> is a valid geometry, the hole is counter-clockwise. The direction of
> the shared partial edge should  dictate the position of the hole
> with respect to the rectangle. In the above example the upper edge
> is
> counter-clockwise in the rectangle while the lower edge is clockwise.

Winding order of shells and holes do not count as per OGC validity.
Of course we could make RectangleIntersection ensure right-hand-rule
upfront...

--strk;


More information about the geos-devel mailing list