地理 Feed

GeoDjango 拥有自己的 Feed 子类,可以根据 Simple GeoRSSW3C Geo 标准格式化的 RSS/Atom 源中嵌入位置信息。由于 GeoDjango 的聚合 API 是 Django 的超集,请查阅 Django的聚合文档 以获取一般使用的详细信息。

例如

API 参考

Feed 子类

class Feed

除了 django.contrib.syndication.views.Feed 基类提供的方法之外,GeoDjango 的 Feed 类还提供了以下覆盖方法。请注意,可以以多种方式进行这些覆盖操作:

  1. from django.contrib.gis.feeds import Feed
  2. class MyFeed(Feed):
  3. # First, as a class attribute.
  4. geometry = ...
  5. item_geometry = ...
  6. # Also a function with no arguments
  7. def geometry(self):
  8. ...
  9. def item_geometry(self):
  10. ...
  11. # And as a function with a single argument
  12. def geometry(self, obj):
  13. ...
  14. def item_geometry(self, item):
  15. ...
  • geometry(obj)

使用 get_object() 返回的对象,并返回 feed 的几何形状。通常情况下,这是一个 GEOSGeometry 实例,或者可以是一个表示点或矩形框的元组。例如:

  1. class ZipcodeFeed(Feed):
  2. def geometry(self, obj):
  3. # Can also return: `obj.poly`, and `obj.poly.centroid`.
  4. return obj.poly.extent # tuple like: (X0, Y0, X1, Y1).
  • item_geometry(item)

将此设置为返回 feed 中每个 item 的几何形状。这可以是一个 GEOSGeometry 实例,或者是表示点坐标或边界框的元组。例如:

  1. class ZipcodeFeed(Feed):
  2. def item_geometry(self, obj):
  3. # Returns the polygon.
  4. return obj.poly

SyndicationFeed 子类

以下是可用的 django.utils.feedgenerator.SyndicationFeed 子类:

class GeoRSSFeed

class GeoAtom1Feed

class W3CGeoFeed

备注

W3C Geo 格式的 feeds 仅支持 PointField 几何形状。