python - Geodjango + PostGIS。以平方米为单位的聚合多边形面积
问题描述
我正在使用 geodjango(3.1) + postgis,我想以平方米为单位接收多边形的面积。因此,我正在使用Django 的地理数据库功能。
我的代码如下所示:
City.objects.annotate(area=Area('geom'))
我认为我收到的结果是学位。当我以同样的方式使用距离函数时,我得到了以平方米为单位的正确结果。
当我ST_Area(geom, use_spheroid=true)
作为 RawSQL 执行时,结果也适合并且以平方米为单位,但我希望避免 RawSQL。
感谢您的帮助 =)
解决方案
请注意,如果您将字段存储geom
为地理类型,则该Area
函数应返回平方米而不是度数。
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
推荐阅读
- openssl - curl:(35)schannel:SNI或证书检查失败:SEC_E_WRONG_PRINCIPAL(0x80090322)-目标主体名称不正确
- html - LESS CSS CDN:ERR_INVALID_URL
- javascript - discord.js 机器人不会提及用户
- three.js - maptalks.three 建筑物纹理
- javascript - 获取匹配的最后 6 个字符(javascript 正则表达式)
- c - 如何打印char**的内容?
- r - 如何在数据框中每 3 个现有行插入空白行?
- python - 文本文件处理,数据准备,日期-时间格式,列表中的列表 python 程序问题 活着的总统独特的问题
- python-3.x - 使用 min() 时 - ValueError:Series 的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()
- python - 在一个类中使用 Python 多进程耗时太长