ISCE_INSAR/components/isceobj/Location/test/test_sch.py

51 lines
1.9 KiB
Python
Raw Normal View History

2019-01-16 19:40:08 +00:00
import unittest
from isceobj.Location.Peg import Peg
from isceobj.Location.SCH import SCH
from isceobj.Planet.AstronomicalHandbook import PlanetsData
from isceobj.Planet.Ellipsoid import Ellipsoid
class SCHTest(unittest.TestCase):
def setUp(self):
ellipsoid = Ellipsoid(a=PlanetsData.ellipsoid['Earth']['WGS-84'][0],
e2=PlanetsData.ellipsoid['Earth']['WGS-84'][1])
peg = Peg(latitude=30.0,longitude=60.0,heading=45.0,ellipsoid=ellipsoid)
self.xyz = ellipsoid.llh_to_xyz([30.1, 59.5, 650000.0])
self.sch = SCH(peg=peg)
def tearDown(self):
pass
def testInitializeTranslationVector(self):
ans = [6968.2018617638387, 12069.279662064277, -13320.537019955460]
self.sch.initializeTranslationVector()
tvec = self.sch.r_ov
for i in range(3):
self.assertAlmostEquals(tvec[i],ans[i],5)
def testInitializeRotationMatrix(self):
ans = [[0.43301270188924235, -0.78914913099422490,0.43559574039886773],
[0.75000000000073663, 4.73671727434728518E-002, -0.65973960844047030],
[0.50000000000147327, 0.61237243569363053, 0.61237243569675559]]
self.sch.initializeRotationMatrix()
rotmat = self.sch.M
for i in range(3):
for j in range(3):
self.assertAlmostEquals(rotmat[i][j],ans[i][j],5)
def testXYZToSCH(self):
ans = [-26156.370014733548, 41985.355842714926, 650000.43586986139]
sch = self.sch.xyz_to_sch(self.xyz)
for i in range(3):
self.assertAlmostEquals(sch[i],ans[i],5)
def testSCHToXYZ(self):
ans = self.xyz
xyz = self.sch.sch_to_xyz([-26156.370014733548, 41985.355842714926, 650000.43586986139])
for i in range(3):
self.assertAlmostEquals(xyz[i],ans[i],5)
if __name__ == "__main__":
unittest.main()