Geodjango Запрос геометрии возвращает указатель вместо геометрии

Я пытаюсь получить одну геометрию MultiPolygon в Queryset из этой модели:

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:

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

Вычислите центроид и верните его в виде хорошо известного текста.

Вернуться на верх