Hi all,

I am new to Shapely (but enthusiastic about it), and recently I've
discovered a bit of a road bump.

I have a polygon shapefile that I am reading in via Fiona. This shapefile
contains BOTH polygon and multipolygon items and I need to build an array
for each feature of all the coordinates within it (i.e. both exterior
and/or interior). Notably, two of the polygon items have interior rings
(and they are valid).

I seem to have no problem accessing the exterior coordinates of the
polygon(s)/multipolygon(s) ... but I am not pulling anything for the
interior coordinates.

Do I need to take a new approach here (i.e. LinearRings)...?

Here is my function if it helps...I can send my test file (it is
small)...if you want to see what I mean...

import fiona
from numpy import asarray
from shapely.geometry import shape, Polygon, MultiPolygon

def convert_polygons(inFile):

    for polys in fiona.open(inFile):
        myShape = shape(polys['geometry'])
        exterior_poly = 0
        interior_poly = 0
        if isinstance(myShape, Polygon):
            print "yes, I am a polygon"
            # count how many points for each interior polygon
            try:
                interior_poly += len(myShape.interior.coords)
            except:
                pass
            # count how many points for each exterior polygon
            exterior_poly += len(myShape.exterior.coords)
            geomArray = asarray(myShape.exterior)
            print geomArray
            print "number of interior points in polygon " +
str(interior_poly)
            print "number of exterior points in polygon " +
str(exterior_poly)
        elif isinstance(myShape, MultiPolygon):
            print "yes, I am a MultiPolygon"
            # count how many points for each interior polygon
            try:
                interior_poly += len(myShape.interior.coords)
            except:
                pass
            try:
                # count how many points for each exterior polygon
                exterior_poly += len(myShape.exterior.coords)
            except:
                pass
            try:
                geomArray = asarray(myShape.interior)
            except:
                pass
            try:
                geomArray = asarray(myShape.exterior)
            except:
                pass
            print geomArray
            print "number of interior points in polygon " +
str(interior_poly)
            print "number of exterior points in polygon " +
str(exterior_poly)
_______________________________________________
Community mailing list
Community@lists.gispython.org
http://lists.gispython.org/mailman/listinfo/community

Reply via email to