3

问题

90% 确定这是我的设置错误,但我无法执行 self.factory 并尝试访问 lonlat 给了我一个异常“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',并且在捆绑后,您应该将其视为输出之一:“Installing rgeo 0.4.0 with native extensions”

于 2015-07-01T19:30:00.770 回答