GeoDjango Точечный объект, дающий другой wkt, чем был инициализирован Что я делаю неправильно? - PullRequest
0 голосов
/ 22 сентября 2009

Может кто-нибудь объяснить, , почему wkt (известный текст) точечного объекта в geodjango будет возвращать то, что, по-видимому, отличается от координат, с которыми был инициализирован объект? Я должен представить, что я делаю что-то не так, а не гео. 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 ]

1 голос
/ 09 октября 2009

Скорее всего, это исходит от __str__ or __repr__. Если что-то сделать с этими числами (перекрестные произведения, сохранить в БД) и получить ту же точность обратно, это должно подтвердить.

Приветствия

0 голосов
/ 03 июля 2011

Это потому, что вы не можете представить каждое число в двоичном формате. В интерпретаторе Python попробуйте ввести «1.1» (он вернется как 1.1000000000000001). В том же духе float (0.37765021) = 0.37765020999999999.

...