我有很多城区多边形,我需要选择面积最大的多边形。目前,我遍历每个对象并计算每个对象的面积,但这是低效的。做这个的最好方式是什么?
答案 0 :(得分:2)
我不确定您是否可以直接在GeoDjango中调用ST_Area,并结合聚合查询,但您可以使用raw SQL query。例如,使用正确的Postgres查询,由@MikeT发布,
top_area = ModelName.objects.raw('SELECT * FROM sometable ORDER BY ST_Area(geom) DESC LIMIT 1')[0]
答案 1 :(得分:1)
使用SQL,此查询为:
SELECT *, ST_Area(geom) FROM mytable ORDER BY ST_Area(geom) DESC LIMIT 1;
计算整个表格的每个几何体的面积。
如果经常使用ST_Area(geom)
,可以在表达式上创建索引:
CREATE INDEX mytable_geom_area_idx ON mytable (ST_Area(geom))