[R-sig-Geo] Identifying overlapping polygons

Adrian Baddeley adrian at maths.uwa.edu.au
Mon Feb 12 03:06:08 CET 2007


Andrew Niccolai writes:

 >  I would like to identify every polygon from the first object
 >  [...] that completely or even partially [...] 
 >  falls within any given polygon from the second object (crown areas).  

This can be done in the package 'spatstat'.

If your polygons are simply connected (i.e. they do not consist of
multiple pieces and do not have any holes) then use the function
		
		overlap.xypolygon(A, B)

where A and B are two polygons. This function is not documented (sorry
about that). Both A and B should be in the format list(x, y) where x and y
are numeric vectors containing the x and y coordinates of the vertices 
of the polygon, traversed in anti-clockwise order, without repeating the 
first vertex. 

The value returned by overlap.xypolygon is the area of the overlap
(intersection) between the two polygons. 

The area of a polygon is computed by area.xypolygon(A) where A is 
again a simply-connected polygon in the same format as above.

So for example, you could decide that if
		overlap.xypolygon(A, B)/area.xypolygon(B) > 0.9
then you'll declare that B is substantially contained in A.
(Or whatever threshold you choose).

If your polygons are not simply-connected (e.g. they consist of
several pieces) you could use the functions

		overlap.owin(U, V)
		area.owin(U)

where U and V are objects of class "owin" representing spatial 
regions. See help(owin) for details of the format.

Hope that helps
Adrian Baddeley




More information about the R-sig-Geo mailing list