postgis – Geodjango GeoJSON序列化器几何总是’null’

你好GeoDjango的朋友和Geo JSON serlizer.我正在关注官方的GeoDjango教程:

https://docs.djangoproject.com/en/1.8/ref/contrib/gis/tutorial/

所以最后我有一个PostgreSQL PostGIS数据库,里面有各自的国家,他们的名字,他们的iso3代码等等.特别是它们的几何形状为MultiPolygon(存储在wkb中).我想使用GeoDjango从数据库中检索contries.我正在努力争取.

我可以一个接一个地检索一个对象的属性:

from django.http import HttpResponse
from django.shortcuts import render
from django.core.serializers import serialize
from AppName.models import WorldBorder

[...]

WorldBorder.objects.filter(name='Germany')[0].name           # "Germany"
WorldBorder.objects.filter(name='Germany')[0].iso3           # "DEU"
WorldBorder.objects.filter(name='Germany')[0].mpoly.geojson  # long & correct output

因此数据正确存储在数据库中,我可以检索对象属性.现在我想获得该国家的完整geojson文件. Django为此创建了GeoJSON序列化器:
https://docs.djangoproject.com/en/1.8/ref/contrib/gis/serializers/

如果我按照描述的方式使用它:

serialize('geojson',
  WorldBorder.objects.filter(name='Germany'),
  geometry_field='mpoly',
  fields=('name',)
)

我得到这个输出:

u'{"type": "FeatureCollection", "crs":{"type": "name", "properties": {"name": "EPSG:4326"}},
    "features": [{"geometry": null,"type": "Feature",
    "properties":{"name": "Germany" }}]}'

让我疯狂的是“几何”:null

所以它序列化了一切,但不是几何.这是为什么?我究竟做错了什么?特别是?如何使用GeoDjango以GeoJSON格式从PostGIS数据库中获取几何图形?任何帮助表示赞赏.

谢谢 :)

最佳答案 万一其他人遇到这个问题:

似乎问题出在Django 1.8中,几何必须在字段中传递才能被序列化.

更多这里https://code.djangoproject.com/ticket/26138

点赞