Class: GeoDistance

Inherits:
Object
  • Object
show all
Extended by:
ClassMethods
Includes:
Comparable, Conversion, GeoUnits
Defined in:
lib/geo-distance/formula/spherical.rb,
lib/geo-distance.rb,
lib/geo-distance/scale.rb,
lib/geo-distance/formula.rb,
lib/geo-distance/distance.rb,
lib/geo-distance/conversion.rb,
lib/geo-distance/formula/flat.rb,
lib/geo-distance/class_methods.rb,
lib/geo-distance/formula/n_vector.rb,
lib/geo-distance/formula/vincenty.rb,
lib/geo-distance/conversion/meters.rb,
lib/geo-distance/formula/haversine.rb,
lib/geo-distance/conversion/radians.rb

Overview

module GeoDistance

class Spherical < DistanceFormula
  def self.distance( lat1, lon1, lat2, lon2) 
    from_longitude  = lon1.to_radians
    from_latitude   = lat1.to_radians
    to_longitude    = lon2.to_radians
    to_latitude     = lat2.to_radians

    c = Math.acos(
        Math.sin(from_latitude) *
        Math.sin(to_latitude) +

        Math.cos(from_latitude) * 
        Math.cos(to_latitude) *
        Math.cos(to_longitude - from_longitude)
    ) #* EARTH_RADIUS[units.to_sym]

    GeoDistance::Distance.new c
  end
end

end

Defined Under Namespace

Modules: ClassMethods, Conversion, Scale Classes: DistanceFormula, Flat, Haversine, NVector, Spherical, Vincenty

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from ClassMethods

algorithms, all_units, default_algorithm, default_algorithm=, default_units, default_units=, earth_radius, radians_per_degree, radians_ratio

Methods included from Conversion

included

Constructor Details

#initialize(distance, unit = :radians) ⇒ GeoDistance

Returns a new instance of GeoDistance.



10
11
12
13
# File 'lib/geo-distance/distance.rb', line 10

def initialize distance, unit = :radians
  @distance = distance
  @unit = GeoUnits.key(unit)
end

Instance Attribute Details

#distanceObject

Returns the value of attribute distance.



8
9
10
# File 'lib/geo-distance/distance.rb', line 8

def distance
  @distance
end

#unitObject Also known as: units

Returns the value of attribute unit.



8
9
10
# File 'lib/geo-distance/distance.rb', line 8

def unit
  @unit
end

Instance Method Details

#<=>(other) ⇒ Object



17
18
19
# File 'lib/geo-distance/distance.rb', line 17

def <=> other
   in_meters <=> other.in_meters
end

#numberObject



21
22
23
# File 'lib/geo-distance/distance.rb', line 21

def number
  distance.round_to(precision[unit])
end