On 30 August 2011 18:23, Tijs de Kler <tijs.dekler@sara.nl> wrote:
Im trying to use the tricontourf function in matplotlib to reduce the complexity of an unstructured dataset into contours.
The resulting contours are retrieved from the path by the to_polygon() function, but i have some trouble distinguishing inner boundaries on the polygons, while plot.show() clearly doesn't

Using Matplotlib 1.01, and the attached code, I get one level, consisting of 2 polygons, where the first is the outer boundary, and the second should be the inner boundary.
The figure shown by show() correctly displays a square with a inner square cut-out. However i cannot distinguish between inner and outer boundaries in the list of polygons that to_polygon() returns.

Is there a trick how the plot functions distinguish inner boundaries? Calculating for each polygon if it is contained in other polygons will become complicated with a large number of polygons: As far as i can tell this would be checking if the starting point of each polygon is contained in any of the other polygons. Is there a simpler method i missed?

Matplotlib includes a function to determine if a set of points is within a polygon, called points_inside_poly.  For an example see
http://matplotlib.sourceforge.net/faq/howto_faq.html#test-whether-a-point-is-inside-a-polygon
That is about as simple as it gets from a user's perspective!

Since you ask about tricks in plot functions, no there aren't any.  Rendering functions don't explicitly determine if a contour polygon is an inner or outer boundary.  Usually a sweep algorithm is performed across all points to construct the triangulation of the polygons as it progresses.  You could extract the inner/outer-ness of each boundary from such an algorithm but it would be overkill for what you want to do.

Ian Thomas