Skip to content

Commit c305e13

Browse files
authored
Fix the pad_width integral type error for spatial_filter.py -f double_difference (#1015)
+ `spatial_filter.py`: Fix the np.pad() pad_width integral type error while using double_difference filter. + `writefile.write()`: do not overwrite format for .hgt file, as it can be float64 in isce2. Plus, the two-band format in roipac is weird anyway and not used much anymore [in the last 3+ years if I remember correctly]. + `isce_utils.extract_alosStack_metadata()`: make los_file optional, because 1) attribute CENTER_INCIDENCE_ANGLE is not essential, i.e. optional; and 2) los_file does not exist sometimes, as in the post-processing of alos2App
1 parent 6cbbf29 commit c305e13

File tree

4 files changed

+19
-14
lines changed

4 files changed

+19
-14
lines changed

src/mintpy/spatial_filter.py

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -71,15 +71,17 @@ def filter_data(data, filter_type, filter_par=None):
7171
and regional mean results are separate.
7272
"""
7373

74-
local_kernel = morphology.disk(filter_par[0], np.float32)
75-
local_kernel = np.pad(local_kernel,filter_par[1] - filter_par[0],mode='constant')
74+
local_kernel = morphology.disk(filter_par[0], dtype=np.float32)
75+
local_kernel = np.pad(local_kernel, pad_width=int(filter_par[1]-filter_par[0]), mode='constant')
7676

77-
regional_kernel = morphology.disk(filter_par[1], np.float32)
77+
regional_kernel = morphology.disk(filter_par[1], dtype=np.float32)
7878
regional_kernel[local_kernel == 1] = 0
7979

80+
# normalize
8081
local_kernel /= local_kernel.sum(axis=(0,1))
8182
regional_kernel /= regional_kernel.sum(axis=(0,1))
8283

84+
# double-difference kernel
8385
combined_kernel = regional_kernel - local_kernel
8486

8587
data_filt = ndimage.convolve(data, combined_kernel)
@@ -107,30 +109,30 @@ def filter_file(fname, ds_names=None, filter_type='lowpass_gaussian', filter_par
107109
# Info
108110
filter_type = filter_type.lower()
109111
atr = readfile.read_attribute(fname)
110-
msg = 'filtering {} file: {} using {} filter'.format(atr['FILE_TYPE'], fname, filter_type)
112+
print(f'input file: {fname}, file type: {atr["FILE_TYPE"]}')
113+
print(f'filter type: {filter_type}')
111114

112115
if filter_type.endswith('avg'):
113116
if not filter_par:
114117
filter_par = 5
115118
elif isinstance(filter_par, list):
116119
filter_par = filter_par[0]
117120
filter_par = int(filter_par)
118-
msg += f' with kernel size of {filter_par}'
121+
print(f'filter parameter: kernel size = {filter_par}')
119122

120123
elif filter_type.endswith('gaussian'):
121124
if not filter_par:
122125
filter_par = 3.0
123126
elif isinstance(filter_par, list):
124127
filter_par = filter_par[0]
125128
filter_par = float(filter_par)
126-
msg += f' with sigma of {filter_par:.1f}'
129+
print(f'filter parameter: sigma = {filter_par:.1f}')
127130

128131
elif filter_type == 'double_difference':
129132
if not filter_par:
130133
filter_par = [1, 10]
131134
local, regional = int(filter_par[0]), int(filter_par[1])
132-
msg += f' with local/regional kernel sizes of {local}/{regional}'
133-
print(msg)
135+
print(f'filter parameter: local / regional kernel sizes = {local} / {regional}')
134136

135137
# output filename
136138
if not fname_out:

src/mintpy/utils/isce_utils.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -385,10 +385,12 @@ def extract_alosStack_metadata(meta_file, geom_dir):
385385
meta['LON_REF3'] = str(data[-1-edge, 0+edge])
386386
meta['LON_REF4'] = str(data[-1-edge, -1-edge])
387387

388-
los_file = glob.glob(os.path.join(geom_dir, f'*_{rlooks}rlks_{alooks}alks.los'))[0]
389-
data = np.memmap(los_file, dtype='float32', mode='r', shape=(length*2, width))[0:length*2:2, :]
390-
inc_angle = data[int(length/2), int(width/2)]
391-
meta['CENTER_INCIDENCE_ANGLE'] = str(inc_angle)
388+
# CENTER_INCIDENCE_ANGLE is optional
389+
los_files = glob.glob(os.path.join(geom_dir, f'*_{rlooks}rlks_{alooks}alks.los'))
390+
if len(los_files) > 0:
391+
data = np.memmap(los_files[0], dtype='float32', mode='r', shape=(length*2, width))[0:length*2:2, :]
392+
inc_angle = data[int(length/2), int(width/2)]
393+
meta['CENTER_INCIDENCE_ANGLE'] = str(inc_angle)
392394

393395
pointingDirection = {'right': -1, 'left' :1}
394396
meta['ANTENNA_SIDE'] = str(pointingDirection[track.pointingDirection])

src/mintpy/utils/readfile.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1322,7 +1322,7 @@ def auto_no_data_value(meta):
13221322

13231323
# known file types
13241324
# isce2: dense offsets from topsApp.py
1325-
if processor == 'isce' and fbase.endswith('dense_offsets') and fext == '.bil' and num_band == 2:
1325+
if processor == 'isce' and fname.endswith('dense_offsets.bil') and num_band == 2:
13261326
no_data_value = -10000.
13271327

13281328
else:

src/mintpy/utils/writefile.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,8 @@ def write(datasetDict, out_file, metadata=None, ref_file=None, compression=None,
171171
data_list = [data_list[0], data_list[0]]
172172
meta['BANDS'] = 2
173173

174-
elif fext in ['.cor', '.hgt']:
174+
elif fext in ['.cor']:
175+
# remove .hgt as it can be float64 in isce2.
175176
meta['DATA_TYPE'] = 'float32'
176177
meta['INTERLEAVE'] = 'BIL'
177178
if meta.get('PROCESSOR', 'isce') == 'roipac':

0 commit comments

Comments
 (0)