3

私は Ruby 1.8.7 と Rails 2.3.8 を使用しており、緯度と経度で表される多くの場所があります。SQLite SpatiaLite 拡張機能を使用して、座標を既知のバイナリ (WKB) 形式に変換しています。私の懸念は、適切な SpatiaLite 変換メソッドを呼び出して、ActiveRecord に挿入または更新を実行させる方法です。私はこのようなことをしようとしています:

obj.geometry = "AsBinary(MakePoint(4, 51))"
obj.save
# ActiveRecord would now do something like:
# INSERT INTO objects (geometry) VALUES (AsBinary(MakePoint(4, 51)))

これは ActiveRecord で可能ですか?

私はすでに GeoRuby を試しましたが、WKB blob を正しく読み取ることはできますが、SpatiaLite と同じ形式で保存することはできません。

ありがとう!

4

2 に答える 2

0

何日も検索して解決策を思いついた後、生の接続を利用して実際の挿入を実行することにしました。

rc = ActiveRecord::Base.connection.raw_connection
rc.execute("INSERT INTO objects (geometry)
            VALUES (MakePoint(#{obj.lng}, #{obj.lat}))")
于 2011-11-14T12:13:43.417 に答える
0

GeoRuby はまだ使っていませんが、空間データについては thinking-sphinx と @geodist 関数を使用しました。

それについて読むことができるいくつかのリソース:

于 2011-11-11T08:02:53.453 に答える