class Geos::WktWriter

Attributes

old_3d[R]
ptr[R]
rounding_precision[R]
trim[R]

Public Class Methods

new(options = {}) click to toggle source
# File lib/ffi-geos/wkt_writer.rb, line 7
def initialize(options = {})
  options = {
    trim: false,
    old_3d: false,
    rounding_precision: -1,
    output_dimensions: 2
  }.merge(options)

  ptr = FFIGeos.GEOSWKTWriter_create_r(Geos.current_handle_pointer)
  @ptr = FFI::AutoPointer.new(
    ptr,
    self.class.method(:release)
  )

  set_options(options)
end

Public Instance Methods

old_3d=(val) click to toggle source

Available in GEOS 3.3+.

# File lib/ffi-geos/wkt_writer.rb, line 76
def old_3d=(val)
  @old_3d = !!val
  FFIGeos.GEOSWKTWriter_setOld3D_r(Geos.current_handle_pointer, ptr, Geos::Tools.bool_to_int(@old_3d))
end
output_dimensions() click to toggle source

Available in GEOS 3.3+.

# File lib/ffi-geos/wkt_writer.rb, line 94
def output_dimensions
  FFIGeos.GEOSWKTWriter_getOutputDimension_r(Geos.current_handle_pointer, ptr)
end
output_dimensions=(dim) click to toggle source

Available in GEOS 3.3+.

# File lib/ffi-geos/wkt_writer.rb, line 84
def output_dimensions=(dim)
  dim = dim.to_i
  raise ArgumentError, 'Output dimensions must be either 2 or 3' if dim < 2 || dim > 3

  FFIGeos.GEOSWKTWriter_setOutputDimension_r(Geos.current_handle_pointer, ptr, dim)
end
rounding_precision=(r) click to toggle source

Available in GEOS 3.3+.

# File lib/ffi-geos/wkt_writer.rb, line 65
def rounding_precision=(r)
  r = r.to_i
  raise ArgumentError, 'Rounding precision cannot be greater than 255' if r > 255

  @rounding_precision = r
  FFIGeos.GEOSWKTWriter_setRoundingPrecision_r(Geos.current_handle_pointer, ptr, @rounding_precision)
end
trim=(val) click to toggle source

Available in GEOS 3.3+.

# File lib/ffi-geos/wkt_writer.rb, line 57
def trim=(val)
  @trim = !!val
  FFIGeos.GEOSWKTWriter_setTrim_r(Geos.current_handle_pointer, ptr, Geos::Tools.bool_to_int(@trim))
end
write(geom, options = nil) click to toggle source

Options can be set temporarily for individual writes using an options Hash. Options include :trim, :old_3d, :rounding_precision and :output_dimensions

# File lib/ffi-geos/wkt_writer.rb, line 38
def write(geom, options = nil)
  unless options.nil?
    old_options = {
      trim: trim,
      old_3d: old_3d,
      rounding_precision: rounding_precision,
      output_dimensions: output_dimensions
    }

    set_options(options)
  end

  FFIGeos.GEOSWKTWriter_write_r(Geos.current_handle_pointer, ptr, geom.ptr)
ensure
  set_options(old_options) unless options.nil?
end