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

Eric G. Miller egm2 at jps.net
Sun Feb 25 19:16:29 EST 2001


On Sun, Feb 25, 2001 at 01:23:02PM -0800, Eric G. Miller wrote:
> 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...

Unfortunately, the CELL driver does draw a pixel wide connecting line,
even though the two boundary lines are colinear.  So, I've hooked up
that real slow algorithm again.  Takes about 3 times longer in my simple
testing...  Note, vectors without islands shouldn't draw too much slower
than d.vect would draw them.

-- 
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