[GRASS5] Q. How do you find the islands for a given area?

Eric G. Miller egm2 at jps.net
Sun Feb 25 16:23:02 EST 2001


On Sun, Feb 25, 2001 at 07:49:00PM +0100, Radim Blazek wrote:
> 
> > There's probably alot I can do to speed it up, by being more efficient
> > about memory dupes.  The biggest killer is the search for the closest
> > tie point between the outer polygon and it's inner islands.  I'm doing a
> > real lame nested looping thing through two polygons to find the closest
> > points.  Maybe you'all have a better method to identify appropriate
> > points to tie to two polygons together at?
>  
> I think that for Xdriver should be used system built in X window:
> If fill-rule is set to EvenOddRule you can simply add islands to x,y array
> (always return to area start point after each island) and it should be
> plotted correctly. (For EvenOddRule, a point is inside if an infinite
> ray with the point as origin crosses the path an odd number of times.)

Yea, I switched to just gluing together the polys at whereever, and CPU
time dropped by 2/3.  

> Because other drivers (cell,..) will work in different way we need new function 
> R_polygon_with_holes_abs() which would send areas and islands separately
> to driver. X driver would use X window internal fill system (probably
> supported by HW) and cell driver would use your filling function
> with closest points (cell driver may be slower).   

Because no such thing exists in the driver interface, I'm hacking the
module itself.  I'll need to see how the CELL driver deals with the
hack.  I'm hoping it doesn't draw a 1pixel connecting line, but I don't
know...

-- 
Eric G. Miller <egm2 at jps.net>

---------------------------------------- 
If you want to unsubscribe from GRASS Development Team mailing list write to:
minordomo at geog.uni-hannover.de with
subject 'unsubscribe grass5'



More information about the grass-dev mailing list