class Proj::Coordinate
A four dimensional coordinate of double values.
For most geographic CRSes, the units will be in degrees.
Public Class Methods
# File lib/proj/coordinate.rb, line 8 def self.from_coord(pj_coord) result = self.allocate result.instance_variable_set(:@coord, pj_coord) result end
Creates a new coordinate.
@example
coord = Proj::Coordinate.new(:x => 1, :y => 2, :z => 3, :t => 4) coord = Proj::Coordinate.new(:u => 5, :v => 6, :w => 7, :t => 8) coord = Proj::Coordinate.new(:lam => 9, :phi => 10, :z => 11, :t => 12) coord = Proj::Coordinate.new(:lon => 9, :lat => 10, :z => 11, :t => 12) coord = Proj::Coordinate.new(:s => 13, :a1 => 14, :a2 => 15) coord = Proj::Coordinate.new(:o => 16, :p => 17, :k => 18) coord = Proj::Coordinate.new(:e => 19, :n => 20, :u => 21)
# File lib/proj/coordinate.rb, line 26 def initialize(x: nil, y: nil, z: nil, t: nil, u: nil, v: nil, w: nil, # t: nil lam: nil, phi: nil, # z: nil, t: nil, lat: nil, lon: nil, # z: nil, t: nil, s: nil, a1: nil, a2: nil, o: nil, p: nil, k: nil, e: nil, n: nil) #u: nil @coord = Api::PJ_COORD.new keys = if x && y && z && t [:x, :y, :z, :t] elsif x && y && z [:x, :y, :z] elsif x && y [:x, :y] elsif u && v && w && t [:u, :v, :w, :t] elsif u && v && w [:u, :v, :w] elsif u && v [:u, :v] elsif lam && phi && z && t [:lam, :phi, :z, :t] elsif lam && phi && z [:lam, :phi, :z] elsif lam && phi [:lam, :phi] elsif lon && lat && z && t [:lon, :lat, :z, :t] elsif lon && lat && z [:lon, :lat, :z] elsif lon && lat [:lon, :lat] elsif s && a1 && a2 [:s, :a1, :a2] elsif e && n && u [:e, :n, :u] elsif o && p && k [:o, :p, :k] else [] end coord_struct = @coord[:v] keys.each_with_index do |key, index| coord_struct[index] = binding.local_variable_get(key) end end
Public Instance Methods
# File lib/proj/coordinate.rb, line 88 def ==(other) @coord.eql?(other.instance_variable_get(:@coord)) end
Returns a1 coordinate
@return [Float]
# File lib/proj/coordinate.rb, line 263 def a1 @coord[:v][1] end
Returns a2 coordinate
@return [Float]
# File lib/proj/coordinate.rb, line 270 def a2 @coord[:v][2] end
Returns e coordinate
@return [Float]
# File lib/proj/coordinate.rb, line 242 def e @coord[:v][0] end
# File lib/proj/coordinate.rb, line 92 def enu @coord[:enu] end
# File lib/proj/coordinate.rb, line 84 def eql?(other) @coord == other.instance_variable_get(:@coord) end
# File lib/proj/coordinate.rb, line 96 def geod @coord[:geod] end
Returns k coordinate
@return [Float]
# File lib/proj/coordinate.rb, line 235 def k @coord[:v][3] end
Returns lam coordinate
@return [Float]
# File lib/proj/coordinate.rb, line 207 def lam @coord[:v][0] end
Returns latitude coordinate
@return [Float]
# File lib/proj/coordinate.rb, line 200 def lat @coord[:v][1] end
Returns longitude coordinate
@return [Float]
# File lib/proj/coordinate.rb, line 193 def lon @coord[:v][0] end
# File lib/proj/coordinate.rb, line 100 def lp @coord[:lp] end
# File lib/proj/coordinate.rb, line 104 def lpz @coord[:lpz] end
# File lib/proj/coordinate.rb, line 108 def lpzt @coord[:lpzt] end
Returns n coordinate
@return [Float]
# File lib/proj/coordinate.rb, line 249 def n @coord[:v][1] end
Returns o coordinate
@return [Float]
# File lib/proj/coordinate.rb, line 221 def o @coord[:v][0] end
# File lib/proj/coordinate.rb, line 112 def opk @coord[:opk] end
Returns p coordinate
@return [Float]
# File lib/proj/coordinate.rb, line 228 def p @coord[:v][1] end
Returns phi coordinate
@return [Float]
# File lib/proj/coordinate.rb, line 214 def phi @coord[:v][1] end
# File lib/proj/coordinate.rb, line 80 def pj_coord @coord end
Returns s coordinate
@return [Float]
# File lib/proj/coordinate.rb, line 256 def s @coord[:v][0] end
Returns t coordinate
@return [Float]
# File lib/proj/coordinate.rb, line 164 def t @coord[:v][3] end
# File lib/proj/coordinate.rb, line 76 def to_ptr @coord.to_ptr end
Returns nice printout of coordinate contents
@return [String]
# File lib/proj/coordinate.rb, line 277 def to_s "v0: #{self.x}, v1: #{self.y}, v2: #{self.z}, v3: #{self.t}" end
Returns u coordinate
@return [Float] TODO - This could be u in uvw or enu. Going to ignore that
# File lib/proj/coordinate.rb, line 172 def u @coord[:v][0] end
# File lib/proj/coordinate.rb, line 116 def uv @coord[:uv] end
# File lib/proj/coordinate.rb, line 120 def uvw @coord[:uvw] end
# File lib/proj/coordinate.rb, line 124 def uvwt @coord[:uvwt] end
Returns v coordinate
@return [Float]
# File lib/proj/coordinate.rb, line 179 def v @coord[:v][1] end
Returns w coordinate
@return [Float]
# File lib/proj/coordinate.rb, line 186 def w @coord[:v][2] end
Returns x coordinate
@return [Float]
# File lib/proj/coordinate.rb, line 143 def x @coord[:v][0] end
# File lib/proj/coordinate.rb, line 128 def xy @coord[:xy] end
# File lib/proj/coordinate.rb, line 132 def xyz @coord[:xyz] end
# File lib/proj/coordinate.rb, line 136 def xyzt @coord[:xyzt] end
Returns y coordinate
@return [Float]
# File lib/proj/coordinate.rb, line 150 def y @coord[:v][1] end
Returns z coordinate
@return [Float]
# File lib/proj/coordinate.rb, line 157 def z @coord[:v][2] end