3

問題

90% 確実に私の側のセットアップ エラーですが、self.factory を実行できず、lonlat にアクセスしようとすると、「undefined method `point' for nil:NilClass」という例外が発生します。

できます

以下を使用して lonlat を設定します。

mfactory = RGeo::ActiveRecord::SpatialFactoryStore.instance.factory(:geo_type => 'point')
self.lonlat = mfactory.point(long, lat)
self.save

0101000020E610000061C3D32B65965DC03657CD7344F64040これにより、データベースのような値が得られます。

私は使用できません:

self.lonlat = "POINT(#{long},#{lat})"
self.save

質問

モデルに特定のものを設定する必要がありますか?

4

1 に答える 1

15

あまり簡潔ではありませんが、より詳細な説明を含む github の問題を作成しました。

RGeos は GEOS に依存します。このエラーは、RGeos が GEOS をロードできないために発生します。

これが問題かどうかを確認するには:

$ rails c
> RGeo::Geos.supported?
=> false

GEOS がインストールされているかどうかを確認するには:

geos-config --version

GEOS がインストールされていない場合:

brew install geos

GEOS がインストールされている場合は、インストールされている RGeo を修正します。

$ geos-config --prefix
/usr/local/Cellar/geos/3.5.0
$ gem install rgeo -- --with-geos-dir=/usr/local/Cellar/geos/3.5.0

正しくインストールされ、エラーが修正されるはずです。上記のように確認できます。

$ rails c
> RGeo::Geos.supported?
=> true

これが機能しない場合は、geos と rgeo のすべてのバージョンをアンインストールします。

$ brew uninstall geos
$ gem uninstall rgeo

上記の手順に従って geos と rgeo を再インストールします。Gemfile に gem 'rge​​o' が含まれている必要があります。バンドルすると、出力の 1 つとして次のように表示されます。「Installing rgeo 0.4.0 with native extensions」

于 2015-07-01T19:30:00.770 に答える