ISCE_INSAR/components/isceobj/Sensor/ReadOrbitPulseERS.py

175 lines
6.2 KiB
Python
Raw Normal View History

2019-01-16 19:40:08 +00:00
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Copyright 2012 California Institute of Technology. ALL RIGHTS RESERVED.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# United States Government Sponsorship acknowledged. This software is subject to
# U.S. export control laws and regulations and has been classified as 'EAR99 NLR'
# (No [Export] License Required except when exporting to an embargoed country,
# end user, or in support of a prohibited end use). By downloading this software,
# the user agrees to comply with all applicable U.S. export laws and regulations.
# The user has the responsibility to obtain export licenses, or other export
# authority as may be required before exporting this software to any 'EAR99'
# embargoed foreign country or citizen of those countries.
#
# Author: Giangi Sacco
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
from __future__ import print_function
from iscesys.Component import Component,Port
from iscesys.Compatibility import Compatibility
from Sensor.readOrbitPulseERS import readOrbitPulseERS
from iscesys.Component.Component import Component, Port
class ReadOrbitPulseERS(Component):
def readOrbitPulseERS(self):
for port in self._inputPorts:
method = port.getMethod()
method()
self.setState()
readOrbitPulseERS.readOrbitPulseERS_Py()
self.getState()
return None
def setState(self):
readOrbitPulseERS.setWidth_Py(int(self.width))
readOrbitPulseERS.setICUoffset_Py(int(self.ICU_OFFSET))
readOrbitPulseERS.setNumberLines_Py(int(self.NUMBER_LINES))
readOrbitPulseERS.setSatelliteUTC_Py(float(self.satelliteUTC))
readOrbitPulseERS.setPRF_Py(float(self.PRF))
readOrbitPulseERS.setDeltaClock_Py(float(self.DELTA_CLOCK))
readOrbitPulseERS.setEncodedBinaryTimeCode_Py(float(self.DELTA_CLOCK))
return None
def setWidth(self,var):
self.width = int(var)
return
def setICUoffset(self,var):
self.icuOffset = int(var)
return
def setNumberLines(self,var):
self.numberLines = int(var)
return
def setSatelliteUTC(self,var):
self.satelliteUTC = float(var)
return
def setPRF(self,var):
self.prf = float(var)
return
def setDeltaClock(self,var):
self.deltaClock = float(var)
return
def setEncodedBinaryTimeCode(self,var):
self.encodedBinaryTimeCode = int(var)
return
def setRawImage(self,var):
self.rawImage = var
return
def getState(self):
self.startingTime = readOrbitPulseERS.getStartingTime_Py()
return
def getStartingTime(self):
return self.startingTime
def addRawImage(self):
image = self._inputPorts.getPort('rawImage').getObject()
if (image):
if (isinstance(image,Image)):
self.rawImage = image
self.width = self.rawImage.getWidth()
else:
self.logger.error("Object %s must be an instance of Image" % (image))
raise TypeError
def addInstrument(self):
instrument = self._inputPorts.getPort('instrument').getObject()
if(instrument):
try:
self.prf = instrument.getPulseRepetitionFrequency()
except AttributeError as strerr:
self.logger.error(strerr)
raise AttributeError("Unable to wire instrument port")
def addMetadata(self):
metadata = self._inputPorts.getPort('metadata').getObject()
if(metadata):
try:
self.satelliteUTC = datetime.datetime.strptime(metadata['Satellite clock time'],"%Y%m%d%H%M%S%f")
self.encodedBinaryTimeCode = metadata['Satellite encoded binary time code']
self.deltaClock = metadata['Satellite clock step length']*10**-9
except AttributeError as strerr:
self.logger.error(strerr)
raise AttributeError("Unable to wire instrument port")
logging_name = 'isceobj.Sensor.ReadOrbitPulseERS'
def __init__(self):
super(ReadOrbitPulseERS, self).__init__()
self.encodedBinaryTimeCode = None
self.rawImage = None
self.width = None
self.icuOffset = None
self.numberLines = None
self.satelliteUTC = None
self.prf = None
self.deltaClock = None
self.startingTime = None
self.dictionaryOfVariables = {
'ENCODED_BINARY_TIME_CODE' : ['encodedBinaryTimeCode',
'int',
'optional'],
'WIDTH' : ['width', 'int','optional'],
'ICU_OFFSET' : ['icuOffset', 'int','optional'],
'NUMBER_LINES' : ['numberLines', 'int','optional'],
'SATELLITE_UTC' : ['satelliteUTC', 'float','mandatory'],
'PRF' : ['prf', 'float','mandatory'],
'DELTA_CLOCK' : ['deltaClock', 'float','mandatory']
}
self.dictionaryOfOutputVariables = {
'STARTING_TIME' : 'startingTime'
}
self.descriptionOfVariables = {}
self.mandatoryVariables = []
self.optionalVariables = []
self.initOptionalAndMandatoryLists()
return None
def createPorts(self):
rawImagePort = Port(name='rawImage',method=self.addRawImage)
instrumentPort = Port(name='instrument',method=self.addInstrument)
metaPort = Port(name='metadata',method=self.addMetadata)
self._inputPorts.add(rawImagePort)
self._inputPorts.add(instrumentPort)
self._inputPorts.add(metaPort)
return None