GeoDjango Point对象给出了与初始化时不同的wkt。我究竟做错了什么?

时间:2009-09-22 06:08:13

标签: django geospatial geodjango

有人可以解释为什么 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

2 个答案:

答案 0 :(得分:1)

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

干杯

答案 1 :(得分:0)

这是因为你不能用二进制格式表示每个数字。在Python解释器中,尝试键入“1.1”(它将返回1.1000000000000001)。沿同一行,浮动(0.37765021)= 0.37765020999999999。