gpt4 book ai didi

postgis - Geodjango GeoJSON Serializer 几何总是 'null'

转载 作者:行者123 更新时间:2023-12-01 05:00:16 32 4
gpt4 key购买 nike

你好 GeoDjango 和 GeoJSON serlizer 的 friend 们。我正在关注官方的 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 从我的 PostGIS 数据库中以 GeoJSON 格式获取几何图形?任何帮助表示赞赏。

谢谢 :)

最佳答案

如果其他人遇到此问题:

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

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

关于postgis - Geodjango GeoJSON Serializer 几何总是 'null',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33717211/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com