ISCE_INSAR/components/isceobj/Sensor/MultiMode/Frame.py

165 lines
4.6 KiB
Python
Raw Normal View History

#!/usr/bin/env python3
#Author: Cunren Liang, 2015-
import isce
import datetime
import isceobj
import numpy as np
from iscesys.Component.Component import Component
from iscesys.Traits import datetimeType
####List of parameters
FRAME_NUMBER = Component.Parameter('frameNumber',
public_name = 'frame number',
default = None,
type = str,
mandatory = True,
doc = 'frame number in unpacked file names (not in zip file name!)')
PROCESSING_FACILITY = Component.Parameter('processingFacility',
public_name='processing facility',
default=None,
type = str,
mandatory = False,
doc = 'processing facility information')
PROCESSING_SYSTEM = Component.Parameter('processingSystem',
public_name='processing system',
default=None,
type = str,
mandatory = False,
doc = 'processing system information')
PROCESSING_SYSTEM_VERSION = Component.Parameter('processingSoftwareVersion',
public_name='processing software version',
default=None,
type = str,
mandatory = False,
doc = 'processing system software version')
ORBIT_QUALITY = Component.Parameter('orbitQuality',
public_name='orbit quality',
default=None,
type = str,
mandatory = False,
doc = 'orbit quality. 0: preliminary, 1: decision, 2: high precision')
#note that following parameters consider range/azimuth number of looks in interferogram formation
#except: rangeSamplingRate, prf
NUMBER_OF_SAMPLES = Component.Parameter('numberOfSamples',
public_name='number of samples',
default=None,
type=int,
mandatory=True,
doc='width of the burst slc')
NUMBER_OF_LINES = Component.Parameter('numberOfLines',
public_name='number of lines',
default=None,
type=int,
mandatory=True,
doc='length of the burst slc')
STARTING_RANGE = Component.Parameter('startingRange',
public_name='starting range',
default=None,
type=float,
mandatory=True,
doc='slant range to first pixel in m')
RANGE_SAMPLING_RATE = Component.Parameter('rangeSamplingRate',
public_name = 'range sampling rate',
default = None,
type = float,
mandatory = True,
doc = 'range sampling rate in Hz')
RANGE_PIXEL_SIZE = Component.Parameter('rangePixelSize',
public_name = 'range pixel size',
default = None,
type=float,
mandatory = True,
doc = 'slant range pixel size in m')
SENSING_START = Component.Parameter('sensingStart',
public_name='sensing start',
default=None,
type=datetimeType,
mandatory=True,
doc='UTC time corresponding to first line of swath SLC')
PRF = Component.Parameter('prf',
public_name = 'pulse repetition frequency',
default = None,
type = float,
mandatory = True,
doc = 'pulse repetition frequency in Hz')
AZIMUTH_PIXEL_SIZE = Component.Parameter('azimuthPixelSize',
public_name = 'azimuth pixel size',
default = None,
type=float,
mandatory = True,
doc = 'azimuth pixel size on ground in m')
AZIMUTH_LINE_INTERVAL = Component.Parameter('azimuthLineInterval',
public_name = 'azimuth line interval',
default = None,
type=float,
mandatory = True,
doc = 'azimuth line interval in s')
####List of facilities
SWATHS = Component.Facility('swaths',
public_name='swaths',
module = 'iscesys.Component',
factory = 'createTraitSeq',
args=('swath',),
mandatory = False,
doc = 'trait sequence of swath SLCs')
class Frame(Component):
"""A class to represent a frame"""
family = 'frame'
logging_name = 'isce.frame'
parameter_list = (FRAME_NUMBER,
PROCESSING_FACILITY,
PROCESSING_SYSTEM,
PROCESSING_SYSTEM_VERSION,
ORBIT_QUALITY,
NUMBER_OF_SAMPLES,
NUMBER_OF_LINES,
STARTING_RANGE,
RANGE_SAMPLING_RATE,
RANGE_PIXEL_SIZE,
SENSING_START,
PRF,
AZIMUTH_PIXEL_SIZE,
AZIMUTH_LINE_INTERVAL
)
facility_list = (SWATHS,)
def __init__(self,name=''):
super(Frame, self).__init__(family=self.__class__.family, name=name)
return None
def clone(self):
import copy
res = copy.deepcopy(self)
res.image._accessor = None
res.image._factory = None
return res