class Proj::Coordinate

A four dimensional coordinate of double values.

For most geographic CRSes, the units will be in degrees.

Public Class Methods

from_coord(pj_coord) click to toggle source
# 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
new(x: nil, y: nil, z: nil, t: nil, u: nil, v: nil, w: nil, lam: nil, phi: nil, lat: nil, lon: nil, s: nil, a1: nil, a2: nil, o: nil, p: nil, k: nil, e: nil, n: nil) click to toggle source

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

==(other) click to toggle source
# File lib/proj/coordinate.rb, line 88
def ==(other)
  @coord.eql?(other.instance_variable_get(:@coord))
end
a1() click to toggle source

Returns a1 coordinate

@return [Float]

# File lib/proj/coordinate.rb, line 263
def a1
  @coord[:v][1]
end
a2() click to toggle source

Returns a2 coordinate

@return [Float]

# File lib/proj/coordinate.rb, line 270
def a2
  @coord[:v][2]
end
e() click to toggle source

Returns e coordinate

@return [Float]

# File lib/proj/coordinate.rb, line 242
def e
  @coord[:v][0]
end
enu() click to toggle source
# File lib/proj/coordinate.rb, line 92
def enu
  @coord[:enu]
end
eql?(other) click to toggle source
# File lib/proj/coordinate.rb, line 84
def eql?(other)
  @coord == other.instance_variable_get(:@coord)
end
geod() click to toggle source
# File lib/proj/coordinate.rb, line 96
def geod
  @coord[:geod]
end
k() click to toggle source

Returns k coordinate

@return [Float]

# File lib/proj/coordinate.rb, line 235
def k
  @coord[:v][3]
end
lam() click to toggle source

Returns lam coordinate

@return [Float]

# File lib/proj/coordinate.rb, line 207
def lam
  @coord[:v][0]
end
lat() click to toggle source

Returns latitude coordinate

@return [Float]

# File lib/proj/coordinate.rb, line 200
def lat
  @coord[:v][1]
end
lon() click to toggle source

Returns longitude coordinate

@return [Float]

# File lib/proj/coordinate.rb, line 193
def lon
  @coord[:v][0]
end
lp() click to toggle source
# File lib/proj/coordinate.rb, line 100
def lp
  @coord[:lp]
end
lpz() click to toggle source
# File lib/proj/coordinate.rb, line 104
def lpz
  @coord[:lpz]
end
lpzt() click to toggle source
# File lib/proj/coordinate.rb, line 108
def lpzt
  @coord[:lpzt]
end
n() click to toggle source

Returns n coordinate

@return [Float]

# File lib/proj/coordinate.rb, line 249
def n
  @coord[:v][1]
end
o() click to toggle source

Returns o coordinate

@return [Float]

# File lib/proj/coordinate.rb, line 221
def o
  @coord[:v][0]
end
opk() click to toggle source
# File lib/proj/coordinate.rb, line 112
def opk
  @coord[:opk]
end
p() click to toggle source

Returns p coordinate

@return [Float]

# File lib/proj/coordinate.rb, line 228
def p
  @coord[:v][1]
end
phi() click to toggle source

Returns phi coordinate

@return [Float]

# File lib/proj/coordinate.rb, line 214
def phi
  @coord[:v][1]
end
pj_coord() click to toggle source
# File lib/proj/coordinate.rb, line 80
def pj_coord
  @coord
end
s() click to toggle source

Returns s coordinate

@return [Float]

# File lib/proj/coordinate.rb, line 256
def s
  @coord[:v][0]
end
t() click to toggle source

Returns t coordinate

@return [Float]

# File lib/proj/coordinate.rb, line 164
def t
  @coord[:v][3]
end
to_ptr() click to toggle source
# File lib/proj/coordinate.rb, line 76
def to_ptr
  @coord.to_ptr
end
to_s() click to toggle source

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

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
uv() click to toggle source
# File lib/proj/coordinate.rb, line 116
def uv
  @coord[:uv]
end
uvw() click to toggle source
# File lib/proj/coordinate.rb, line 120
def uvw
  @coord[:uvw]
end
uvwt() click to toggle source
# File lib/proj/coordinate.rb, line 124
def uvwt
  @coord[:uvwt]
end
v() click to toggle source

Returns v coordinate

@return [Float]

# File lib/proj/coordinate.rb, line 179
def v
  @coord[:v][1]
end
w() click to toggle source

Returns w coordinate

@return [Float]

# File lib/proj/coordinate.rb, line 186
def w
  @coord[:v][2]
end
x() click to toggle source

Returns x coordinate

@return [Float]

# File lib/proj/coordinate.rb, line 143
def x
  @coord[:v][0]
end
xy() click to toggle source
# File lib/proj/coordinate.rb, line 128
def xy
  @coord[:xy]
end
xyz() click to toggle source
# File lib/proj/coordinate.rb, line 132
def xyz
  @coord[:xyz]
end
xyzt() click to toggle source
# File lib/proj/coordinate.rb, line 136
def xyzt
  @coord[:xyzt]
end
y() click to toggle source

Returns y coordinate

@return [Float]

# File lib/proj/coordinate.rb, line 150
def y
  @coord[:v][1]
end
z() click to toggle source

Returns z coordinate

@return [Float]

# File lib/proj/coordinate.rb, line 157
def z
  @coord[:v][2]
end