Implement SAR metadata parsing from geom files
This issue is part of the SAR sensor models refactoring story (#2142 (closed))
Rationale
In !761 (merged), the parsing of SAR metadata from raw products has been refactored to use the new metadata framework introduced in !707 (merged). To ensure backward compatibility, OTB should also be able to read metadata from geom files. Generic metadata parsing from geom has been added in !759 (merged), but metadata specific to SAR products were not parsed in the ImageMetadataInterface classes. The purpose of this issue is to adds parsing from geom in SAR products.
Analysis
We need to upgrade the parse
method of the SAR ImageMetadataInterfaces, in the same way it was done in !770 (merged).
Sensors to update:
-
CosmoSkyMed -
Radarsat2 -
Sentinel1 -
TerraSar
This is the list of metadata parsed in geom by ossimSarSensorModel and the corresponding paths:
Name | Type | Path |
---|---|---|
theOrbitRecords | std::vector<OrbitRecordType> |
orbitList.nb_orbits orbitList.orbit[i].{time, x_pos, x_vel, y_pos,y_vel, z_pos, z_vel} |
theGCPRecords | std::vector<GCPRecordType> |
support_data.geom.gcp.number support_data.geom.gcp[i].{azimuthTime, im_pt.{x,y}, slant_range_time, world_pt.{hgt, lon, la} } |
theBurstRecords | std::vector<BurstRecordType> |
support_data.geom.bursts.number support_data.geom.bursts.urst[i].{ azimuth_start_time,azimut_stop_time,end_line,start_line} |
theSlantRangeToGroundRangeRecords | std::vector<CoordinateConversionRecordType> |
isGRD get(kwl, SR_PREFIX, keySr0, theSlantRangeToGroundRangeRecords); |
theGroundRangeToSlantRangeRecords | std::vector<CoordinateConversionRecordType> |
IsGRD get(kwl, GR_PREFIX, keyGr0, theGroundRangeToSlantRangeRecords); |
theRadarFrequency | double |
support_data,radar_frequency |
theAzimuthTimeInterval | DurationType |
support_data,line_time_interval |
theNearRangeTime | double |
support_data,slant_range_to_first_pixel |
theRangeSamplingRate | double |
support_data,range_sampling_rate |
theRangeResolution | double |
support_data,range_spacing |
theBistaticCorrectionNeeded | Bool |
Always false when reading geom ??????? |
theProductType | ProductType |
support_data,product_type |
theAzimuthTimeOffset | DurationType |
optimizeTimeOffsetsFromGcps() |
theRangeTimeOffset | double |
optimizeTimeOffsetsFromGcps() Always 0 ????? |
theRightLookingFlag | bool |
true in ossimSarSensorModel constructor |
theFirstLineTime | TimeType |
Not read ? Set in deburst() |
theLastLineTime | TimeType |
Not read ? Set in deburst() |
theGeomVersion | unsigned int |
header.version |
theNumberOfLinesPerBurst | unsigned long |
if(theBurstRecords.size() > 1) support_data.geom.bursts.number_lines_per_burst |
theNumberOfSamplesPerBurst | unsigned long |
if(theBurstRecords.size() > 1) support_data.geom.bursts.number_samples_per_burst |
redaptMedataAfterDeburst | bool |
false in ossimSarSensorModel constructor ; set to true in deburst() |
thePluginVersion | unsigned int |
const int = 4 |
thePluginVersionMin | unsigned int |
const int = 2 |
TODO: add metadata specific to sensors.
Acceptance criterions
One test per product type should be added: the metadata from a product is compared with the metadata read from a geom file using the --compare-metadata
utility refactored in !763 (merged).
Risk management
Risk | Likelihood | Impact | Action |
---|