Kann jemand bestätigen, dass es sich tatsächlich um Rundungsfehler handelt (z. B. aufgrund leicht unterschiedlicher Algorithmen, wie @MartinBrown vorgeschlagen hat)? Oder handelt es sich um ein unbeabsichtigtes Verhalten?
Code: Select all
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)
Mobile version