【发布时间】:2018-01-24 07:42:22
【问题描述】:
我正在尝试使用 MakeValid 来修复(验证)我的几何字段。
我可以通过单行获取和更新来使其工作:
from django.contrib.gis.db.models.functions import MakeValid
MyModel.objects.filter(id=<id>).update(polygon=MakeValid('polygon'))
但在某些情况下,我必须更新已经在函数中实例化的单个模型对象的 polygon(这意味着我已经完成了 .filter/.get),这给了我以下错误:
// np is an object of MyModel which has a field 'polygon' which is `MultiPolygon` django model field
np.polygon = MakeValid(np.polygon)
// np.save()
TypeError: Cannot set MyModel SpatialProxy (MULTIPOLYGON) with value of type: <class 'django.contrib.gis.db.models.functions.MakeValid'>
这里,MakeValid(np.polygon) 不返回 MultiPolygon 对象。相反,它返回一个django.contrib.gis.db.models.functions.MakeValid 包装器。
我可以从MakeValid 获取几何对象吗?
【问题讨论】:
-
np.polygon是多面体吗?我记得在某处读过 makeValid 不支持多面体 -
是的。也有问题更新。它也适用于 MultiPolygons。第一个查询工作正常。
-
仅供参考,这个问题是subject of a meta question。
标签: python django django-views postgis geodjango