首先,我使用Rails3和Ruby 1.9.2。使用PostGIS的Rails
我在使用PostgreSQL和PostGIS時遇到了問題。我已經試過兩種寶石:
的問題是,從nofxx效果很好,但它不提供耙的任務,第一個使得PostGIS的.sql和spatial_ref_sys.sql被插入到數據庫中。我需要這個,因爲它使用測試是很舒適和必不可少的(自動創建數據庫,插入postgis sql並在運行「rake test」時執行遷移)。奇怪的是,在github的README中,作者寫了一些關於PostGIS助手和耙子任務的東西。但他們沒有實現(或我是盲人)。
上面列出的第二個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的適配器的自述文件中提到我用下面一行在我的場館模型來提供這種支持:
self.rgeo_factory_generator = RGeo::Geos.factory_generator
,但它不工作。
所以要找到解決方案,有兩種方法:找到一種方法將rake任務放入nofxx的georuby gem中,或者用activerecord-postgis-adapter的工廠解決問題。
希望有人能幫助我, thx!
您可以向數據庫添加一個「script_dir」變量,該變量將執行兩個必需的sql腳本以使用postgis。在activerecord-postgis-adapter中搜索「script_dir」。我使用它,它效果很好。不需要模板。 – jevy 2011-09-03 14:07:29