2012-01-31 4 views
0

Привет StackOverflow людей,PostgreSQL + GeoDjango: лучше понять, как ТОЧКИ пересчитываются

У меня возникают проблемы, чтобы понять, как ссылки POINT в GeoDjango пересчитаны для запроса заявления.

jpic's advice помог мне очень сильно захватить заявления запроса в консоли, но распечатка для меня не имеет никакого смысла.

В моей функции view.py (сохранение формы), у меня есть следующие строки:

savedProject.geolocation = GEOSGeometry('POINT(%s %s)' %(u_lng,u_lat)) 

с u_lng и u_lat как пользователь скоординированы (из информации сеанса). u_lat и u_lng - значения степени как десятичные.

Однако, когда я проверяю SQL заявление как это было предложено, я вижу, что точка была переведена на

ST_GeomFromEWKB(E'\001\001\000\000 \346\020\000\000\352\036~\243\302\256H\300\352X\245\364L\3515\300'::bytea) 

в SQL заявление и которое отвергается SQL с сообщением об ошибке

ERROR: invalid byte sequence for encoding "UTF8": 0x00 

Каков правильный способ перевода lng, lat точек в postgis с GeoDjango?

Благодарим вас за помощь, чтобы лучше понять этот вопрос!

ответ

1

Я далек от эксперта по этому вопросу. Но однажды я написал код, который сохранил определенный момент в базе данных postgis, используя Django.

То, как я сделал это:

model_instance.coords = Point(geo_point.latitude, geo_point.longitude) 
1

Кажется, что сообщение об ошибке возникает из маленькой ошибки в

django/contrib/gis/db/backends/postgis/adapter.py 

Пояснения к конкретной проблеме и патч можно найти здесь:

У меня есть патч четыре строки в adapter.py и исчезает ошибка.

Благодарим за помощь!

Смежные вопросы