Документ взят из кэша поисковой машины. Адрес оригинального документа : http://www.apo.nmsu.edu/Telescopes/TCC/html/convert_8py_source.html
Дата изменения: Tue Sep 15 02:25:37 2015
Дата индексирования: Sun Apr 10 01:04:24 2016
Кодировка:
lsst.tcc: python/tcc/cmd/convert.py Source File
lsst.tcc  1.2.2-3-g89ecb63
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
convert.py
Go to the documentation of this file.
1 from __future__ import division, absolute_import
2 
3 import coordConv
4 
5 import tcc.base
6 from twistedActor import CommandError
7 from tcc.axis import computeObj, coordConvWithFP
8 from tcc.msg import formatPVT, formatPVTList, formatPxPMRadVel
9 from tcc.parse import getCoordSys, getPVTPairPxPMRadVel
10 
11 __all__ = ["convert"]
12 
13 _BadCoordSysNameList = ("mount", "none")
14 _BadCoordSysNameLCSet = set(csName.lower() for csName in _BadCoordSysNameList)
15 _BadCoordSysDescr = " or ".join(_BadCoordSysNameList)
16 del _BadCoordSysNameList # avoid accidental misuse when _BadCoordSysNameLCSet is wanted
17 
18 def convert(tccActor, userCmd):
19  """Implement the convert command
20 
21  @param[in] tccActor tcc actor
22  @param[in] userCmd convert command
23  """
24  parsedCmd = userCmd.parsedCmd
25  qualDict = parsedCmd.qualDict
26 
27  currTAI = tcc.base.tai()
28 
29  # use a copy of obj so we can safely update it at current time
30  # and even swap obj.site if using GS wavelength
31  obj = tcc.base.Obj(tccActor.obj)
32 
33  useGSWavelen = qualDict["usegswavelength"].boolValue
34  zeroPM = qualDict["zpm"].boolValue
35 
36  fromPVTPair, fromPxPMRadVel = getPVTPairPxPMRadVel(parsedCmd=parsedCmd, coordName="fromcoords", defTAI=currTAI)
37  if fromPVTPair is None:
38  raise CommandError("Must specify from position")
39  convTAI = fromPVTPair[0].t # TAI date at which to convert
40  fromCoordSys = getCoordSys(param=parsedCmd.paramDict["fromsys"])
41  if fromCoordSys is None:
42  raise CommandError("Must specify from coordinate system")
43  toCoordSys = getCoordSys(param=parsedCmd.paramDict["tosys"])
44  if toCoordSys is None:
45  toCoordSys = fromCoordSys
46 
47  if fromCoordSys.getName().lower() in _BadCoordSysNameLCSet:
48  raise CommandError("Invalid fromSys=%r: cannot convert from %s" % (fromCoordSys.getName(), _BadCoordSysDescr))
49  if toCoordSys.getName().lower() in _BadCoordSysNameLCSet:
50  raise CommandError("Invalid toSys=%r: cannot convert to %s" % (toCoordSys.getName(), _BadCoordSysDescr))
51 
52  fromDir = coordConv.PVT(0, 0, convTAI) # might want to make this a user input (single value; vel!=0 is silly)
53 
54  # update object block so focal-plane math is correct
55  computeObj(
56  obj = obj,
57  doWrap = False,
58  doRestart = [True]*tcc.base.NAxes,
59  reportLim = False,
60  earth = tccActor.earth,
61  inst = tccActor.inst,
62  telMod = tccActor.telMod,
63  axeLim = tccActor.axeLim,
64  tai = convTAI,
65  )
66 
67  toPVTPair, toPxPMRadVel, toDir, scaleChange = coordConvWithFP(
68  fromCoordSys = fromCoordSys,
69  fromPVTPair = fromPVTPair,
70  fromPxPMRadVel = fromPxPMRadVel,
71  fromDir = fromDir,
72  toCoordSys = toCoordSys,
73  obj = obj,
74  inst = tccActor.inst,
75  zeroPM = zeroPM,
76  useGSWavelen = useGSWavelen,
77  )
78  toFromAng = toDir - fromDir
79 
80  msgStrList = [
81  "ConvPos=" + formatPVTList(toPVTPair),
82  "ConvAng=" + formatPVT(toFromAng),
83  "ConvPM=" + formatPxPMRadVel(toPxPMRadVel),
84  ]
85  msgStr = "; ".join(msgStrList)
86  userCmd.setState(userCmd.Done, hubMsg=msgStr)
def formatPVTList
Format a sequence of PVTs.
def getPVTPairPxPMRadVel
Obtain object data from a parsed command, and perform some sanity checks.
def getCoordSys
Obtain a coordinate system from a parsed parameter.
Definition: getCoordSys.py:31
def formatPVT
Format a single PVT.
def coordConvWithFP
Convert a coord from one coordinate system to another.
def computeObj
Compute all computed obj fields from user-specified fields except path generator outputs.
Definition: computeObj.py:22
def formatPxPMRadVel
Format a pxPMRadVel.