GEOSは、Java TopologySuiteのC ++ポートです。ジオメトリと地理空間処理を可能にし、PostgreSQLのPostGISの下にあるライブラリです。PostGISではなくRubyで直接操作したいのですが、ネイティブのRubyバインディングがあることは知っていますが、オンラインのドキュメントはまばらで、インストールにはバグがあります。Rubyバインディングを有効にしてGEOSをインストールするにはどうすればよいですか?
Ubuntu
sudo apt-get install swig
Mac OS X
swigソースコードをダウンロードして解凍します。解凍されたディレクトリ:
./configure --without-pcre
make && sudo make install
(または使用しますbrew install
。)
GEOSソースコードをダウンロードして解凍します。解凍されたディレクトリ:
./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に戻ります。)
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バインディングを永久に有効にするために、インストール時に実行する必要があるだけです。
ライブラリに正しくリンクしていればrequire 'geos'
、エラーを使用して確認することはできません。
$ irb
>> require 'geos'
=> true
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加