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
Вычислите центроид и верните его в виде хорошо известного текста.