【问题标题】:GeoDjango Point object giving different wkt than was initialized with. What am I doing wrong?GeoDjango Point 对象给出的 wkt 与初始化时不同。我究竟做错了什么?
【发布时间】:2009-09-22 06:08:12
【问题描述】:

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

【问题讨论】:

    标签: django geospatial geodjango


    【解决方案1】:

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

    干杯

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2013-08-06
        • 1970-01-01
        • 2022-06-10
        • 2016-07-18
        • 1970-01-01
        • 2019-12-23
        • 1970-01-01
        • 2014-06-15
        • 1970-01-01
        相关资源
        最近更新 更多