【问题标题】:Geodjango + PostGIS. Aggregate polygon area in square metersGeodjango + PostGIS。以平方米为单位的聚合多边形面积
【发布时间】:2021-01-06 19:56:49
【问题描述】:

我正在使用 geodjango(3.1) + postgis,我想以平方米为单位接收多边形的面积。因此,我使用的是Geographic Database Functions of Django

我的代码如下所示:

City.objects.annotate(area=Area('geom'))

我认为我收到的结果是学位。当我以同样的方式使用distance function 时,我得到了以平方米为单位的正确结果。

当我将 ST_Area(geom, use_spheroid=true) 作为 RawSQL 执行时,结果也适合并且以平方米为单位,但我希望避免使用 RawSQL。

感谢您的帮助 =)

【问题讨论】:

    标签: python django gis postgis geodjango


    【解决方案1】:

    请注意,如果您store your geom field as a geography typeArea 函数应该返回平方米而不是度数。

    from django.contrib.gis.db import models as gis_models
    
    class City(gis_models.Model):
        geom = gis_models.PolygonField(geography=True)
    
    …
    cities = City.objects.annotate(area=Area('geom'))
    cities[0].area.sq_m  # square meters
    

    【讨论】:

      【解决方案2】:

      这对我有用:

      City.objects.annotate(area=RawSQL("ST_AREA(geom, true)", []))
      

      【讨论】:

        猜你喜欢
        • 2014-07-05
        • 2022-08-14
        • 2013-11-22
        • 2015-11-03
        • 2017-11-02
        • 1970-01-01
        • 1970-01-01
        • 2010-12-03
        • 2012-11-13
        相关资源
        最近更新 更多