diff --git a/sarxarray/conf.py b/sarxarray/conf.py index 6b0a441..981b4c7 100644 --- a/sarxarray/conf.py +++ b/sarxarray/conf.py @@ -12,16 +12,16 @@ "sar_processor": r"SAR_PROCESSOR:\s+(.+)", "product_type": r"Product type specifier:\s+(.+)", "pass_direction": r"Scene identification:.*?(ASCENDING|DESCENDING)", - "wavelength": r"Radar_wavelength \(m\):\s+([\d\.E\+\-]+)", + "wavelength": r"Radar_wavelength \(m\):\s+([\d\.Ee\+\-]+)", "pulse_repetition_frequency": ( - r"Pulse_Repetition_Frequency \(computed, Hz\):\s+([\d\.E\+\-]+)" + r"Pulse_Repetition_Frequency \(computed, Hz\):\s+([\d\.Ee\+\-]+)" ), - "total_azimuth_bandwidth": r"Total_azimuth_band_width \(Hz\):\s+([\d\.E\+\-]+)", + "total_azimuth_bandwidth": r"Total_azimuth_band_width \(Hz\):\s+([\d\.Ee\+\-]+)", "first_range_time": ( - r"Range_time_to_first_pixel \(2way\) \(ms\):\s+([\d\.E\+\-]+)" + r"Range_time_to_first_pixel \(2way\) \(ms\):\s+([\d\.Ee\+\-]+)" ), - "range_sampling_rate": r"Range_sampling_rate \(computed, MHz\):\s+([\d\.E\+\-]+)", - "total_range_bandwidth": r"Total_range_band_width \(MHz\):\s+([\d\.E\+\-]+)", + "range_sampling_rate": r"Range_sampling_rate \(computed, MHz\):\s+([\d\.Ee\+\-]+)", + "total_range_bandwidth": r"Total_range_band_width \(MHz\):\s+([\d\.Ee\+\-]+)", "weighting_azimuth": r"Weighting_azimuth:\s+(.+)", "weighting_range": r"Weighting_range:\s+(.+)", "first_azimuth_time": r"First_pixel_azimuth_time \(UTC\):\s+(.+)", @@ -34,31 +34,31 @@ "swath": r"SWATH:\s+(.+)", "image_mode": r"IMAGE_MODE:\s+(.+)", "polarisation": r"polarisation:\s+(.+)", - "range_pixel_spacing": r"rangePixelSpacing:\s+([\d\.E\+\-]+)", - "azimuth_pixel_spacing": r"azimuthPixelSpacing:\s+([\d\.E\+\-]+)", - "radar_frequency": r"RADAR_FREQUENCY \(HZ\):\s+([\d\.E\+\-]+)", + "range_pixel_spacing": r"rangePixelSpacing:\s+([\d\.Ee\+\-]+)", + "azimuth_pixel_spacing": r"azimuthPixelSpacing:\s+([\d\.Ee\+\-]+)", + "radar_frequency": r"RADAR_FREQUENCY \(HZ\):\s+([\d\.Ee\+\-]+)", "sensor_platform": r"Sensor platform mission identifer:\s+(.+)", - "wavelength": r"Radar_wavelength \(m\):\s+([\d\.E\+\-]+)", + "wavelength": r"Radar_wavelength \(m\):\s+([\d\.Ee\+\-]+)", "pulse_repetition_frequency_raw": ( - r"Pulse_Repetition_Frequency_raw_data\(TOPSAR\):\s+([\d\.E\+\-]+)" + r"Pulse_Repetition_Frequency_raw_data\(TOPSAR\):\s+([\d\.Ee\+\-]+)" ), "pulse_repetition_frequency": ( - r"Pulse_Repetition_Frequency \(computed, Hz\):\s+([\d\.E\+\-]+)" + r"Pulse_Repetition_Frequency \(computed, Hz\):\s+([\d\.Ee\+\-]+)" ), "first_azimuth_time": r"First_pixel_azimuth_time \(UTC\):\s+(.+)", - "azimuth_time_interval": r"Azimuth_time_interval \(s\):\s+([\d\.E\+\-]+)", - "total_azimuth_bandwidth": r"Total_azimuth_band_width \(Hz\):\s+([\d\.E\+\-]+)", + "azimuth_time_interval": r"Azimuth_time_interval \(s\):\s+([\d\.Ee\+\-]+)", + "total_azimuth_bandwidth": r"Total_azimuth_band_width \(Hz\):\s+([\d\.Ee\+\-]+)", "weighting_azimuth": r"Weighting_azimuth:\s+(.+)", "first_range_time": ( - r"Range_time_to_first_pixel \(2way\) \(ms\):\s+([\d\.E\+\-]+)" + r"Range_time_to_first_pixel \(2way\) \(ms\):\s+([\d\.Ee\+\-]+)" ), - "range_sampling_rate": r"Range_sampling_rate \(computed, MHz\):\s+([\d\.E\+\-]+)", - "total_range_bandwidth": r"Total_range_band_width \(MHz\):\s+([\d\.E\+\-]+)", + "range_sampling_rate": r"Range_sampling_rate \(computed, MHz\):\s+([\d\.Ee\+\-]+)", + "total_range_bandwidth": r"Total_range_band_width \(MHz\):\s+([\d\.Ee\+\-]+)", "weighting_range": r"Weighting_range:\s+(.+)", "dataformat": r"Dataformat:\s+(.+)", - "deramp": r"deramp:\s+([\d\.E\+\-]+)", - "reramp": r"reramp:\s+([\d\.E\+\-]+)", - "esd_correct": r"ESD_correct:\s+([\d\.E\+\-]+)", + "deramp": r"deramp:\s+([\d\.Ee\+\-]+)", + "reramp": r"reramp:\s+([\d\.Ee\+\-]+)", + "esd_correct": r"ESD_correct:\s+([\d\.Ee\+\-]+)", "orbit_txyz": ( r"(\d+)\s+([-+]?\d+\.\d+(?:\.\d+)?)\s+([-+]?\d+" r"\.\d+(?:\.\d+)?)\s+([-+]?\d+\.\d+(?:\.\d+)?)" diff --git a/tests/test_io.py b/tests/test_io.py index e442999..d80c227 100644 --- a/tests/test_io.py +++ b/tests/test_io.py @@ -247,3 +247,35 @@ def test_read_metadata_doris5_onefile(self, res_files_doris5, caplog): elif key in META_INT_KEYS: assert isinstance(metadata[key], int) assert np.isscalar(metadata["first_azimuth_time"]) + + def test_read_metadata_doris5_onefile_values(self, res_files_doris5): + metadata = sarxarray.read_metadata(res_files_doris5[0], driver="doris5") + assert metadata["sar_processor"] == "Sentinel-1B" + assert metadata["product_type"] == "S1B" + assert metadata["pass_direction"] == "Ascending" + assert metadata["swath"] == "IW3" + assert metadata["image_mode"] == "IW" + assert metadata["polarisation"] == "VV" + assert np.isclose(metadata["range_pixel_spacing"], 2.329562e+00) + assert np.isclose(metadata["azimuth_pixel_spacing"], 1.385502e+01) + assert np.isclose(metadata["radar_frequency"], 5.405000454334350e+09) + assert metadata["sensor_platform"] == "S1B" + assert np.isclose(metadata["wavelength"], 0.055465760) + assert isinstance(metadata["first_azimuth_time"], np.datetime64) + assert np.isclose(metadata["azimuth_time_interval"], 2.055556299999998e-03) + assert np.isclose(metadata["total_azimuth_bandwidth"], 3.140000000000000e+02) + assert metadata["weighting_azimuth"] == "Hamming" + assert np.isclose(metadata["first_range_time"], 6.013024343276740/1000) + assert np.isclose(metadata["range_sampling_rate"], 64.345238126 * 1_000_000) + assert np.isclose(metadata["total_range_bandwidth"], 42.789918403 * 1_000_000) + assert metadata["weighting_range"] == "Hamming" + assert metadata["dataformat"] == "tiff" + assert np.isclose(metadata["deramp"], 0) + assert np.isclose(metadata["reramp"], 0) + assert np.isclose(metadata["esd_correct"], 0) + assert np.isclose(metadata["scene_centre_latitude"], 53.54352136900687) + assert np.isclose(metadata["scene_centre_longitude"], 6.557386154885761) + assert np.allclose( + metadata["orbit_txyz"][0], + [62569, 4954320.931616273, 78580.69269184131, 5042109.736565054] + )