GEOS是Java拓扑套件的C ++端口。它支持几何和地理空间处理,是PostgreSQL的PostGIS下的库。我想直接在Ruby中使用它,而不是在PostGIS中,我知道有本机的Ruby绑定,但是在线文档很少,而且安装很麻烦。如何在启用Ruby绑定的情况下安装GEOS?
答案 0 :(得分:4)
<强> Ubuntu的强>
sudo apt-get install swig
Mac OS X
下载并解压缩swig source code。在解压缩的目录中:
./configure --without-pcre
make && sudo make install
(或使用brew install
。)
下载并解压缩GEOS source code。在解压缩的目录中:
./configure --enable-ruby
查找显示Swig: true
和Ruby bindings: true
的状态行。
尝试编译并安装:
make && sudo make install
(如果make
以错误library not found for -llibruby.2.0.0.dylib
结尾,这是由于GEOS中的错误(目前版本为3.4.2)。运行以下命令修复configure
文件:
sed -i -e 's/RUBY_SO_NAME=.*/RUBY_SO_NAME=ruby/' configure
然后返回第2步。)
在Ruby中使用require 'geos'
之前,您需要确保库已正确链接。安装目录显示在sudo make install
的输出中。
<强> Ubuntu的强>
默认安装目录为usr/local/lib
。
在执行Ruby流程之前,将安装目录添加到LD_LIBRARY_PATH
。
$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
每当运行Ruby可执行文件时,都需要设置此环境变量,因此您可能希望将其添加到bash配置文件中。
Mac OS X
.so
文件的默认安装目录类似于/Library/Ruby/Site/2.0.0/universal-darwin13
。
Ruby on Mac OS X需要一个.bundle
文件,因此我们创建了一个指向.so
文件的符号链接。
$ cd /Library/Ruby/Site/2.0.0/universal-darwin13
$ sudo ln -s geos.so geos.bundle
这只需要在安装时运行以永久启用Ruby GEOS绑定。
如果您已正确链接到库,则应该能够使用require 'geos'
并且看不到错误。
$ irb
>> require 'geos'
=> true