# [geos-devel] Intersection determination for overlay in GGL?

Barend Gehrels Barend.Gehrels at geodan.nl
Tue Sep 22 10:51:13 EDT 2009

```Hi Martin,

Martin Davis wrote:
> Barend Gehrels wrote:
>>
>> The GGL overlay algorithm will be described in a paper. It is a
>> modern variant of the classic Weiler-Atherton algorithm.
>>
> Barend, the references I've seen about Weiler-Atherton don't specify
> the approach taken to compute intersections.  In my experience this is
> the most time-consuming part of overlay computation.
That is true. I made some measurements in July: in "normal" cases 84% of
the time is spent on finding intersections (using GGL). In cases where
there are much more intersections (the star-ellipse), still 54% is spent
on intersections. So yes, the intersection detection is the most
important phase for performance.

> A simplistic implementation is O(n^2), but there are a variety of
> techniques which can be used to improve this.  Can you comment on the
> approach GGL uses for intersection determination?
We currently use *monotonic sections* to speed this phase up. It is then
These monotonic sections are created on the fly. So the intersection
finding could be faster by having prepared monotonic sections. However,
determining the monotonic sections is not heavy, one loop per polygon.

Another option, which is investigated, would be to use a spatial index
for this. We already have a spatial index, but currently it does not
speed the process up, it is not yet optimal. However, a spatial index
would reduce the segments-to-be-compared by a factor of about 6 (see
below). So if the spatial index generation is (slightly) faster, it
would be an alternative.

We've done another test to research this:
- brute force (O(n^2)):  11856331 comparisons (factor 339.95)
- monotonic sections: 213732  comparisons (factor 6.13)
- spatial index: 34877 comparisons (factor 1)
These data are for a specific case, but it gives an idea.

Regards, Barend

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osgeo.org/pipermail/geos-devel/attachments/20090922/248b37fc/attachment.html
```