我想做
SELECT [field1], ST_Area(ST_Union(geometry), True) FROM table [group by field1]
或者,换句话说,如何在汇总结果上应用函数? ST_Union是一个聚合。 [field1]只是一种自由的说法,我想在有或没有此group by的情况下运行两个查询。
此外,带有2个参数的ST_Area似乎在dgigo gis帮助器上不可用,因此必须使用Func
编写。
此外,我希望也可以按所有内容进行汇总(不提供groupBy),但是如果我不向查询集提供任何group by id
,django似乎会添加.values()
。
这似乎很令人困惑。我无法理解注释和聚合。谢谢!
答案 0 :(得分:0)
显然,我通常可以像这样
from django.contrib.gis.db.models import Union, GeometryField
from django.contrib.gis.db.models.functions import Transform, Area
qs = qs.annotate(area_total=Area(Transform(Union("geometry"), 98056)))
我遇到的问题是我试图使用Func()
expressions。为了在Func
的第一个参数中链接另一个函数,必须用ExpressionWrapper
或其他东西包装它。
qs = qs.annotate(
area_total=Func(
ExpressionWrapper(Union("geometry"), output_field=GeometryField()),
True,
function="ST_Area",
output_field=FloatField(),
)
)