0

こんにちはStackoverflowの人々、

GeoDjangoのPOINT参照がクエリステートメントにどのように変換されるかを理解するのに問題があります。

jpicのアドバイスは、コンソールでクエリステートメントをキャプチャするのに非常に役立ちましたが、印刷しても意味がありません。

私のview.py関数(フォームの保存)には、次の行があります。

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

ユーザーが調整したu_lngとu_latを使用します(セッション情報から取得)。u_latとu_lngは、小数としての度の値です。

ただし、提案されているようにsqlステートメントを確認すると、POINTがに変換されていることがわかります。

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

GeoDjangoを使用してlng、latポイントをpostgisに変換する正しい方法は何ですか?

この問題をよりよく理解するためにあなたの助けをありがとう!

4

2 に答える 2

1

私はこの問題の専門家からはほど遠いです。しかし、私はかつてDjangoを使用してpostgisデータベースの特定のポイントを保存するコードを書いたことがあります。

私がそれをした方法は:

model_instance.coords = Point(geo_point.latitude, geo_point.longitude)
于 2012-01-31T13:29:54.630 に答える
1

エラーメッセージは、の小さなバグに起因しているようです。

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

正確な問題とパッチの説明はここにあります:

adapter.pyの4行にパッチを適用しましたが、エラーはなくなりました。

助けてくれてありがとう!

于 2012-02-01T12:08:37.997 に答える