The Artima Developer Community
Sponsored Link

Ruby Buzz Forum
Ruby Bindings for GEOS

0 replies on 1 page.

Welcome Guest
  Sign In

Go back to the topic listing  Back to Topic List Click to reply to this topic  Reply to this Topic Click to search messages in this forum  Search Forum Click for a threaded view of the topic  Threaded View   
Previous Topic   Next Topic
Flat View: This topic has 0 replies on 1 page


Posts: 201
Nickname: cfis
Registered: Mar, 2006

Charlie Savage
Ruby Bindings for GEOS Posted: Apr 12, 2006 2:29 AM
Reply to this message Reply

This post originated from an RSS feed registered with Ruby Buzz by .
Original Post: Ruby Bindings for GEOS
Feed Title: cfis
Feed URL: http://cfis.savagexi.com/articles.rss
Feed Description: Charlie's Blog
Latest Ruby Buzz Posts
Latest Ruby Buzz Posts by
Latest Posts From cfis

Advertisement

One of the things I do is help maintain the SWIG bindings for the GEOS project. GEOS, which stands for the Geometry Engine Open Source, is a library for working with 2D geometries. It includes support for various spatial operators and relationships (for some nice pictures that visually explain what these are take a look at the PDF documentation for a closely related project called JTS).

The original SWIG binding was done by Sean Gillies for Python about a year ago. The upcoming GEOS 2.2.2 release will include a Ruby binding that I've put together. Since 2.2.2 is a bug fix release, the new Ruby binding is not part of the standard build process. This has already been fixed in CVS head, and both the Python and Ruby bindings will be fully integrated into the standard build sequence for GEOS 3.

For those intrepid souls who would like to try out this library here are the instructions on how to build it.

If you are using Linux or cygwin or mingW and msys on Windows:

# Change to the directory where you installed geos
$ cd /usr/src/geos/swig/ruby (or wherever you installed geos)


# Download the SWIG interface file or
create it using SWIG 1.3.29 or higher
$ swig -c++ -ruby -autorename -o geos_wrap.cxx ../geos.i

# Compile the SWIG wrapper
$ g++ -c -I../../source/headers/ 
         -I/usr/lib/ruby/1.8/i386-linux geos_wrap.cxx

# Create a shared library
$ g++ -shared -lgeos -lruby geos_wrap.o -o geos.so

# Install the shared library
$ sudo cp geos.so /usr/lib/site_ruby/1.8/i386-linux/

# Test out the new extension
$ irb
# Load the extension in IRB irb(main):004:0> require 'geos'
=> true
irb(main):005:0>

If you are running on Fedora Core 5, you will run into this error when trying to load the geos.so ruby extension:

cannot restore segment prot after reloc: Permission denied

Dan Walsh recently explained that this is caused by SELinux permission checks. To work around it:

$ chcon -t textrel_shlib_t 
   /usr/lib/site-ruby/1.8/i386-linux/geos.so

You can also build GEOS and the Ruby extension with Visual Studio 2005. Unfortunately, the Visual Studio project file that ship with GEOS 2.2.1 do not work and as a result have been removed from the distribution. If people are interested, I'd be happy to post my custom solution files.

Once you've built the extension comes the fun part - using it. To get started, take a look at the test suite I've put together in ruby/test. You'll see examples that show how to use a significant part of GEOS's functionality, including:

  • Importing and exporting geometries using the well know binary and text formats
  • Spatial operators such as buffers, centroids, etc.
  • Spatial relationships such as overlap, within, etc.

 

Good luck and let me know what you find!

Read: Ruby Bindings for GEOS

Topic: Todo lo que tu maestra no te dijo sobre los números en la clase de Ruby Previous Topic   Next Topic Topic: Stop Feeding the Enterprise Trolls

Sponsored Links



Google
  Web Artima.com   

Copyright © 1996-2019 Artima, Inc. All Rights Reserved. - Privacy Policy - Terms of Use