0

有人可以解释为什么geodjango 中点对象的 wkt(众所周知的文本)会返回看起来与初始化对象不同的坐标吗?我必须想象这是我做错的事情,而不是地理。wkt 应该看起来像:“POINT (-122.432534 37.764021)”,但它看起来像:“POINT (-122.4325340000000040 37.7640209999999996)”

这个四舍五入是从哪里来的?它使我无法进行像 Location.objects.get(pnt="POINT (-122.432534 37.764021)") 这样的查询,因为它认为它们是(非常轻微的)不同点!

>>> 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
4

2 回答 2

1

这很可能来自__str__ or __repr__. 对这些数字做任何事情(交叉产品,保存到数据库)并获得相同的精度应该可以证实这一点。

干杯

于 2009-10-09T16:00:04.730 回答
0

这是因为您不能以二进制格式表示每个数字。在 Python 解释器中,尝试输入“1.1”(它将返回 1.1000000000000001)。同样,float(0.37765021) = 0.37765020999999999。

于 2011-07-03T06:33:27.750 回答