MultiPolygons
=============

Initialization
--------------

  >>> from shapely.geometry import Polygon, MultiPolygon

From coordinate tuples

  >>> geom = MultiPolygon( [
  ... (((0.0, 0.0), (0.0, 1.0), (1.0, 1.0), (1.0, 0.0)), [((0.1,0.1), (0.1,0.2), (0.2,0.2), (0.2,0.1))])
  ... ] )
  >>> geom # doctest: +ELLIPSIS
  <shapely.geometry.multipolygon.MultiPolygon object at ...>
  >>> len(geom.geoms)
  1
  >>> geom.wkt
  'MULTIPOLYGON (((0.0000000000000000 0.0000000000000000, 0.0000000000000000 1.0000000000000000, 1.0000000000000000 1.0000000000000000, 1.0000000000000000 0.0000000000000000, 0.0000000000000000 0.0000000000000000), (0.1000000000000000 0.1000000000000000, 0.1000000000000000 0.2000000000000000, 0.2000000000000000 0.2000000000000000, 0.2000000000000000 0.1000000000000000, 0.1000000000000000 0.1000000000000000)))'

Or from polygons

  >>> p = Polygon(((0, 0), (0, 1), (1, 1), (1, 0)), [((0.1,0.1), (0.1,0.2), (0.2,0.2), (0.2,0.1))])
  >>> geom = MultiPolygon([p])
  >>> len(geom.geoms)
  1
  >>> print geom.wkt
  MULTIPOLYGON (((0.0000000000000000 0.0000000000000000, 0.0000000000000000 1.0000000000000000, 1.0000000000000000 1.0000000000000000, 1.0000000000000000 0.0000000000000000, 0.0000000000000000 0.0000000000000000), (0.1000000000000000 0.1000000000000000, 0.1000000000000000 0.2000000000000000, 0.2000000000000000 0.2000000000000000, 0.2000000000000000 0.1000000000000000, 0.1000000000000000 0.1000000000000000)))

Or from another multi-polygon

  >>> geom2 = MultiPolygon(geom)
  >>> len(geom2.geoms)
  1
  >>> print geom2.wkt
  MULTIPOLYGON (((0.0000000000000000 0.0000000000000000, 0.0000000000000000 1.0000000000000000, 1.0000000000000000 1.0000000000000000, 1.0000000000000000 0.0000000000000000, 0.0000000000000000 0.0000000000000000), (0.1000000000000000 0.1000000000000000, 0.1000000000000000 0.2000000000000000, 0.2000000000000000 0.2000000000000000, 0.2000000000000000 0.1000000000000000, 0.1000000000000000 0.1000000000000000)))

Sub-geometry Access
-------------------

  >>> geom.geoms[0] # doctest: +ELLIPSIS
  <shapely.geometry.polygon.Polygon object at ...>
  >>> geom.geoms[0].wkt
  'POLYGON ((0.0000000000000000 0.0000000000000000, 0.0000000000000000 1.0000000000000000, 1.0000000000000000 1.0000000000000000, 1.0000000000000000 0.0000000000000000, 0.0000000000000000 0.0000000000000000), (0.1000000000000000 0.1000000000000000, 0.1000000000000000 0.2000000000000000, 0.2000000000000000 0.2000000000000000, 0.2000000000000000 0.1000000000000000, 0.1000000000000000 0.1000000000000000))'
  >>> geom.geoms[1]
  Traceback (most recent call last):
  ...
  IndexError: index out of range

Geo interface
-------------

  >>> geom.__geo_interface__
  {'type': 'MultiPolygon', 'coordinates': [[((0.0, 0.0), (0.0, 1.0), (1.0, 1.0), (1.0, 0.0), (0.0, 0.0)), ((0.10000000000000001, 0.10000000000000001), (0.10000000000000001, 0.20000000000000001), (0.20000000000000001, 0.20000000000000001), (0.20000000000000001, 0.10000000000000001), (0.10000000000000001, 0.10000000000000001))]]}

Adapter
-------

  >>> from shapely.geometry import asMultiPolygon
  >>> coords = ((0.0, 0.0), (0.0, 1.0), (1.0, 1.0), (1.0, 0.0))
  >>> holes_coords = [((0.1,0.1), (0.1,0.2), (0.2,0.2), (0.2,0.1))]
  >>> mpa = asMultiPolygon([(coords, holes_coords)])
  >>> len(mpa.geoms)
  1
  >>> len(mpa.geoms[0].exterior.coords)
  5
  >>> len(mpa.geoms[0].interiors)
  1
  >>> len(mpa.geoms[0].interiors[0].coords)
  5
  
