Test implementation of array interface
======================================

  >>> from shapely.geometry import Point

  >>> p = Point(0.0, 0.0, 1.0)
  >>> coords = p.coords[0]
  >>> coords
  (0.0, 0.0, 1.0)
  >>> p.ctypes #doctest: +ELLIPSIS
  <shapely.geometry.point.c_double_Array_3 object at ...>

  Convert to Numpy array, passing through Python sequence

  >>> from numpy import asarray
  >>> a = asarray(coords)
  >>> a.ndim
  1
  >>> a.size
  3
  >>> a.shape
  (3,)

  Convert to Numpy array, passing through a ctypes array

  >>> b = asarray(p)
  >>> b.size
  3
  >>> b.shape
  (3,)
  >>> b[0]
  0.0
  >>> b[1]
  0.0
  >>> b[2]
  1.0

  Make a point from a Numpy array

  >>> a = asarray([1.0, 1.0, 0.0])
  >>> p = Point(*list(a))
  >>> p.wkt
  'POINT (1.0000000000000000 1.0000000000000000)'

LineString
----------

  >>> a = asarray([[0.0, 0.0], [2.0, 2.0], [1.0, 1.0]])
  >>> from shapely.geometry import LineString
  >>> line = LineString(a)
  >>> line.wkt
  'LINESTRING (0.0000000000000000 0.0000000000000000, 2.0000000000000000 2.0000000000000000, 1.0000000000000000 1.0000000000000000)'

  >>> data = line.ctypes
  >>> data[0]
  0.0
  >>> data[5]
  1.0

  >>> b = asarray(line)
  >>> b.shape
  (3, 2)
  >>> b
  array([[ 0.,  0.],
         [ 2.,  2.],
         [ 1.,  1.]])

Polygon
-------

  >>> a = asarray(((0., 0.), (0., 1.), (1., 1.), (1., 0.), (0., 0.)))
  >>> from shapely.geometry import Polygon
  >>> polygon = Polygon(a)
  >>> polygon.wkt
  'POLYGON ((0.0000000000000000 0.0000000000000000, 0.0000000000000000 1.0000000000000000, 1.0000000000000000 1.0000000000000000, 1.0000000000000000 0.0000000000000000, 0.0000000000000000 0.0000000000000000))'

  >>> b = asarray(polygon.exterior)
  >>> b.shape
  (5, 2)
  >>> b
  array([[ 0.,  0.],
         [ 0.,  1.],
         [ 1.,  1.],
         [ 1.,  0.],
         [ 0.,  0.]])

