mirror of
				https://github.com/django/django.git
				synced 2025-10-26 07:06:08 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			1097 lines
		
	
	
		
			31 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			1097 lines
		
	
	
		
			31 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| .. _ref-gdal:
 | |
| 
 | |
| ========
 | |
| GDAL API
 | |
| ========
 | |
| 
 | |
| .. module:: django.contrib.gis.gdal
 | |
|    :synopsis: GeoDjango's high-level interface to the GDAL library.
 | |
| 
 | |
| `GDAL`__ stands for **G**\ eospatial **D**\ ata **A**\ bstraction **L**\ ibrary,
 | |
| and is a veritable "swiss army knife" of GIS data functionality.  A subset
 | |
| of GDAL is the `OGR`__ Simple Features Library, which specializes
 | |
| in reading and writing vector geographic data in a variety of standard
 | |
| formats.
 | |
| 
 | |
| GeoDjango provides a high-level Python interface for some of the
 | |
| capabilities of OGR, including the reading and coordinate transformation
 | |
| of vector spatial data.
 | |
| 
 | |
| .. note::
 | |
| 
 | |
|      Although the module is named ``gdal``, GeoDjango only supports
 | |
|      some of the capabilities of OGR.  Thus, none of GDAL's features
 | |
|      with respect to raster (image) data are supported at this time.
 | |
| 
 | |
| __ http://www.gdal.org/
 | |
| __ http://www.gdal.org/ogr/
 | |
| 
 | |
| Overview
 | |
| ========
 | |
| 
 | |
| Sample Data
 | |
| -----------
 | |
| 
 | |
| The GDAL/OGR tools described here are designed to help you read in
 | |
| your geospatial data, in order for most of them to be useful you have
 | |
| to have some data to work with.  If you're starting out and don't yet
 | |
| have any data of your own to use, GeoDjango comes with a number of
 | |
| simple data sets that you can use for testing.  This snippet will
 | |
| determine where these sample files are installed on your computer::
 | |
| 
 | |
|     >>> import os
 | |
|     >>> import django.contrib.gis
 | |
|     >>> GIS_PATH = os.path.dirname(django.contrib.gis.__file__)
 | |
|     >>> CITIES_PATH = os.path.join(GIS_PATH, 'tests/data/cities/cities.shp')
 | |
| 
 | |
| Vector Data Source Objects
 | |
| ==========================
 | |
| 
 | |
| ``DataSource``
 | |
| --------------
 | |
| 
 | |
| :class:`DataSource` is a wrapper for the OGR data source object that
 | |
| supports reading data from a variety of OGR-supported geospatial file
 | |
| formats and data sources using a simple, consistent interface.  Each
 | |
| data source is represented by a :class:`DataSource` object which contains
 | |
| one or more layers of data.  Each layer, represented by a :class:`Layer`
 | |
| object, contains some number of geographic features (:class:`Feature`),
 | |
| information about the type of features contained in that layer (e.g.
 | |
| points, polygons, etc.), as well as the names and types of any
 | |
| additional fields (:class:`Field`) of data that may be associated with
 | |
| each feature in that layer.
 | |
| 
 | |
| .. class:: DataSource(ds_input)
 | |
| 
 | |
|    The constructor for ``DataSource`` just a single parameter: the path of
 | |
|    the file you want to read.  However, OGR
 | |
|    also supports a variety of more complex data sources, including
 | |
|    databases, that may be accessed by passing a special name string instead
 | |
|    of a path.  For more information, see the `OGR Vector Formats`__
 | |
|    documentation.  The :attr:`name` property of a ``DataSource``
 | |
|    instance gives the OGR name of the underlying data source that it is
 | |
|    using.
 | |
| 
 | |
|    Once you've created your ``DataSource``, you can find out how many
 | |
|    layers of data it contains by accessing the :attr:`layer_count` property,
 | |
|    or (equivalently) by using the ``len()`` function.  For information on
 | |
|    accessing the layers of data themselves, see the next section::
 | |
| 
 | |
|        >>> from django.contrib.gis.gdal import DataSource
 | |
|        >>> ds = DataSource(CITIES_PATH)
 | |
|        >>> ds.name                         # The exact filename may be different on your computer
 | |
|        '/usr/local/lib/python2.7/site-packages/django/contrib/gis/tests/data/cities/cities.shp'
 | |
|        >>> ds.layer_count                  # This file only contains one layer
 | |
|        1
 | |
| 
 | |
|    .. attribute:: layer_count
 | |
| 
 | |
|    Returns the number of layers in the data source.
 | |
| 
 | |
|    .. attribute:: name
 | |
| 
 | |
|    Returns the name of the data source.
 | |
| 
 | |
| __ http://www.gdal.org/ogr/ogr_formats.html
 | |
| 
 | |
| ``Layer``
 | |
| ---------
 | |
| 
 | |
| .. class:: Layer
 | |
| 
 | |
|    ``Layer`` is a wrapper for a layer of data in a ``DataSource`` object.
 | |
|    You never create a ``Layer`` object directly.  Instead, you retrieve
 | |
|    them from a :class:`DataSource` object, which is essentially a standard
 | |
|    Python container of ``Layer`` objects.  For example, you can access a
 | |
|    specific layer by its index (e.g. ``ds[0]`` to access the first
 | |
|    layer), or you can iterate over all the layers in the container in a
 | |
|    ``for`` loop.  The ``Layer`` itself acts as a container for geometric
 | |
|    features.
 | |
| 
 | |
|    Typically, all the features in a given layer have the same geometry type.
 | |
|    The :attr:`geom_type` property of a layer is an :class:`OGRGeomType`
 | |
|    that identifies the feature type.  We can use it to print out some basic
 | |
|    information about each layer in a :class:`DataSource`::
 | |
| 
 | |
|        >>> for layer in ds:
 | |
|        ...     print('Layer "%s": %i %ss' % (layer.name, len(layer), layer.geom_type.name))
 | |
|        ...
 | |
|        Layer "cities": 3 Points
 | |
| 
 | |
|    The example output is from the cities data source, loaded above, which
 | |
|    evidently contains one layer, called ``"cities"``, which contains three
 | |
|    point features.  For simplicity, the examples below assume that you've
 | |
|    stored that layer in the variable ``layer``::
 | |
| 
 | |
|        >>> layer = ds[0]
 | |
| 
 | |
|    .. attribute:: name
 | |
| 
 | |
|    Returns the name of this layer in the data source.
 | |
| 
 | |
|        >>> layer.name
 | |
|        'cities'
 | |
| 
 | |
|    .. attribute:: num_feat
 | |
| 
 | |
|    Returns the number of features in the layer.  Same as ``len(layer)``::
 | |
| 
 | |
|        >>> layer.num_feat
 | |
|        3
 | |
| 
 | |
|    .. attribute:: geom_type
 | |
| 
 | |
|    Returns the geometry type of the layer, as an :class:`OGRGeomType`
 | |
|    object::
 | |
| 
 | |
|        >>> layer.geom_type.name
 | |
|        'Point'
 | |
| 
 | |
|    .. attribute:: num_fields
 | |
| 
 | |
|    Returns the number of fields in the layer, i.e the number of fields of
 | |
|    data associated with each feature in the layer::
 | |
| 
 | |
|        >>> layer.num_fields
 | |
|        4
 | |
| 
 | |
|    .. attribute:: fields
 | |
| 
 | |
|    Returns a list of the names of each of the fields in this layer::
 | |
| 
 | |
|        >>> layer.fields
 | |
|        ['Name', 'Population', 'Density', 'Created']
 | |
| 
 | |
|    .. attribute field_types
 | |
| 
 | |
|    Returns a list of the data types of each of the fields in this layer.
 | |
|    These are subclasses of ``Field``, discussed below::
 | |
| 
 | |
|        >>> [ft.__name__ for ft in layer.field_types]
 | |
|        ['OFTString', 'OFTReal', 'OFTReal', 'OFTDate']
 | |
| 
 | |
|    .. attribute:: field_widths
 | |
| 
 | |
|    Returns a list of the maximum field widths for each of the fields in
 | |
|    this layer::
 | |
| 
 | |
|       >>> layer.field_widths
 | |
|       [80, 11, 24, 10]
 | |
| 
 | |
|    .. attribute:: field_precisions
 | |
| 
 | |
|    Returns a list of the numeric precisions for each of the fields in
 | |
|    this layer.  This is meaningless (and set to zero) for non-numeric
 | |
|    fields::
 | |
| 
 | |
|        >>> layer.field_precisions
 | |
|        [0, 0, 15, 0]
 | |
| 
 | |
|    .. attribute:: extent
 | |
| 
 | |
|    Returns the spatial extent of this layer, as an :class:`Envelope`
 | |
|    object::
 | |
| 
 | |
|       >>> layer.extent.tuple
 | |
|       (-104.609252, 29.763374, -95.23506, 38.971823)
 | |
| 
 | |
|    .. attribute:: srs
 | |
| 
 | |
|    Property that returns the :class:`SpatialReference` associated
 | |
|    with this layer::
 | |
| 
 | |
|        >>> print(layer.srs)
 | |
|        GEOGCS["GCS_WGS_1984",
 | |
|            DATUM["WGS_1984",
 | |
|                SPHEROID["WGS_1984",6378137,298.257223563]],
 | |
|            PRIMEM["Greenwich",0],
 | |
|            UNIT["Degree",0.017453292519943295]]
 | |
| 
 | |
|    If the :class:`Layer` has no spatial reference information associated
 | |
|    with it, ``None`` is returned.
 | |
| 
 | |
|    .. attribute:: spatial_filter
 | |
| 
 | |
|    Property that may be used to retrieve or set a spatial filter for this
 | |
|    layer.  A spatial filter can only be set with an :class:`OGRGeometry`
 | |
|    instance, a 4-tuple extent, or ``None``.  When set with something
 | |
|    other than ``None``, only features that intersect the filter will be
 | |
|    returned when iterating over the layer::
 | |
| 
 | |
|        >>> print(layer.spatial_filter)
 | |
|        None
 | |
|        >>> print(len(layer))
 | |
|        3
 | |
|        >>> [feat.get('Name') for feat in layer]
 | |
|        ['Pueblo', 'Lawrence', 'Houston']
 | |
|        >>> ks_extent = (-102.051, 36.99, -94.59, 40.00) # Extent for state of Kansas
 | |
|        >>> layer.spatial_filter = ks_extent
 | |
|        >>> len(layer)
 | |
|        1
 | |
|        >>> [feat.get('Name') for feat in layer]
 | |
|        ['Lawrence']
 | |
|        >>> layer.spatial_filter = None
 | |
|        >>> len(layer)
 | |
|        3
 | |
| 
 | |
|    .. method:: get_fields()
 | |
| 
 | |
|    A method that returns a list of the values of a given field for each
 | |
|    feature in the layer::
 | |
| 
 | |
|       >>> layer.get_fields('Name')
 | |
|       ['Pueblo', 'Lawrence', 'Houston']
 | |
| 
 | |
|    .. method:: get_geoms([geos=False])
 | |
| 
 | |
|    A method that returns a list containing the geometry of each feature
 | |
|    in the layer.  If the optional argument ``geos`` is set to ``True``
 | |
|    then the geometries are converted to :class:`~django.contrib.gis.geos.GEOSGeometry`
 | |
|    objects. Otherwise, they are returned as :class:`OGRGeometry` objects::
 | |
| 
 | |
|        >>> [pt.tuple for pt in layer.get_geoms()]
 | |
|        [(-104.609252, 38.255001), (-95.23506, 38.971823), (-95.363151, 29.763374)]
 | |
| 
 | |
|    .. method:: test_capability(capability)
 | |
| 
 | |
|    Returns a boolean indicating whether this layer supports the
 | |
|    given capability (a string).  Examples of valid capability strings
 | |
|    include: ``'RandomRead'``, ``'SequentialWrite'``, ``'RandomWrite'``,
 | |
|    ``'FastSpatialFilter'``, ``'FastFeatureCount'``, ``'FastGetExtent'``,
 | |
|    ``'CreateField'``, ``'Transactions'``, ``'DeleteFeature'``, and
 | |
|    ``'FastSetNextByIndex'``.
 | |
| 
 | |
| ``Feature``
 | |
| -----------
 | |
| 
 | |
| .. class:: Feature
 | |
| 
 | |
| 
 | |
|    ``Feature`` wraps an OGR feature.  You never create a ``Feature``
 | |
|    object directly.  Instead, you retrieve them from a :class:`Layer` object.
 | |
|    Each feature consists of a geometry and a set of fields containing
 | |
|    additional properties.  The geometry of a field is accessible via its
 | |
|    ``geom`` property, which returns an :class:`OGRGeometry` object.  A ``Feature``
 | |
|    behaves like a standard Python container for its fields, which it returns as
 | |
|    :class:`Field` objects: you can access a field directly by its index or name,
 | |
|    or you can iterate over a feature's fields, e.g. in a ``for`` loop.
 | |
| 
 | |
|    .. attribute:: geom
 | |
| 
 | |
|    Returns the geometry for this feature, as an ``OGRGeometry`` object::
 | |
| 
 | |
|        >>> city.geom.tuple
 | |
|        (-104.609252, 38.255001)
 | |
| 
 | |
|    .. attribute:: get
 | |
| 
 | |
|    A method that returns the value of the given field (specified by name)
 | |
|    for this feature, **not** a ``Field`` wrapper object::
 | |
| 
 | |
|        >>> city.get('Population')
 | |
|        102121
 | |
| 
 | |
|    .. attribute:: geom_type
 | |
| 
 | |
|    Returns the type of geometry for this feature, as an :class:`OGRGeomType`
 | |
|    object.  This will be the same for all features in a given layer, and
 | |
|    is equivalent to the :attr:`Layer.geom_type` property of the
 | |
|    :class:`Layer` object the feature came from.
 | |
| 
 | |
|    .. attribute:: num_fields
 | |
| 
 | |
|    Returns the number of fields of data associated with the feature.
 | |
|    This will be the same for all features in a given layer, and is
 | |
|    equivalent to the :attr:`Layer.num_fields` property of the
 | |
|    :class:`Layer` object the feature came from.
 | |
| 
 | |
|    .. attribute:: fields
 | |
| 
 | |
|    Returns a list of the names of the fields of data associated with the
 | |
|    feature.  This will be the same for all features in a given layer, and
 | |
|    is equivalent to the :attr:`Layer.fields` property of the :class:`Layer`
 | |
|    object the feature came from.
 | |
| 
 | |
|    .. attribute:: fid
 | |
| 
 | |
|    Returns the feature identifier within the layer::
 | |
| 
 | |
|        >>> city.fid
 | |
|        0
 | |
| 
 | |
|    .. attribute:: layer_name
 | |
| 
 | |
|    Returns the name of the :class:`Layer` that the feature came from.
 | |
|    This will be the same for all features in a given layer::
 | |
| 
 | |
|        >>> city.layer_name
 | |
|        'cities'
 | |
| 
 | |
|    .. attribute:: index
 | |
| 
 | |
|    A method that returns the index of the given field name.  This will be
 | |
|    the same for all features in a given layer::
 | |
| 
 | |
|        >>> city.index('Population')
 | |
|        1
 | |
| 
 | |
| ``Field``
 | |
| ---------
 | |
| 
 | |
| .. class:: Field
 | |
| 
 | |
|    .. attribute:: name
 | |
| 
 | |
|    Returns the name of this field::
 | |
| 
 | |
|        >>> city['Name'].name
 | |
|        'Name'
 | |
| 
 | |
|    .. attribute:: type
 | |
| 
 | |
|    Returns the OGR type of this field, as an integer.  The
 | |
|    ``FIELD_CLASSES`` dictionary maps these values onto
 | |
|    subclasses of ``Field``::
 | |
| 
 | |
|        >>> city['Density'].type
 | |
|        2
 | |
| 
 | |
|    .. attribute:: type_name
 | |
| 
 | |
|    Returns a string with the name of the data type of this field::
 | |
| 
 | |
|        >>> city['Name'].type_name
 | |
|        'String'
 | |
| 
 | |
|    .. attribute:: value
 | |
| 
 | |
|    Returns the value of this field.  The ``Field`` class itself
 | |
|    returns the value as a string, but each subclass returns the
 | |
|    value in the most appropriate form::
 | |
| 
 | |
|        >>> city['Population'].value
 | |
|        102121
 | |
| 
 | |
|    .. attribute:: width
 | |
| 
 | |
|    Returns the width of this field::
 | |
| 
 | |
|        >>> city['Name'].width
 | |
|        80
 | |
| 
 | |
|    .. attribute:: precision
 | |
| 
 | |
|    Returns the numeric precision of this field.  This is meaningless (and
 | |
|    set to zero) for non-numeric fields::
 | |
| 
 | |
|        >>> city['Density'].precision
 | |
|        15
 | |
| 
 | |
|    .. method:: as_double()
 | |
| 
 | |
|    Returns the value of the field as a double (float)::
 | |
| 
 | |
|        >>> city['Density'].as_double()
 | |
|        874.7
 | |
| 
 | |
|    .. method:: as_int()
 | |
| 
 | |
|    Returns the value of the field as an integer::
 | |
| 
 | |
|        >>> city['Population'].as_int()
 | |
|        102121
 | |
| 
 | |
|    .. method:: as_string()
 | |
| 
 | |
|    Returns the value of the field as a string::
 | |
| 
 | |
|        >>> city['Name'].as_string()
 | |
|        'Pueblo'
 | |
| 
 | |
|    .. method:: as_datetime()
 | |
| 
 | |
|    Returns the value of the field as a tuple of date and time components::
 | |
| 
 | |
|        >>> city['Created'].as_datetime()
 | |
|        (c_long(1999), c_long(5), c_long(23), c_long(0), c_long(0), c_long(0), c_long(0))
 | |
| 
 | |
| ``Driver``
 | |
| ----------
 | |
| 
 | |
| .. class:: Driver(dr_input)
 | |
| 
 | |
|    The ``Driver`` class is used internally to wrap an OGR :class:`DataSource` driver.
 | |
| 
 | |
|    .. attribute:: driver_count
 | |
| 
 | |
|    Returns the number of OGR vector drivers currently registered.
 | |
| 
 | |
| 
 | |
| OGR Geometries
 | |
| ==============
 | |
| 
 | |
| ``OGRGeometry``
 | |
| ---------------
 | |
| 
 | |
| :class:`OGRGeometry` objects share similar functionality with
 | |
| :class:`~django.contrib.gis.geos.GEOSGeometry` objects, and are thin
 | |
| wrappers around OGR's internal geometry representation.  Thus,
 | |
| they allow for more efficient access to data when using :class:`DataSource`.
 | |
| Unlike its GEOS counterpart, :class:`OGRGeometry` supports spatial reference
 | |
| systems and coordinate transformation::
 | |
| 
 | |
|     >>> from django.contrib.gis.gdal import OGRGeometry
 | |
|     >>> polygon = OGRGeometry('POLYGON((0 0, 5 0, 5 5, 0 5))')
 | |
| 
 | |
| .. class:: OGRGeometry(geom_input[, srs=None])
 | |
| 
 | |
|    This object is a wrapper for the `OGR Geometry`__ class.
 | |
|    These objects are instantiated directly from the given ``geom_input``
 | |
|    parameter, which may be a string containing WKT, HEX, GeoJSON, a ``buffer``
 | |
|    containing WKB data, or an :class:`OGRGeomType` object. These objects
 | |
|    are also returned from the :class:`Feature.geom` attribute, when
 | |
|    reading vector data from :class:`Layer` (which is in turn a part of
 | |
|    a :class:`DataSource`).
 | |
| 
 | |
|    __ http://www.gdal.org/ogr/classOGRGeometry.html
 | |
| 
 | |
|    .. classmethod:: from_bbox(bbox)
 | |
| 
 | |
|    Constructs a :class:`Polygon` from the given bounding-box (a 4-tuple).
 | |
| 
 | |
|    .. method:: __len__()
 | |
| 
 | |
|    Returns the number of points in a :class:`LineString`, the
 | |
|    number of rings in a :class:`Polygon`, or the number of geometries in a
 | |
|    :class:`GeometryCollection`. Not applicable to other geometry types.
 | |
| 
 | |
|    .. method:: __iter__()
 | |
| 
 | |
|    Iterates over the points in a :class:`LineString`, the rings in a
 | |
|    :class:`Polygon`, or the geometries in a :class:`GeometryCollection`.
 | |
|    Not applicable to other geometry types.
 | |
| 
 | |
|    .. method:: __getitem__()
 | |
| 
 | |
|    Returns the point at the specified index for a :class:`LineString`, the
 | |
|    interior ring at the specified index for a :class:`Polygon`, or the geometry
 | |
|    at the specified index in a :class:`GeometryCollection`.  Not applicable to
 | |
|    other geometry types.
 | |
| 
 | |
|    .. attribute:: dimension
 | |
| 
 | |
|    Returns the number of coordinated dimensions of the geometry, i.e. 0
 | |
|    for points, 1 for lines, and so forth::
 | |
| 
 | |
|        >> polygon.dimension
 | |
|        2
 | |
| 
 | |
|    .. attribute:: coord_dim
 | |
| 
 | |
|    Returns or sets the coordinate dimension of this geometry.  For
 | |
|    example, the value would be 2 for two-dimensional geometries.
 | |
| 
 | |
|    .. attribute:: geom_count
 | |
| 
 | |
|    Returns the number of elements in this geometry::
 | |
| 
 | |
|        >>> polygon.geom_count
 | |
|        1
 | |
| 
 | |
|    .. attribute:: point_count
 | |
| 
 | |
|    Returns the number of points used to describe this geometry::
 | |
| 
 | |
|       >>> polygon.point_count
 | |
|       4
 | |
| 
 | |
|    .. attribute:: num_points
 | |
| 
 | |
|    Alias for :attr:`point_count`.
 | |
| 
 | |
|    .. attribute:: num_coords
 | |
| 
 | |
|    Alias for :attr:`point_count`.
 | |
| 
 | |
|    .. attribute:: geom_type
 | |
| 
 | |
|    Returns the type of this geometry, as an :class:`OGRGeomType` object.
 | |
| 
 | |
|    .. attribute:: geom_name
 | |
| 
 | |
|    Returns the name of the type of this geometry::
 | |
| 
 | |
|        >>> polygon.geom_name
 | |
|        'POLYGON'
 | |
| 
 | |
|    .. attribute:: area
 | |
| 
 | |
|    Returns the area of this geometry, or 0 for geometries that do not
 | |
|    contain an area::
 | |
| 
 | |
|        >>> polygon.area
 | |
|        25.0
 | |
| 
 | |
|    .. attribute:: envelope
 | |
| 
 | |
|    Returns the envelope of this geometry, as an :class:`Envelope` object.
 | |
| 
 | |
|    .. attribute:: extent
 | |
| 
 | |
|    Returns the envelope of this geometry as a 4-tuple, instead of as an
 | |
|    :class:`Envelope` object::
 | |
| 
 | |
|        >>> point.extent
 | |
|        (0.0, 0.0, 5.0, 5.0)
 | |
| 
 | |
|    .. attribute:: srs
 | |
| 
 | |
|    This property controls the spatial reference for this geometry, or
 | |
|    ``None`` if no spatial reference system has been assigned to it.
 | |
|    If assigned, accessing this property returns a :class:`SpatialReference`
 | |
|    object.  It may be set with another :class:`SpatialReference` object,
 | |
|    or any input that :class:`SpatialReference` accepts. Example::
 | |
| 
 | |
|        >>> city.geom.srs.name
 | |
|        'GCS_WGS_1984'
 | |
| 
 | |
|    .. attribute:: srid
 | |
| 
 | |
|    Returns or sets the spatial reference identifier corresponding to
 | |
|    :class:`SpatialReference` of this geometry.  Returns ``None`` if
 | |
|    there is no spatial reference information associated with this
 | |
|    geometry, or if an SRID cannot be determined.
 | |
| 
 | |
|    .. attribute:: geos
 | |
| 
 | |
|    Returns a :class:`~django.contrib.gis.geos.GEOSGeometry` object
 | |
|    corresponding to this geometry.
 | |
| 
 | |
|    .. attribute:: gml
 | |
| 
 | |
|    Returns a string representation of this geometry in GML format::
 | |
| 
 | |
|        >>> OGRGeometry('POINT(1 2)').gml
 | |
|        '<gml:Point><gml:coordinates>1,2</gml:coordinates></gml:Point>'
 | |
| 
 | |
|    .. attribute:: hex
 | |
| 
 | |
|    Returns a string representation of this geometry in HEX WKB format::
 | |
| 
 | |
|        >>> OGRGeometry('POINT(1 2)').hex
 | |
|        '0101000000000000000000F03F0000000000000040'
 | |
| 
 | |
|    .. attribute:: json
 | |
| 
 | |
|    Returns a string representation of this geometry in JSON format::
 | |
| 
 | |
|        >>> OGRGeometry('POINT(1 2)').json
 | |
|        '{ "type": "Point", "coordinates": [ 1.000000, 2.000000 ] }'
 | |
| 
 | |
| 
 | |
|    .. attribute:: kml
 | |
| 
 | |
|    Returns a string representation of this geometry in KML format.
 | |
| 
 | |
|    .. attribute:: wkb_size
 | |
| 
 | |
|    Returns the size of the WKB buffer needed to hold a WKB representation
 | |
|    of this geometry::
 | |
| 
 | |
|        >>> OGRGeometry('POINT(1 2)').wkb_size
 | |
|        21
 | |
| 
 | |
|    .. attribute:: wkb
 | |
| 
 | |
|    Returns a ``buffer`` containing a WKB representation of this geometry.
 | |
| 
 | |
|    .. attribute:: wkt
 | |
| 
 | |
|    Returns a string representation of this geometry in WKT format.
 | |
| 
 | |
|    .. attribute:: ewkt
 | |
| 
 | |
|    Returns the EWKT representation of this geometry.
 | |
| 
 | |
|    .. method:: clone()
 | |
| 
 | |
|    Returns a new :class:`OGRGeometry` clone of this geometry object.
 | |
| 
 | |
|    .. method:: close_rings()
 | |
| 
 | |
|    If there are any rings within this geometry that have not been closed,
 | |
|    this routine will do so by adding the starting point to the end::
 | |
| 
 | |
|        >>> triangle = OGRGeometry('LINEARRING (0 0,0 1,1 0)')
 | |
|        >>> triangle.close_rings()
 | |
|        >>> triangle.wkt
 | |
|        'LINEARRING (0 0,0 1,1 0,0 0)'
 | |
| 
 | |
|    .. method:: transform(coord_trans, clone=False)
 | |
| 
 | |
|    Transforms this geometry to a different spatial reference system.  May
 | |
|    take a :class:`CoordTransform` object, a :class:`SpatialReference` object,
 | |
|    or any other input accepted by :class:`SpatialReference` (including
 | |
|    spatial reference WKT and PROJ.4 strings, or an integer SRID).
 | |
|    By default nothing is returned and the geometry is transformed in-place.
 | |
|    However, if the ``clone`` keyword is set to ``True`` then a transformed
 | |
|    clone of this geometry is returned instead.
 | |
| 
 | |
|    .. method:: intersects(other)
 | |
| 
 | |
|    Returns ``True`` if this geometry intersects the other, otherwise returns
 | |
|    ``False``.
 | |
| 
 | |
|    .. method:: equals(other)
 | |
| 
 | |
|    Returns ``True`` if this geometry is equivalent to the other, otherwise returns
 | |
|    ``False``.
 | |
| 
 | |
|    .. method:: disjoint(other)
 | |
| 
 | |
|    Returns ``True`` if this geometry is spatially disjoint to (i.e. does
 | |
|    not intersect) the other, otherwise returns ``False``.
 | |
| 
 | |
|    .. method:: touches(other)
 | |
| 
 | |
|    Returns ``True`` if this geometry touches the other, otherwise returns
 | |
|    ``False``.
 | |
| 
 | |
|    .. method:: crosses(other)
 | |
| 
 | |
|    Returns ``True`` if this geometry crosses the other, otherwise returns
 | |
|    ``False``.
 | |
| 
 | |
|    .. method:: within(other)
 | |
| 
 | |
|    Returns ``True`` if this geometry is contained within the other, otherwise returns
 | |
|    ``False``.
 | |
| 
 | |
|    .. method:: contains(other)
 | |
| 
 | |
|    Returns ``True`` if this geometry contains the other, otherwise returns
 | |
|    ``False``.
 | |
| 
 | |
|    .. method:: overlaps(other)
 | |
| 
 | |
|    Returns ``True`` if this geometry overlaps the other, otherwise returns
 | |
|    ``False``.
 | |
| 
 | |
|    .. method:: boundary()
 | |
| 
 | |
|    The boundary of this geometry, as a new :class:`OGRGeometry` object.
 | |
| 
 | |
|    .. attribute:: convex_hull
 | |
| 
 | |
|    The smallest convex polygon that contains this geometry, as a new
 | |
|    :class:`OGRGeometry` object.
 | |
| 
 | |
|    .. method:: difference()
 | |
| 
 | |
|    Returns the region consisting of the difference of this geometry and
 | |
|    the other, as a new :class:`OGRGeometry` object.
 | |
| 
 | |
|    .. method:: intersection()
 | |
| 
 | |
|    Returns the region consisting of the intersection of this geometry and
 | |
|    the other, as a new :class:`OGRGeometry` object.
 | |
| 
 | |
|    .. method:: sym_difference()
 | |
| 
 | |
|    Returns the region consisting of the symmetric difference of this
 | |
|    geometry and the other, as a new :class:`OGRGeometry` object.
 | |
| 
 | |
|    .. method:: union()
 | |
| 
 | |
|    Returns the region consisting of the union of this geometry and
 | |
|    the other, as a new :class:`OGRGeometry` object.
 | |
| 
 | |
|    .. attribute:: tuple
 | |
| 
 | |
|    Returns the coordinates of a point geometry as a tuple, the
 | |
|    coordinates of a line geometry as a tuple of tuples, and so forth::
 | |
| 
 | |
|        >>> OGRGeometry('POINT (1 2)').tuple
 | |
|        (1.0, 2.0)
 | |
|        >>> OGRGeometry('LINESTRING (1 2,3 4)').tuple
 | |
|        ((1.0, 2.0), (3.0, 4.0))
 | |
| 
 | |
|    .. attribute:: coords
 | |
| 
 | |
|    An alias for :attr:`tuple`.
 | |
| 
 | |
| .. class:: Point
 | |
| 
 | |
|    .. attribute:: x
 | |
| 
 | |
|    Returns the X coordinate of this point::
 | |
| 
 | |
|        >>> OGRGeometry('POINT (1 2)').x
 | |
|        1.0
 | |
| 
 | |
|    .. attribute:: y
 | |
| 
 | |
|    Returns the Y coordinate of this point::
 | |
| 
 | |
|        >>> OGRGeometry('POINT (1 2)').y
 | |
|        2.0
 | |
| 
 | |
|    .. attribute:: z
 | |
| 
 | |
|    Returns the Z coordinate of this point, or ``None`` if the
 | |
|    the point does not have a Z coordinate::
 | |
| 
 | |
|        >>> OGRGeometry('POINT (1 2 3)').z
 | |
|        3.0
 | |
| 
 | |
| .. class:: LineString
 | |
| 
 | |
|    .. attribute:: x
 | |
| 
 | |
|    Returns a list of X coordinates in this line::
 | |
| 
 | |
|        >>> OGRGeometry('LINESTRING (1 2,3 4)').x
 | |
|        [1.0, 3.0]
 | |
| 
 | |
|    .. attribute:: y
 | |
| 
 | |
|    Returns a list of Y coordinates in this line::
 | |
| 
 | |
|        >>> OGRGeometry('LINESTRING (1 2,3 4)').y
 | |
|        [2.0, 4.0]
 | |
| 
 | |
|    .. attribute:: z
 | |
| 
 | |
|    Returns a list of Z coordinates in this line, or ``None`` if the
 | |
|    line does not have Z coordinates::
 | |
| 
 | |
|        >>> OGRGeometry('LINESTRING (1 2 3,4 5 6)').z
 | |
|        [3.0, 6.0]
 | |
| 
 | |
| 
 | |
| .. class:: Polygon
 | |
| 
 | |
|    .. attribute:: shell
 | |
| 
 | |
|    Returns the shell or exterior ring of this polygon, as a ``LinearRing``
 | |
|    geometry.
 | |
| 
 | |
|    .. attribute:: exterior_ring
 | |
| 
 | |
|    An alias for :attr:`shell`.
 | |
| 
 | |
|    .. attribute:: centroid
 | |
| 
 | |
|    Returns a :class:`Point` representing the centroid of this polygon.
 | |
| 
 | |
| .. class:: GeometryCollection
 | |
| 
 | |
|    .. method:: add(geom)
 | |
| 
 | |
|    Adds a geometry to this geometry collection.  Not applicable to other
 | |
|    geometry types.
 | |
| 
 | |
| 
 | |
| ``OGRGeomType``
 | |
| ---------------
 | |
| 
 | |
| .. class:: OGRGeomType(type_input)
 | |
| 
 | |
|    This class allows for the representation of an OGR geometry type
 | |
|    in any of several ways::
 | |
| 
 | |
|        >>> from django.contrib.gis.gdal import OGRGeomType
 | |
|        >>> gt1 = OGRGeomType(3)             # Using an integer for the type
 | |
|        >>> gt2 = OGRGeomType('Polygon')     # Using a string
 | |
|        >>> gt3 = OGRGeomType('POLYGON')     # It's case-insensitive
 | |
|        >>> print(gt1 == 3, gt1 == 'Polygon') # Equivalence works w/non-OGRGeomType objects
 | |
|        True True
 | |
| 
 | |
|    .. attribute:: name
 | |
| 
 | |
|    Returns a short-hand string form of the OGR Geometry type::
 | |
| 
 | |
|        >>> gt1.name
 | |
|        'Polygon'
 | |
| 
 | |
|    .. attribute:: num
 | |
| 
 | |
|    Returns the number corresponding to the OGR geometry type::
 | |
| 
 | |
|        >>> gt1.num
 | |
|        3
 | |
| 
 | |
|    .. attribute:: django
 | |
| 
 | |
|    Returns the Django field type (a subclass of GeometryField) to use for
 | |
|    storing this OGR type, or ``None`` if there is no appropriate Django
 | |
|    type::
 | |
| 
 | |
|        >>> gt1.django
 | |
|        'PolygonField'
 | |
| 
 | |
| ``Envelope``
 | |
| ------------
 | |
| 
 | |
| .. class:: Envelope(*args)
 | |
| 
 | |
|    Represents an OGR Envelope structure that contains the
 | |
|    minimum and maximum X, Y coordinates for a rectangle bounding box.
 | |
|    The naming of the variables is compatible with the OGR Envelope
 | |
|    C structure.
 | |
| 
 | |
|    .. attribute:: min_x
 | |
| 
 | |
|    The value of the minimum X coordinate.
 | |
| 
 | |
|    .. attribute:: min_y
 | |
| 
 | |
|    The value of the maximum X coordinate.
 | |
| 
 | |
|    .. attribute:: max_x
 | |
| 
 | |
|    The value of the minimum Y coordinate.
 | |
| 
 | |
|    .. attribute:: max_y
 | |
| 
 | |
|    The value of the maximum Y coordinate.
 | |
| 
 | |
|    .. attribute:: ur
 | |
| 
 | |
|    The upper-right coordinate, as a tuple.
 | |
| 
 | |
|    .. attribute:: ll
 | |
| 
 | |
|    The lower-left coordinate, as a tuple.
 | |
| 
 | |
|    .. attribute:: tuple
 | |
| 
 | |
|    A tuple representing the envelope.
 | |
| 
 | |
|    .. attribute:: wkt
 | |
| 
 | |
|    A string representing this envelope as a polygon in WKT format.
 | |
| 
 | |
| 
 | |
|    .. method:: expand_to_include(*args)
 | |
| 
 | |
| Coordinate System Objects
 | |
| =========================
 | |
| 
 | |
| ``SpatialReference``
 | |
| --------------------
 | |
| 
 | |
| .. class:: SpatialReference(srs_input)
 | |
| 
 | |
|    Spatial reference objects are initialized on the given ``srs_input``,
 | |
|    which may be one of the following:
 | |
| 
 | |
|    * OGC Well Known Text (WKT) (a string)
 | |
|    * EPSG code (integer or string)
 | |
|    * PROJ.4 string
 | |
|    * A shorthand string for well-known standards (``'WGS84'``, ``'WGS72'``, ``'NAD27'``, ``'NAD83'``)
 | |
| 
 | |
|    Example::
 | |
| 
 | |
|        >>> wgs84 = SpatialReference('WGS84') # shorthand string
 | |
|        >>> wgs84 = SpatialReference(4326) # EPSG code
 | |
|        >>> wgs84 = SpatialReference('EPSG:4326') # EPSG string
 | |
|        >>> proj4 = '+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs '
 | |
|        >>> wgs84 = SpatialReference(proj4) # PROJ.4 string
 | |
|        >>> wgs84 = SpatialReference("""GEOGCS["WGS 84",
 | |
|        DATUM["WGS_1984",
 | |
|             SPHEROID["WGS 84",6378137,298.257223563,
 | |
|                 AUTHORITY["EPSG","7030"]],
 | |
|             AUTHORITY["EPSG","6326"]],
 | |
|         PRIMEM["Greenwich",0,
 | |
|             AUTHORITY["EPSG","8901"]],
 | |
|         UNIT["degree",0.01745329251994328,
 | |
|             AUTHORITY["EPSG","9122"]],
 | |
|         AUTHORITY["EPSG","4326"]]""") # OGC WKT
 | |
| 
 | |
|    .. method:: __getitem__(target)
 | |
| 
 | |
|    Returns the value of the given string attribute node, ``None`` if the node
 | |
|    doesn't exist.  Can also take a tuple as a parameter, (target, child),
 | |
|    where child is the index of the attribute in the WKT.  For example::
 | |
| 
 | |
|        >>> wkt = 'GEOGCS["WGS 84", DATUM["WGS_1984, ... AUTHORITY["EPSG","4326"]]')
 | |
|        >>> srs = SpatialReference(wkt) # could also use 'WGS84', or 4326
 | |
|        >>> print(srs['GEOGCS'])
 | |
|        WGS 84
 | |
|        >>> print(srs['DATUM'])
 | |
|        WGS_1984
 | |
|        >>> print(srs['AUTHORITY'])
 | |
|        EPSG
 | |
|        >>> print(srs['AUTHORITY', 1]) # The authority value
 | |
|        4326
 | |
|        >>> print(srs['TOWGS84', 4]) # the fourth value in this wkt
 | |
|        0
 | |
|        >>> print(srs['UNIT|AUTHORITY']) # For the units authority, have to use the pipe symbol.
 | |
|        EPSG
 | |
|        >>> print(srs['UNIT|AUTHORITY', 1]) # The authority value for the units
 | |
|        9122
 | |
| 
 | |
|    .. method:: attr_value(target, index=0)
 | |
| 
 | |
|    The attribute value for the given target node (e.g. ``'PROJCS'``).
 | |
|    The index keyword specifies an index of the child node to return.
 | |
| 
 | |
|    .. method:: auth_name(target)
 | |
| 
 | |
|    Returns the authority name for the given string target node.
 | |
| 
 | |
|    .. method:: auth_code(target)
 | |
| 
 | |
|    Returns the authority code for the given string target node.
 | |
| 
 | |
|    .. method:: clone()
 | |
| 
 | |
|    Returns a clone of this spatial reference object.
 | |
| 
 | |
|    .. method:: identify_epsg()
 | |
| 
 | |
|    This method inspects the WKT of this SpatialReference, and will
 | |
|    add EPSG authority nodes where an EPSG identifier is applicable.
 | |
| 
 | |
|    .. method:: from_esri()
 | |
| 
 | |
|    Morphs this SpatialReference from ESRI's format to EPSG
 | |
| 
 | |
|    .. method:: to_esri()
 | |
| 
 | |
|    Morphs this SpatialReference to ESRI's format.
 | |
| 
 | |
|    .. method:: validate()
 | |
| 
 | |
|    Checks to see if the given spatial reference is valid, if not
 | |
|    an exception will be raised.
 | |
| 
 | |
|    .. method:: import_epsg(epsg)
 | |
| 
 | |
|    Import spatial reference from EPSG code.
 | |
| 
 | |
|    .. method:: import_proj(proj)
 | |
| 
 | |
|    Import spatial reference from PROJ.4 string.
 | |
| 
 | |
|    .. method:: import_user_input(user_input)
 | |
| 
 | |
|    .. method:: import_wkt(wkt)
 | |
| 
 | |
|    Import spatial reference from WKT.
 | |
| 
 | |
|    .. method:: import_xml(xml)
 | |
| 
 | |
|    Import spatial reference from XML.
 | |
| 
 | |
|    .. attribute:: name
 | |
| 
 | |
|    Returns the name of this Spatial Reference.
 | |
| 
 | |
|    .. attribute:: srid
 | |
| 
 | |
|    Returns the SRID of top-level authority, or ``None`` if undefined.
 | |
| 
 | |
|    .. attribute:: linear_name
 | |
| 
 | |
|    Returns the name of the linear units.
 | |
| 
 | |
|    .. attribute:: linear_units
 | |
| 
 | |
|    Returns the value of the linear units.
 | |
| 
 | |
|    .. attribute:: angular_name
 | |
| 
 | |
|    Returns the name of the angular units."
 | |
| 
 | |
|    .. attribute:: angular_units
 | |
| 
 | |
|    Returns the value of the angular units.
 | |
| 
 | |
|    .. attribute:: units
 | |
| 
 | |
|    Returns a 2-tuple of the units value and the units name,
 | |
|    and will automatically determines whether to return the linear
 | |
|    or angular units.
 | |
| 
 | |
|    .. attribute:: ellisoid
 | |
| 
 | |
|    Returns a tuple of the ellipsoid parameters for this spatial
 | |
|    reference: (semimajor axis, semiminor axis, and inverse flattening)
 | |
| 
 | |
|    .. attribute:: semi_major
 | |
| 
 | |
|    Returns the semi major axis of the ellipsoid for this spatial reference.
 | |
| 
 | |
|    .. attribute:: semi_minor
 | |
| 
 | |
|    Returns the semi minor axis of the ellipsoid for this spatial reference.
 | |
| 
 | |
|    .. attribute:: inverse_flattening
 | |
| 
 | |
|    Returns the inverse flattening of the ellipsoid for this spatial reference.
 | |
| 
 | |
|    .. attribute:: geographic
 | |
| 
 | |
|    Returns ``True`` if this spatial reference is geographic
 | |
|    (root node is ``GEOGCS``).
 | |
| 
 | |
|    .. attribute:: local
 | |
| 
 | |
|    Returns ``True`` if this spatial reference is local
 | |
|    (root node is ``LOCAL_CS``).
 | |
| 
 | |
|    .. attribute:: projected
 | |
| 
 | |
|    Returns ``True`` if this spatial reference is a projected coordinate
 | |
|    system (root node is ``PROJCS``).
 | |
| 
 | |
|    .. attribute:: wkt
 | |
| 
 | |
|    Returns the WKT representation of this spatial reference.
 | |
| 
 | |
|    .. attribute:: pretty_wkt
 | |
| 
 | |
|    Returns the 'pretty' representation of the WKT.
 | |
| 
 | |
|    .. attribute:: proj
 | |
| 
 | |
|    Returns the PROJ.4 representation for this spatial reference.
 | |
| 
 | |
|    .. attribute:: proj4
 | |
| 
 | |
|    Alias for :attr:`SpatialReference.proj`.
 | |
| 
 | |
|    .. attribute:: xml
 | |
| 
 | |
|    Returns the XML representation of this spatial reference.
 | |
| 
 | |
| 
 | |
| ``CoordTransform``
 | |
| ------------------
 | |
| 
 | |
| .. class:: CoordTransform(source, target)
 | |
| 
 | |
| Represents a coordinate system transform.  It is initialized with two
 | |
| :class:`SpatialReference`, representing the source and target coordinate
 | |
| systems, respectively.  These objects should be used when performing
 | |
| the same coordinate transformation repeatedly on different geometries::
 | |
| 
 | |
|     >>> ct = CoordTransform(SpatialReference('WGS84'), SpatialReference('NAD83'))
 | |
|     >>> for feat in layer:
 | |
|     ...     geom = feat.geom # getting clone of feature geometry
 | |
|     ...     geom.transform(ct) # transforming
 | |
| 
 | |
| Settings
 | |
| ========
 | |
| 
 | |
| .. setting:: GDAL_LIBRARY_PATH
 | |
| 
 | |
| GDAL_LIBRARY_PATH
 | |
| -----------------
 | |
| 
 | |
| A string specifying the location of the GDAL library.  Typically,
 | |
| this setting is only used if the GDAL library is in a non-standard
 | |
| location (e.g., ``/home/john/lib/libgdal.so``).
 |