Summary
-------

Add types and functions to work with geometric attributes that are stored in a
Postgis database (that is a PostgreSQL database with Postgis extension
enabled).

The present cube supports only version *2.0 and later* of Postgis.

It introduces one new type when defining attributes in the data model schema:

* a ``Geometry`` type. Additionally, you should give the following elements
  along with a `Geometry` attribute:

  * ``geom_type``. The Postgis type of geometries that this attribute will
    accept, for example ``POINT``, ``MULTILINESTRING`` or ``POLYGON``,

  * ``srid``. The spatial reference system the geometry coordinates will live
    in. This is an integer and a foreign key that must match the ``srid`` key
in the ``spatial_ref_sys`` table. Most of the time, it will be the same as the
spatial system EPSG code,

  * ``coord_dimension``. The number of dimensions used by geometries. Defaults
    to 2.

Then you can also use geometric functions like ``ST_INTERSECTS``, ``ST_WITHIN``
or ``ST_UNION`` to work with this new type.

See `Postgis manual`_ for reference documentation about Postgis.

.. _Postgis manual: http://postgis.net/docs/manual-2.0/ 


Example
-------

In ``schema.py``, one can declare a ``City`` entity like the following.

.. code-block:: python

    class City(EntityType):
        name = String(required=True)
        geometry = Geometry(geom_type='POLYGON', srid=4326)
