你好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