是否可以在GeoDjango或PostGIS中选择具有查询的最大区域的多边形?

时间:2015-01-14 11:30:08

标签: postgis geodjango

我有很多城区多边形,我需要选择面积最大的多边形。目前,我遍历每个对象并计算每个对象的面积,但这是低效的。做这个的最好方式是什么?

2 个答案:

答案 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))