【发布时间】:2011-11-11 07:46:03
【问题描述】:
我正在使用 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 相同的格式。
谢谢!
【问题讨论】:
-
注意:SQLite 不适合生产环境,所以我建议切换到带有 PostGIS 扩展的 PostgreSQL。
-
@MarnenLaibow-Koser 不幸的是,我现在没有那种奢侈。我需要暂时使用 SQLite 启动并运行它。
-
不是奢侈品。如果您没有时间安装真正的多用户数据库,那么您就没有时间开发它。很抱歉我很苛刻,但事实就是如此。
-
@MarnenLaibow-Koser 安装另一个数据库并不重要,重要的是保持许多其他明确依赖 SQLite 的软件正常工作。无论过去这是否是一个实际的决定,这些都是我现在必须处理的限制。
-
SQLite 不适合生产 Web 应用程序,因为它缺乏并发支持。如果您的生产 Web 应用程序依赖它,那将是一场等待发生的灾难。
标签: ruby-on-rails ruby activerecord spatialite