Class: GDAL::Transformers::GCPTransformer

Inherits:
Object
  • Object
show all
Defined in:
lib/gdal/transformers/gcp_transformer.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(gcp_list, requested_polynomial_order, reversed: false, tolerance: nil, minimum_gcps: nil) ⇒ GCPTransformer

Returns a new instance of GCPTransformer.

Parameters:

  • gcp_list (Array<FFI::GDAL::GCP>)
  • requested_polynomial_order (Integer)

    1, 2, or 3.

  • reversed (Boolean) (defaults to: false)


24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/gdal/transformers/gcp_transformer.rb', line 24

def initialize(gcp_list, requested_polynomial_order, reversed: false, tolerance: nil, minimum_gcps: nil)
  gcp_list_ptr = FFI::MemoryPointer.new(:pointer, gcp_list.size)

  # TODO: fasterer: each_with_index is slower than loop
  gcp_list.each_with_index do |gcp, i|
    gcp_list_ptr[i].put_pointer(0, gcp.to_ptr)
  end

  pointer = if tolerance || minimum_gcps
              FFI::GDAL::Alg.GDALCreateGCPRefineTransformer(
                gcp_list.size,
                gcp_list_ptr,
                requested_polynomial_order,
                reversed
              )
            else
              FFI::GDAL::Alg.GDALCreateGCPTransformer(
                gcp_list.size,
                gcp_list_ptr,
                requested_polynomial_order,
                reversed
              )
            end

  @c_pointer = FFI::AutoPointer.new(pointer, GCPTransformer.method(:release))
end

Instance Attribute Details

#c_pointerFFI::Pointer (readonly)

Returns C pointer to the GCP transformer.

Returns:

  • (FFI::Pointer)

    C pointer to the GCP transformer.



19
20
21
# File 'lib/gdal/transformers/gcp_transformer.rb', line 19

def c_pointer
  @c_pointer
end

Class Method Details

.functionFFI::Function

Returns:

  • (FFI::Function)


7
8
9
# File 'lib/gdal/transformers/gcp_transformer.rb', line 7

def self.function
  FFI::GDAL::Alg::GCPTransform
end

.release(pointer) ⇒ Object

Parameters:

  • pointer (FFI::Pointer)


12
13
14
15
16
# File 'lib/gdal/transformers/gcp_transformer.rb', line 12

def self.release(pointer)
  return unless pointer && !pointer.null?

  FFI::GDAL::Alg.GDALDestroyGCPTransformer(pointer)
end

Instance Method Details

#destroy!Object



51
52
53
54
55
# File 'lib/gdal/transformers/gcp_transformer.rb', line 51

def destroy!
  GCPTransformer.release(@c_pointer)

  @c_pointer = nil
end

#functionFFI::Function

Returns:

  • (FFI::Function)


58
59
60
# File 'lib/gdal/transformers/gcp_transformer.rb', line 58

def function
  self.class.function
end