165 lines
4.6 KiB
Python
165 lines
4.6 KiB
Python
|
#!/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
|