Geodjango 查询几何 returns 指针而不是几何

Geodjango Querying geometry returns pointer instead of geometry

我正在尝试从该模型的查询集中获取单个 MultiPolygon 几何体:

class local_administrative_unit(models.Model):
    lau_id = models.IntegerField(primary_key=True)
    lau_name = models.CharField(max_length=150)
    adm_level_2 = models.ForeignKey('administrative_level_2', on_delete=models.PROTECT)
    geom = models.MultiPolygonField(srid=4326)

在 Django 中以这种方式尝试 shell:

local_administrative_unit.objects.get(lau_id=1).geom

返回:

<MultiPolygon object at 0x7fb12af0ab10>

当我将它传递给 Centroid 函数时,它不是我要找的东西:

Centroid(Value(<MultiPolygon object at 0x7fb12af0ac90>))

能否请您告诉我如何获得实际的几何图形以便之后使用它 - 例如计算该多边形的质心?看起来我得到了一个指向我正在寻找的东西的指针,而不是实际的东西。

提前致谢。

与此同时,我找到了我错过的东西。基本上所有的解释都在 GeoDjango Tutorial 中,我之前似乎忽略了这一点。 GeoDjango 在首次访问几何时创建一个 GEOSGeometry 对象,然后可以使用某些属性来执行某些操作。 在上述情况下,这意味着:

foo = local_administrative_unit.objects.get(lau_id=1).geom
print(foo)
<MultiPolygon object at 0x7fb12af0ab10>

foo 将几何对象保存为初始示例中的几何对象,为了以通常可用的形式获得质心,我们可以只使用一些属性:

bar = foo.centroid
bar.wkt

这将计算质心并 return 它然后在 well-known 文本中。