我有旧数据库,需要自定义选择。
在SQL中,我可以使用:
SELECT x(geometry) FROM table
但我不知道如何在 django select 中强制 x() 函数。
您可以使用表达式创建自定义函数。
class GeoX(Func):
function = 'X'
MyModel.objects.annotate(x=GeoX('field'))
这将导致调用几何 X 函数,并将其结果注释到模型中标记为 x 的字段。然而,这是较差的解决方案。更好的解决方案是安装geodjango。这提供了对PostGIS中几乎所有功能的完全访问。也适用于空间和msyql空间扩展。
我设法使用 Func() 解决问题
Func(F('geometry'), function='x')