Class: Geos::WkbReader

Inherits:
Object
  • Object
show all
Includes:
Tools
Defined in:
lib/ffi-geos/wkb_reader.rb

Defined Under Namespace

Classes: ParseError

Constant Summary

Constants included from GeomTypes

GeomTypes::GEOS_GEOMETRYCOLLECTION, GeomTypes::GEOS_LINEARRING, GeomTypes::GEOS_LINESTRING, GeomTypes::GEOS_MULTILINESTRING, GeomTypes::GEOS_MULTIPOINT, GeomTypes::GEOS_MULTIPOLYGON, GeomTypes::GEOS_POINT, GeomTypes::GEOS_POLYGON

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Tools

#bool_result, #bool_to_int, #cast_geometry_ptr, #check_enum_value, #check_geometry, #extract_options!, #pick_srid_according_to_policy, #pick_srid_from_geoms, #symbol_for_enum

Constructor Details

#initialize(*args) ⇒ WkbReader

Returns a new instance of WkbReader.



12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/ffi-geos/wkb_reader.rb', line 12

def initialize(*args)
  ptr = if args.first.is_a?(FFI::Pointer)
    args.first
  else
    FFIGeos.GEOSWKBReader_create_r(Geos.current_handle_pointer, *args)
  end

  @ptr = FFI::AutoPointer.new(
    ptr,
    self.class.method(:release)
  )
end

Instance Attribute Details

#ptrObject (readonly)

Returns the value of attribute ptr.



7
8
9
# File 'lib/ffi-geos/wkb_reader.rb', line 7

def ptr
  @ptr
end

Class Method Details

.release(ptr) ⇒ Object

:nodoc:



37
38
39
# File 'lib/ffi-geos/wkb_reader.rb', line 37

def self.release(ptr) # :nodoc:
  FFIGeos.GEOSWKBReader_destroy_r(Geos.current_handle_pointer, ptr)
end

Instance Method Details

#read(wkb, options = {}) ⇒ Object



25
26
27
28
29
# File 'lib/ffi-geos/wkb_reader.rb', line 25

def read(wkb, options = {})
  cast_geometry_ptr(FFIGeos.GEOSWKBReader_read_r(Geos.current_handle_pointer, ptr, wkb, wkb.bytesize), srid: options[:srid])
rescue Geos::GEOSException => e
  raise ParseError, e
end

#read_hex(wkb, options = {}) ⇒ Object



31
32
33
34
35
# File 'lib/ffi-geos/wkb_reader.rb', line 31

def read_hex(wkb, options = {})
  cast_geometry_ptr(FFIGeos.GEOSWKBReader_readHEX_r(Geos.current_handle_pointer, ptr, wkb, wkb.bytesize), srid: options[:srid])
rescue Geos::GEOSException => e
  raise ParseError, e
end