Class: Proj::Ellipsoid

Inherits:
PjObject show all
Defined in:
lib/proj/ellipsoid.rb

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from PjObject

#accuracy, #angular_input?, #angular_output?, #area_of_use, #auth, #auth_name, #context, #context=, create, create_from_database, create_from_name, create_from_wkt, #definition, #degree_input?, #degree_output?, #deprecated?, #description, #equivalent_to?, #errno, #errorno, #factors, #geod_distance, #has_inverse?, #id, #id_code, #info, #initialize, #initialize_copy, #lp_distance, #lpz_distance, #name, #non_deprecated, #proj_type, #remarks, #scope, #source_crs, #target_crs, #to_json, #to_proj_string, #to_ptr, #to_s, #to_wkt, #xy_distance, #xyz_distance

Constructor Details

This class inherits a constructor from Proj::PjObject

Class Method Details

.built_inObject

Returns a list of ellipsoids that are built into Proj. A more comprehensive list is stored in the Proj database and can be queried via PjObject#create_from_database



5
6
7
8
9
10
11
12
13
14
15
# File 'lib/proj/ellipsoid.rb', line 5

def self.built_in
  pointer_to_array = FFI::Pointer.new(Api::PJ_ELLPS, Api.proj_list_ellps)

  result = Array.new
  0.step do |i|
    pj_ellps = Api::PJ_ELLPS.new(pointer_to_array[i])
    break result if pj_ellps[:id].nil?
    result << pj_ellps
  end
  result
end

Instance Method Details

#inverse_flatteningFloat

Returns the inverse flattening value



74
75
76
# File 'lib/proj/ellipsoid.rb', line 74

def inverse_flattening
  self.parameters[:inverse_flattening]
end

#parametersHash

Returns ellipsoid parameters

Returns:

  • (Hash)

    Hash of ellipsoid parameters. Axes are in meters

See Also:



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/proj/ellipsoid.rb', line 22

def parameters
  @parameters ||= begin
    out_semi_major_metre = FFI::MemoryPointer.new(:double)
    out_semi_minor_metre = FFI::MemoryPointer.new(:double)
    out_is_semi_minor_computed = FFI::MemoryPointer.new(:int)
    out_inv_flattening = FFI::MemoryPointer.new(:double)

    result = Api.proj_ellipsoid_get_parameters(self.context, self, out_semi_major_metre, out_semi_minor_metre, out_is_semi_minor_computed, out_inv_flattening)

    if result != 1
      Error.check_object(self)
    end

    {semi_major_axis: out_semi_major_metre.read_double,
     semi_minor_axis: out_semi_minor_metre.read_double,
     semi_minor_axis_computed: out_is_semi_minor_computed.read_int == 1 ? true : false,
     inverse_flattening: out_inv_flattening.null? ? nil : out_inv_flattening.read_double}
  end
end

#semi_major_axisFloat

Returns the semi-major axis in meters



47
48
49
# File 'lib/proj/ellipsoid.rb', line 47

def semi_major_axis
  self.parameters[:semi_major_axis]
end

#semi_minor_axisFloat

Returns the semi-minor axis in meters



56
57
58
# File 'lib/proj/ellipsoid.rb', line 56

def semi_minor_axis
  self.parameters[:semi_minor_axis]
end

#semi_minor_axis_computedBoolean

Returns whether the semi-minor axis is computed



65
66
67
# File 'lib/proj/ellipsoid.rb', line 65

def semi_minor_axis_computed
  self.parameters[:semi_minor_axis_computed]
end