split range spectrum of TerraSAR data(error to high/low band interferogram)

Added by Yahui Chong 2 months ago

I use the stripmapApp.py module(split range spectrum) to deal with the TerraSAR data, I can get the high band data and low band data , but the high band interferigram and the low band interferogram seems wrong. Then I use the ALOS1.0 data (the same area as TerraSAR) to do the split range spectrum, I can get the right high/low band interferogram. Does anyone know why this is? Does the split range spectrum is not support TerraSAR data? The attachment is the interferogram of TerraSAR(full-band、high-band、low-band) and my stripmapApp.xml.


Replies (16)

RE: split range spectrum of TerraSAR data(error to high/low band interferogram) - Added by Heresh Fattahi 2 months ago

Which interferogram is in the attachement? wrapped or unwrapped? if this is unwrapped, how the wrapped interferograms look like?

Heresh

RE: split range spectrum of TerraSAR data(error to high/low band interferogram) - Added by Yahui Chong 2 months ago

Thank you for your reply! The interferogram is the wrapped, the high/low band wrapped interferogram seems not generated, the whole scene is the red background.

RE: split range spectrum of TerraSAR data(error to high/low band interferogram) - Added by Heresh Fattahi about 1 month ago

How does the "amplitude" of sub-band SLCs look like?

Heresh

RE: split range spectrum of TerraSAR data(error to high/low band interferogram) - Added by Yahui Chong about 1 month ago

I found that the high/low band SLCs's amplitude is not genarated, so I think the high/low band SLCs is not generated. But I use the ALOS1.0 data I can get the right outcomes, so I suspect the split range spectrum module is not support the TerraSAR data.

RE: split range spectrum of TerraSAR data(error to high/low band interferogram) - Added by Heresh Fattahi about 1 month ago

what do you mean "amplitude" is not generated? the sub-band SLCs are not there? Or the sub-band SLCs exist and they are all zero?
Those are different.

In stripmpaApp, once SLCs are focused (or extracted), then there is no different between different stripmap sensors. If the module works for ALOS-1, it should also work for other stripmap data. Therefore I suspect that the range spectrum of your TSX data is not consistent with the metadata. A plot of the range spectrum would confirm that.

To be more clear, the stripmapApp divides the spectrum to three parts and takes 1/3 of each end. If your data has lower bandwidth than what stated in the metadata (ie., the data is oversapled and there is only half of the spectrum exist), then the 1/3 of the spectrum will be on the zero part. In that case you need to know your data and split the spectrum such that there is data at the sub-bands. The split-spectrum module itself is flexible and an advanced user should be able to split the spectrum as needed. We need at least a plot of range spectrum to better understand the source of your problem.

Heresh

RE: split range spectrum of TerraSAR data(error to high/low band interferogram) - Added by Yahui Chong about 1 month ago

Thank you very much for your reply! The high/band SLCs files is exit, but their values are all zero. I found in the ALOS's split_range_spectrun xml file(in the folder"PICKLE"), the property name= mastergeometrysystem is "Native Doppler", while in the TerraSAR's split_range_spectrum xml file, the property name= mastergeometrysystem is "Zero Doppler". I'm not sure if this is what you have mentioned in your reply. I don't clear what you have said in your reply the "a plot of range spectrum", where I can find the information about the "a plot of range spectrum" about my data? Can you tell me what parameters need to be set in the split_range_spectrum module? I am looking forward to your reply! Thank you very much!

The attachment is the high/low band amplitude、the full band SLC's xml files and the stripmapProc.xml.

RE: split range spectrum of TerraSAR data(error to high/low band interferogram) - Added by Heresh Fattahi about 1 month ago

There seems to be wrong metadata in the xml files you have attached. In particular the range pulse length and chirp slope don't make sense. They get used in split spectrum step to compute the range bandwidth. Since the metadata is wrong, then the bandwidth is wrong and the wrong part of the spectrum is extracted. This might be a bug with our TSX sensor where we extract chirp slope and pulse length. I'm not still sure where the bug is exactly but we will take a look and keep you posted.

In the meantime I suggest the following workaround to get your processing going while we are looking at the issue:

Depending on where you have installed isce, find this file: components/isceobj/StripmapProc/runSplitSpectrum.py

and do the following modifications.

Replace this line https://github.com/isce-framework/isce2/blob/main/components/isceobj/StripmapProc/runSplitSpectrum.py#L105
with:
B_reference = fs_reference / 1.2

And replace this line:
https://github.com/isce-framework/isce2/blob/main/components/isceobj/StripmapProc/runSplitSpectrum.py#L112

with the following

B_secondary = fs_secondary / 1.2

Heresh

RE: split range spectrum of TerraSAR data(error to high/low band interferogram) - Added by Cunren Liang about 1 month ago

I fixed this issue a few years ago when i tried to process Eric's TerraSAR-X data, but forgot to merge the update to ISCE. Attached is my updated def _populateInstrument(self) in TerraSARX.py. alghouth this was done a few years ago, this function probably has not changed over the years, so it should be OK to merge it to ISCE.

TerraSAR-X does not provide chirp slope and pulse duration. It provides processed range bandwidth instead, from which we can make pseudo chirp slope and pulse duration, e.g. set pulse duration to 1 and compute chirp slope, to fit into the current ISCE format.

Cunren

TerraSARX.py Magnifier (1.9 kB)

RE: split range spectrum of TerraSAR data(error to high/low band interferogram) - Added by Heresh Fattahi about 1 month ago

Thanks Cunren. Since we are only using the chirp parameters to get to the bandwidth, then your solution sounds good to me. It will be great to issue a PR.

Heresh

RE: split range spectrum of TerraSAR data(error to high/low band interferogram) - Added by Cunren Liang about 1 month ago

I will make a pull request together with other updates I made recently.

Cunren

RE: split range spectrum of TerraSAR data(error to high/low band interferogram) - Added by Yahui Chong about 1 month ago

Hi Heresh

Thank you very much for your reply and recommendation! According to your reminder, I checked the xml file of the TerraSAR SLC data , found that in the file the value of "0.2247191011235955" and the value of "pulse length" is 534, the calculated range bandwidth is 120HZ, while the TerraSAR's range bandwidth should be 150MHZ. I will try your advice! Thank you again!

Yahui

RE: split range spectrum of TerraSAR data(error to high/low band interferogram) - Added by Yahui Chong about 1 month ago

Hi Cunren

Thank you very much for your reply and recommendation! According to your reminder, I checked the metadata of the TerraSAR data, and found that in the metedata file it only provide the value of "pulse length "(534), but it don't provide the value of "chirp slope". Thank you very much for the TerraSARX.py file you have provided! I will try your advice!

Yahui

RE: split range spectrum of TerraSAR data(error to high/low band interferogram) - Added by Yahui Chong 23 days ago

Hi Cunren

I adopted your suggestion and modified the TerraSARX.py file, but I meet an error meeange as follows, my isce version is 2.3, Have you ever encountered this situation? Can you give me some suggestions? Thank you very much!

(isceenv) cyh@chongyh:~/TSX$ $ISCE_HOME/applications/stripmapApp.py stripmapApp.xml --start=startup --end=preprocess
This is the Open Source version of ISCE.
Some of the workflows depend on a separate licensed package.
To obtain the licensed package, please make a request for ISCE
through the website: https://download.jpl.nasa.gov/ops/request/index.cfm.
Alternatively, if you are a member, or can become a member of WinSAR
you may be able to obtain access to a version of the licensed sofware at
https://winsar.unavco.org/software/isce
2020-09-06 21:05:59,111 - isce.insar - INFO - ISCE VERSION = 2.3, RELEASE_SVN_REVISION = 2531,RELEASE_DATE = 20190112, CURRENT_SVN_REVISION = 2531
ISCE VERSION = 2.3, RELEASE_SVN_REVISION = 2531,RELEASE_DATE = 20190112, CURRENT_SVN_REVISION = 2531
2020-09-06 21:05:59,139 - root - INFO - reference sensor not provided explicitly, using common sensor
2020-09-06 21:05:59,296 - root - INFO - secondary sensor not provided explicitly, using common sensor
do_unwrap True
Step processing
Running step startup

Insar Application:
Implements InSAR processing flow for a pair of scenes from
sensor raw data to geocoded, flattened interferograms.

The currently supported sensors are: ['ALOS', 'ALOS2', 'ALOS_SLC', 'COSMO_SKYMED', 'COSMO_SKYMED_SLC', 'ENVISAT', 'ENVISAT_SLC', 'ERS', 'ERS_ENVISAT', 'ERS_ENVISAT_SLC', 'ERS_SLC', 'ICEYE_SLC', 'KOMPSAT5', 'RADARSAT1', 'RADARSAT2', 'RISAT1', 'RISAT1_SLC', 'ROI_PAC', 'SAOCOM_SLC', 'SENTINEL1', 'SICD_RGZERO', 'TERRASARX', 'UAVSAR_HDF5_SLC', 'UAVSAR_POLSAR', 'UAVSAR_RPI', 'UAVSAR_STACK']
Dumping the application's pickle object insar to file PICKLE/startup
The remaining steps are (in order): ['preprocess', 'cropraw', 'formslc', 'cropslc', 'verifyDEM', 'topo', 'geo2rdr', 'coarse_resample', 'misregistration', 'refined_resample', 'dense_offsets', 'rubber_sheet_range', 'rubber_sheet_azimuth', 'fine_resample', 'split_range_spectrum', 'sub_band_resample', 'interferogram', 'sub_band_interferogram', 'filter', 'filter_low_band', 'filter_high_band', 'unwrap', 'unwrap_low_band', 'unwrap_high_band', 'ionosphere', 'geocode', 'geocodeoffsets', 'endup']
Running step preprocess
DOPPLER: TerraSARX useDEFAULT
Reference data is in SLC format. Adding _slc to output name.
2020-09-06 21:06:00,101 - isce.make_raw - INFO - Extracting image
Traceback (most recent call last):
File "/home/cyh/anaconda3/envs/isceenv/lib/python3.8/site-packages/isce/applications/stripmapApp.py", line 1002, in <module>
status = insar.run()
File "/home/cyh/anaconda3/envs/isceenv/lib/python3.8/site-packages/isce/components/iscesys/Component/Application.py", line 142, in run
exitStatus = self._processSteps()
File "/home/cyh/anaconda3/envs/isceenv/lib/python3.8/site-packages/isce/components/iscesys/Component/Application.py", line 405, in _processSteps
result = func(*pargs, **kwargs)
File "/home/cyh/anaconda3/envs/isceenv/lib/python3.8/site-packages/isce/components/isceobj/StripmapProc/Factories.py", line 46, in call
return self.method(self.other, *args, **kwargs)
File "/home/cyh/anaconda3/envs/isceenv/lib/python3.8/site-packages/isce/components/isceobj/StripmapProc/runPreprocessor.py", line 89, in runPreprocessor
reference = make_raw(sensor, referencedop)
File "/home/cyh/anaconda3/envs/isceenv/lib/python3.8/site-packages/isce/components/isceobj/StripmapProc/runPreprocessor.py", line 206, in make_raw
objMakeRaw(sensor=sensor, doppler=doppler)
File "/home/cyh/anaconda3/envs/isceenv/lib/python3.8/site-packages/isce/components/iscesys/Component/Component.py", line 179, in call
return getattr(self, self.
_class__.__name__.lower())(*args)
File "/home/cyh/anaconda3/envs/isceenv/lib/python3.8/site-packages/isce/applications/make_raw.py", line 235, in make_raw
self.sensor.extractImage()
File "/home/cyh/anaconda3/envs/isceenv/lib/python3.8/site-packages/isce/components/isceobj/Sensor/TerraSARX.py", line 245, in extractImage
self.parse()
File "/home/cyh/anaconda3/envs/isceenv/lib/python3.8/site-packages/isce/components/isceobj/Sensor/TerraSARX.py", line 123, in parse
self.populateMetadata()
File "/home/cyh/anaconda3/envs/isceenv/lib/python3.8/site-packages/isce/components/isceobj/Sensor/TerraSARX.py", line 132, in populateMetadata
self._populateInstrument()
File "/home/cyh/anaconda3/envs/isceenv/lib/python3.8/site-packages/isce/components/isceobj/Sensor/TerraSARX.py", line 150, in _populateInstrument
rangeSamplingFrequency = float(self.grab_from_xml('instrument/settings/RSF'))
AttributeError: 'TerraSARX' object has no attribute 'grab_from_xml'

Yahui

RE: split range spectrum of TerraSAR data(error to high/low band interferogram) - Added by Yahui Chong 21 days ago

Hi Heresh
I adopted your suggestions and modified the "runSplitSpectrum" file, my revised statement is as follows:
"B_reference = fs_reference / 1.1
B_secondary = fs_secondary / 1.1"
I can get the correct interferogram result(full band,low band and high band) by running the modified "runSplitSpectrum" file, but the high band unwrapped result and the low band unwrapped result is wrong, their images are as follows.Do you know what caused the unwrapping result? I am looking forward to your reply! Thank you very much!

RE: split range spectrum of TerraSAR data(error to high/low band interferogram) - Added by Heresh Fattahi 21 days ago

Unwrapping of each of the low, high and sub-band interferograms are done independently and therefore they might have different reference pixels and constant offsets from each other which is totally normal. At the colorscale you displayed its not possible to judge the unwrapping as the image is saturated towards -15 radians. To better see what is going on, Either choose a common reference pixel between all three interferograms and reference the interferograms to that pixel (i.e., subtract the phase of that pixel from each unwrapped phase) and then display them, or just rewrap them to large number like (10 radians or 20 radians).

Also a plot of connected components files would help to understand how did the unwrapping go.

Heresh

RE: split range spectrum of TerraSAR data(error to high/low band interferogram) - Added by Yahui Chong 17 days ago

Hi Heresh,
Thank you very much for your reply! I adjusted the numerical display range of the lowband unwrapped results, and the results are shown in the attachment. I am curious whether the phase unwrapped results of low and high band SLC data represent the surface deformation values. If so, why are they so different from the results of the full band? And the surface wouldn't be so deformed in such a short time? And I get the same phase unwrapped results with ALOS1, so I think I must made a mistake when I do the step "unwrapped", but I don't konw the reason for the mistake.
Another question is that does the ISCE software remove the water region when generate the interferogram ?
The attachment is my highband/lowband unwrapped results and the connected components (TerraSAR and ALOS1).

(1-16/16)