Warum liefern die Centroid-Funktion und die Centroid-Methode (leicht) unterschiedliche Ergebnisse?Python

Python-Programme
Anonymous
 Warum liefern die Centroid-Funktion und die Centroid-Methode (leicht) unterschiedliche Ergebnisse?

Post by Anonymous »

Ich habe ein GeoDjango (v5.2)-Modell („Location“) mit einem MultiPolygonField („Koordinaten“) und verwende PostGIS (v17-3.5) als Datenbank-Backend. Wenn ich einen Abfragesatz mit dem Schwerpunkt des Multipolygons annotiere, erhalte ich etwas andere Ergebnisse als mit der Schwerpunktmethode einer einzelnen Instanz. Es scheint sich nur um Rundungsfehler zu handeln, aber angesichts der Namen von Funktion und Methode hatte ich die gleichen Ergebnisse erwartet.
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)

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post