django/docs/ref/contrib/gis/feeds.txt

96 lines
2.6 KiB
Plaintext

================
Geographic Feeds
================
.. module:: django.contrib.gis.feeds
:synopsis: GeoDjango's framework for generating spatial feeds.
GeoDjango has its own :class:`Feed` subclass that may embed location information
in RSS/Atom feeds formatted according to either the `Simple GeoRSS`__ or
`W3C Geo`_ standards. Because GeoDjango's syndication API is a superset of
Django's, please consult :doc:`Django's syndication documentation
</ref/contrib/syndication>` for details on general usage.
.. _W3C Geo: https://www.w3.org/2003/01/geo/
__ http://georss.org/simple.html
Example
=======
API Reference
=============
``Feed`` Subclass
-----------------
.. class:: Feed
In addition to methods provided by the
:class:`django.contrib.syndication.views.Feed` base class, GeoDjango's
``Feed`` class provides the following overrides. Note that these overrides
may be done in multiple ways::
from django.contrib.gis.feeds import Feed
class MyFeed(Feed):
# First, as a class attribute.
geometry = ...
item_geometry = ...
# Also a function with no arguments
def geometry(self):
...
def item_geometry(self):
...
# And as a function with a single argument
def geometry(self, obj):
...
def item_geometry(self, item):
...
.. method:: geometry(obj)
Takes the object returned by ``get_object()`` and returns the *feed's*
geometry. Typically this is a ``GEOSGeometry`` instance, or can be a tuple
to represent a point or a box. For example::
class ZipcodeFeed(Feed):
def geometry(self, obj):
# Can also return: `obj.poly`, and `obj.poly.centroid`.
return obj.poly.extent # tuple like: (X0, Y0, X1, Y1).
.. method:: item_geometry(item)
Set this to return the geometry for each *item* in the feed. This can be a
``GEOSGeometry`` instance, or a tuple that represents a point coordinate or
bounding box. For example::
class ZipcodeFeed(Feed):
def item_geometry(self, obj):
# Returns the polygon.
return obj.poly
``SyndicationFeed`` Subclasses
------------------------------
The following :class:`django.utils.feedgenerator.SyndicationFeed` subclasses
are available:
.. class:: GeoRSSFeed
.. class:: GeoAtom1Feed
.. class:: W3CGeoFeed
.. note::
`W3C Geo`_ formatted feeds only support
:class:`~django.contrib.gis.db.models.PointField` geometries.