GEOS 是 Java 拓扑套件的 C++ 端口。它支持几何和地理空间处理,并且是 PostgreSQL 的 PostGIS 下的库。我想直接在 Ruby 中使用它,而不是在 PostGIS 中,而且我知道有本地 Ruby 绑定,但是在线文档很少,安装也有问题。如何在启用 Ruby 绑定的情况下安装 GEOS?
1 回答
1. 编译安装 Swig
Ubuntu
sudo apt-get install swig
Mac OS X
下载并解压swig 源代码。在解压后的目录中:
./configure --without-pcre
make && sudo make install
(或使用brew install
。)
2. 下载并配置 GEOS
下载并解压GEOS 源代码。在解压后的目录中:
./configure --enable-ruby
查找显示Swig: true
和的状态行Ruby bindings: true
。
3.编译安装GEOS
尝试编译安装:
make && sudo make install
(如果make
以 error 结尾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 步。)
4.设置链接
require 'geos'
在您的 Ruby 中使用之前,您需要确保该库已正确链接。安装目录出现在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
.
Mac OS X 上的 Ruby 需要一个.bundle
文件,因此我们创建了一个指向该.so
文件的符号链接。
$ cd /Library/Ruby/Site/2.0.0/universal-darwin13
$ sudo ln -s geos.so geos.bundle
这只需要在安装时运行以永久启用 Ruby GEOS 绑定。
5. 在 Ruby 中加载 GEOS
如果您已正确链接到库,您应该能够使用require 'geos'
并且看不到任何错误。
$ irb
>> require 'geos'
=> true