2009-09-22 6 views
0

Quelqu'un peut-il expliquer pourquoi le wkt (texte bien connu) d'un objet ponctuel dans geodjango retournerait ce qui semble être des coordonnées différentes de l'initialisation de l'objet? Je dois imaginer que c'est quelque chose que je fais mal, et pas les géos. Le wkt devrait ressembler à: "POINT (-122.432534 37.764021)" mais à la place il ressemble à: 'POINT (-122.4325340000000040 37.7640209999999996)'Objet GeoDjango Point donnant un wkt différent de celui initialisé. Qu'est-ce que je fais mal?

D'où vient cet arrondi? Il fait en sorte que je ne peux pas faire une requête comme Location.objects.get (pnt = "POINT (-122.432534 37.764021)") parce qu'il pense qu'ils sont (toujours légèrement) différents points!

>>> from django.contrib.gis.geos import Point 
>>> p = Point(-122.432534,37.764021) 
>>> p 
<Point object at 0x239c1e4> 
>>> p.wkt 
'POINT (-122.4325340000000040 37.7640209999999996)' 
>>> p.x 
-122.432534 
>>> p.y 
37.764021 

Répondre

1

Ceci provient très probablement de __str__ or __repr__. Faire quoi que ce soit à ces chiffres (produits croisés, enregistrer à la db) et obtenir la même précision devrait confirmer cela.

Vive

0

C'est parce que vous ne pouvez pas représenter tous les nombres au format binaire. Dans l'interpréteur Python, essayez de taper '1.1' (il reviendra sous 1.1000000000000001). Dans le même ordre d'idée, float (0.37765021) = 0.37765020999999999.

Questions connexes