我使用的是Ruby 1.8.7和Rails 2.3.8,并且有许多以纬度和经度表示的位置。我使用SQLite SpatiaLite扩展将坐标转换为众所周知的二进制(WKB)格式。我关心的是如何让ActiveRecord执行插入或更新,调用适当的SpatiaLite转换方法。我希望做这样的事情:
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的相同格式。
谢谢!
答案 0 :(得分:0)
我还没有使用GeoRuby,但是对于空间数据,我使用了思维-sphinx和@geodist函数,并且使用工具非常好。
您可以阅读的一些资源:
答案 1 :(得分:0)
经过几天的搜索并找不到解决方案后,我决定只使用原始连接来执行实际插入:
rc = ActiveRecord::Base.connection.raw_connection
rc.execute("INSERT INTO objects (geometry)
VALUES (MakePoint(#{obj.lng}, #{obj.lat}))")