class Proj::Ellipsoid

Public Class Methods

built_in() click to toggle source

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

# 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

Public Instance Methods

inverse_flattening() click to toggle source

Returns the inverse flattening value

@see proj.org/development/reference/functions.html#c.proj_ellipsoid_get_parameters

@return [Float]

# File lib/proj/ellipsoid.rb, line 74
def inverse_flattening
  self.parameters[:inverse_flattening]
end
parameters() click to toggle source

Returns ellipsoid parameters

@see proj.org/development/reference/functions.html#c.proj_ellipsoid_get_parameters

@return [Hash] Hash of ellipsoid parameters. Axes are in meters

# 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_axis() click to toggle source

Returns the semi-major axis in meters

@see proj.org/development/reference/functions.html#c.proj_ellipsoid_get_parameters

@return [Float]

# File lib/proj/ellipsoid.rb, line 47
def semi_major_axis
  self.parameters[:semi_major_axis]
end
semi_minor_axis() click to toggle source

Returns the semi-minor axis in meters

@see proj.org/development/reference/functions.html#c.proj_ellipsoid_get_parameters

@return [Float]

# File lib/proj/ellipsoid.rb, line 56
def semi_minor_axis
  self.parameters[:semi_minor_axis]
end
semi_minor_axis_computed() click to toggle source

Returns whether the semi-minor axis is computed

@see proj.org/development/reference/functions.html#c.proj_ellipsoid_get_parameters

@return [Boolean]

# File lib/proj/ellipsoid.rb, line 65
def semi_minor_axis_computed
  self.parameters[:semi_minor_axis_computed]
end