【问题标题】:How to install GEOS with native Ruby bindings?如何使用原生 Ruby 绑定安装 GEOS?
【发布时间】:2014-12-29 20:36:02
【问题描述】:

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

【问题讨论】:

  • 我知道有一个名为 ffi-geos 的 gem,但我问了这个问题,所以我可以用一个可靠的过程来回答这个问题,用本机绑定从源代码安装。

标签: ruby geometry geospatial postgis geos


【解决方案1】:

1. 编译安装 Swig

Ubuntu

sudo apt-get install swig

Mac OS X

下载并解压swig source code。在解压后的目录中:

./configure --without-pcre
make && sudo make install

(或使用brew install。)

2. 下载并配置 GEOS

下载并解压GEOS source code。在解压后的目录中:

./configure --enable-ruby

查找显示Swig: trueRuby bindings: true 的状态行。

3. 编译安装GEOS

尝试编译安装:

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 步。)

4. 设置链接

在您的 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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多