2

GEOS 是 Java 拓扑套件的 C++ 端口。它支持几何和地理空间处理,并且是 PostgreSQL 的 PostGIS 下的库。我想直接在 Ruby 中使用它,而不是在 PostGIS 中,而且我知道有本地 Ruby 绑定,但是在线文档很少,安装也有问题。如何在启用 Ruby 绑定的情况下安装 GEOS?

4

1 回答 1

4

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
于 2014-11-03T08:26:15.977 回答