Почему функция Centroid и метод centroid возвращают (немного) разные результатыPython

Программы на Python
Ответить
Anonymous
 Почему функция Centroid и метод centroid возвращают (немного) разные результаты

Сообщение Anonymous »

У меня есть модель GeoDjango (v5.2) («Местоположение») с MultiPolygonField («координаты»), и я использую PostGIS (v17-3.5) в качестве серверной части базы данных. Когда я аннотирую набор запросов с помощью центроида мультиполигона, я получаю немного другие результаты по сравнению с методом центроида одного экземпляра. Кажется, это только ошибки округления, но, учитывая имена функции и метода, я ожидал тех же результатов.
Может ли кто-нибудь подтвердить, что я действительно имею дело с ошибками округления (например, из-за немного других алгоритмов, как предложил @MartinBrown)? Или это непреднамеренное поведение?
from django.contrib.gis.db import models
from django.contrib.gis.db.models.functions import Centroid

class Location(models.Model):
coordinates = models.MultiPolygonField(
unique=True,
srid=DATABASE_SRID,
dim=2,
geography=True,
)
...

# Get an arbitrary location that is centered at (20°N, 20°E).
foo = Location.objects.get(pk=1)
bar = Location.objects.filter(pk=1).annotate(center=Centroid("coordinates"))

print(foo.coordinates.centroid.coords)
# > (21.99999999999877, 22.0000000000065)
print(bar.first().center.centroid.coords)
# > (22.000000000008804, 21.999999999992266)


Подробнее здесь: https://stackoverflow.com/questions/798 ... ferent-res
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»