gpt4 book ai didi

ruby-on-rails - 使用 PostGIS 的 Rails

转载 作者:数据小太阳 更新时间:2023-10-29 06:45:22 24 4
gpt4 key购买 nike

首先,我使用 Rails3 和 Ruby 1.9.2。

我在将 PostgreSQL 与 PostGIS 结合使用时遇到问题。我试过两个 gem :

问题是,来自 nofxx 的第一个运行良好,但它不提供 rake 任务,因此 postgis.sql 和 spatial_ref_sys.sql 被插入到数据库中。我需要这个,因为它使用测试很舒服而且很重要(自动创建数据库,插入 postgis sql 并在运行“rake test”时执行迁移)。奇怪的是,在 github 上的 README 中,作者写了一些关于 PostGIS helpers 和 rake tasks 的东西。但它们没有实现(或者我是瞎子)。

上面列出的第二个 gem 完美地为 rake 提供了这个功能!但是我遇到了一个我无法解决的问题。我按照自述文件中的说明进行操作,但每次尝试在空间列上设置位置时,都会得到以下输出:

ruby-1.9.2-p136 :010 > v = Venue.new :location => "POINT(102.0, 47.2)"
=> #<Venue id: nil, last_updated: nil, created_at: nil, updated_at: nil, location: nil>
ruby-1.9.2-p136 :011 > v.location
=> nil

如您所见,我使用 WKT(众所周知的文本)设置了一个位置,但它始终为零。我也试图将它保存到数据库中,但它也是零。我发现,当我尝试使用 RGeo 提供的对象时

RGeo::Geos.factory.point(-122, 47)

它说,工厂是零。所以,创建RGeo提供的工厂肯定有问题。正如 activerecord-postgis-adapter 的自述文件中所述,我在我的 Venue 模型中使用了以下行来提供此支持:

self.rgeo_factory_generator = RGeo::Geos.factory_generator

但它不起作用。

所以要找到解决办法,有两种方法:想办法把rake任务放到nofxx的georuby gem中,或者用activerecord-postgis-adapter的工厂解决问题。

希望有人能帮助我,谢谢!

最佳答案

我花了大约 4 个小时用“activerecord-postgis-adapter”解决同样的问题。答案很简单:“永远不要在 WKT 中使用 COMAS”。在您的情况下,它必须是 v = Venue.new :location => "POINT(102.0 47.2)" 然后一切正常!

关于ruby-on-rails - 使用 PostGIS 的 Rails,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5298797/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com