我使用的是 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 相同的格式。
谢谢!
最佳答案
我还没有使用 GeoRuby,但是对于空间数据,我使用了带有 @geodist 功能的 thinking-sphinx,使用工具非常好。
一些你可以阅读的资源:
关于ruby-on-rails - ActiveRecord 将字段设置为 SQL 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8091049/