首先,我将Rails3与Ruby 1.9.2结合使用。

我在PostgreSQL和PostGIS上使用时遇到问题。我尝试了两个 gem :

  • https://github.com/nofxx/georuby
  • https://github.com/rgeo/activerecord-postgis-adapter

  • 问题是,nofxx中的第一个可以很好地工作,但是它不提供 rake 任务,因此postgis.sql和spatial_ref_sys.sql可以插入数据库中。我需要这样做,因为使用测试很舒适且必不可少(自动创建数据库,插入postgis sql并在运行“rake测试”时执行迁移)。奇怪的是,作者在github上的README中写了一些有关PostGIS帮助程序和rake任务的内容。但是它们没有实现(或者我是盲目的)。

    上面列出的第二个 gem 提供了此功能,可以完美地 rake 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”相同的问题。答案很简单:“NW USER COMAS IN WKT”。在您的情况下,必须为v = Venue.new :location => "POINT(102.0 47.2)",然后一切正常!

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

    10-11 22:33
    查看更多