您好GeoDjango的朋友和GeoJSON serlizer。我正在关注官方的GeoDjango教程: https://docs.djangoproject.com/en/1.8/ref/contrib/gis/tutorial/
所以最后我有一个PostgreSQL + PostGIS数据库,里面有他们的name
,他们的iso3
代码等国家/地区。特别是它们在mpoly
中的几何形状为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" }}]}'
让我疯狂的是"geometry": null
所以它序列化了一切,但不是几何。这是为什么?我究竟做错了什么?特别是?如何使用GeoDjango以GeoJSON格式从PostGIS数据库中获取几何图形?任何帮助表示赞赏。
谢谢:)
答案 0 :(得分:1)
答案 1 :(得分:0)
如果有人仍然对答案感兴趣。在Django更新之后,我可以使用django软件包中的普通序列化程序修复它。
from django.core.serializers import serialize
然后使用'geojson'
选项序列化:
serialize('geojson',
WorldBorder.objects.filter(name='Germany'),
geometry_field='geom',
fields=('id', 'name', 'other_properties_you_want')
它就像一个魅力!除了id
未被序列化的事实。