Project

ffi-gdal

0.01
There's a lot of open issues
No release in over a year
FFI wrapper for GDAL/OGR.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Runtime

>= 0
~> 1.0.0
~> 0.6.0
~> 2.0
 Project Readme

ffi-gdal

Ruby wrapper around GDAL, using FFI, along with some helper methods.

Installation

Add this line to your application's Gemfile:

gem 'ffi-gdal'

And then execute:

$ bundle

Or install it yourself as:

$ gem install ffi-gdal

Note that this requires you to have libgdal installed on your system and accessible in your PATH.

Usage

ffi-gdal provides two interfaces, really: the direct FFI wrapper around GDAL's C API, and a Ruby-fied interface that uses the FFI wrapper to make use more like using an object-oriented library instead of a functional one. Most likely you'll just want to use the Ruby-fied library, but if for some reason that doesn't get you what you want, direct access to the FFI wrapper (which is really just direct access to the C API) is available.

The Ruby-fied Library

To distinguish this gem from the already-existing gdal gem, you require ffi-gdal to get access to the GDAL module and its children.

The direct FFI wrapper

Following RubyGem conventions, to get access to the FFI wrapper, you require ffi/gdal.

Logging

For classes that are enabled with logging capabilities, you can turn logging on and off like GDAL::RasterBand.logging_enabled = true. If you're using ffi-gdal in Rails, you can GDAL::Logger.logger = Rails.logger.

Debugging

Additional error logging can be enabled through GDAL's global configuration options.

FFI::CPL::Conv.CPLSetConfigOption('CPL_DEBUG', 'ON')
FFI::CPL::Conv.CPLSetConfigOption('CPL_LOG_ERRORS', 'ON')

Contributing

  1. Fork it ( https://github.com/telus-agcg/ffi-gdal/fork )
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request

Please consider adhering to Conventional Commits v1.0.0 with your commit messages.

Docker

There are a couple Dockerfiles that allow doing development/testing against GDAL 2.4 and 3.x.

...for GDAL2:

docker-compose run gdal2 bundle exec rake spec

...for GDAL3:

docker-compose run gdal3 bundle exec rake spec