У меня есть модель 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
Почему функция Centroid и метод centroid возвращают (немного) разные результаты ⇐ Python
Программы на Python
1768308235
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)
Подробнее здесь: [url]https://stackoverflow.com/questions/79862288/why-do-the-centroid-function-and-centroid-method-return-slightly-different-res[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия