Skip to content

Commit 2b0e1b1

Browse files
authored
Merge pull request #80 from TUDelftGeodesy/metadata_parsing_precision
Metadata parsing precision
2 parents 2f033f2 + e901e3c commit 2b0e1b1

File tree

2 files changed

+19
-7
lines changed

2 files changed

+19
-7
lines changed

sarxarray/_io.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -460,7 +460,7 @@ def _regulate_metadata(metadata, driver):
460460
for time in metadata[TIME_STAMP_KEY]:
461461
try:
462462
dt = datetime.strptime(time, time_format)
463-
list_time.append(np.datetime64(dt).astype("datetime64[s]"))
463+
list_time.append(np.datetime64(dt).astype("datetime64[ns]"))
464464
except ValueError as e:
465465
raise ValueError(
466466
f"Invalid date format for key: '{TIME_STAMP_KEY}'. "

tests/test_io.py

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -228,6 +228,12 @@ def test_read_metadata_doris4_onefile(self, res_files_doris4):
228228
assert isinstance(metadata[key], int)
229229
assert np.isscalar(metadata["first_azimuth_time"])
230230

231+
# Check the time parsing precision
232+
time_diff = abs(
233+
metadata["first_azimuth_time"] - np.datetime64("2018-03-01T17:19:09.165")
234+
)
235+
assert time_diff <= np.timedelta64(1, "ns")
236+
231237
def test_read_metadata_doris5_onefile(self, res_files_doris5, caplog):
232238
metadata = sarxarray.read_metadata(res_files_doris5[0], driver="doris5")
233239
for key in RE_PATTERNS_DORIS5.keys():
@@ -248,6 +254,12 @@ def test_read_metadata_doris5_onefile(self, res_files_doris5, caplog):
248254
assert isinstance(metadata[key], int)
249255
assert np.isscalar(metadata["first_azimuth_time"])
250256

257+
# Check the time parsing precision
258+
time_diff = abs(
259+
metadata["first_azimuth_time"] - np.datetime64("2018-03-06T17:24:29.95498")
260+
)
261+
assert time_diff <= np.timedelta64(1, "ns")
262+
251263
def test_read_metadata_doris5_onefile_values(self, res_files_doris5):
252264
metadata = sarxarray.read_metadata(res_files_doris5[0], driver="doris5")
253265
assert metadata["sar_processor"] == "Sentinel-1B"
@@ -256,16 +268,16 @@ def test_read_metadata_doris5_onefile_values(self, res_files_doris5):
256268
assert metadata["swath"] == "IW3"
257269
assert metadata["image_mode"] == "IW"
258270
assert metadata["polarisation"] == "VV"
259-
assert np.isclose(metadata["range_pixel_spacing"], 2.329562e+00)
260-
assert np.isclose(metadata["azimuth_pixel_spacing"], 1.385502e+01)
261-
assert np.isclose(metadata["radar_frequency"], 5.405000454334350e+09)
271+
assert np.isclose(metadata["range_pixel_spacing"], 2.329562e00)
272+
assert np.isclose(metadata["azimuth_pixel_spacing"], 1.385502e01)
273+
assert np.isclose(metadata["radar_frequency"], 5.405000454334350e09)
262274
assert metadata["sensor_platform"] == "S1B"
263275
assert np.isclose(metadata["wavelength"], 0.055465760)
264276
assert isinstance(metadata["first_azimuth_time"], np.datetime64)
265277
assert np.isclose(metadata["azimuth_time_interval"], 2.055556299999998e-03)
266-
assert np.isclose(metadata["total_azimuth_bandwidth"], 3.140000000000000e+02)
278+
assert np.isclose(metadata["total_azimuth_bandwidth"], 3.140000000000000e02)
267279
assert metadata["weighting_azimuth"] == "Hamming"
268-
assert np.isclose(metadata["first_range_time"], 6.013024343276740/1000)
280+
assert np.isclose(metadata["first_range_time"], 6.013024343276740 / 1000)
269281
assert np.isclose(metadata["range_sampling_rate"], 64.345238126 * 1_000_000)
270282
assert np.isclose(metadata["total_range_bandwidth"], 42.789918403 * 1_000_000)
271283
assert metadata["weighting_range"] == "Hamming"
@@ -277,5 +289,5 @@ def test_read_metadata_doris5_onefile_values(self, res_files_doris5):
277289
assert np.isclose(metadata["scene_centre_longitude"], 6.557386154885761)
278290
assert np.allclose(
279291
metadata["orbit_txyz"][0],
280-
[62569, 4954320.931616273, 78580.69269184131, 5042109.736565054]
292+
[62569, 4954320.931616273, 78580.69269184131, 5042109.736565054],
281293
)

0 commit comments

Comments
 (0)