Double-precision Geocoding Specification
Goals
- The following Java interfaces and classes currently operate on 32-bit floats: GeoCoding, GeoPos, PixelPos. Derived classes such as TiePointGeoCoding also perform their computations using 32-bit floats, while others, e.g. PixelGeoCoding use 64-bit internally.
- Many hires applications require 64-bit precision both for internal computation and in the final delivery of results.
Background and strategic fit
With S1TBX, this is a problem for high res TerraSAR-X data. In particular when running the SAR Simulation it produces a number of artifacts in the image.
Before
After
Assumptions
Requirements
# | Title | User Story | Importance | Notes |
---|---|---|---|---|
1 | Tie point interpolation | Part of the problem is caused by the unit (lat lon in degrees, slant range time in seconds) but this should probably stay as is. At high resolutions (< 1m), neighbouring pixels end up having the same value. Tie Point Grids and DEMs need to be interpolated to the resolution of the data product. Interpolators have already been made 64-bit. Now the resulting value needs to be saved as 64-bit.
| ||
2 | Tie point writing/reading | When writing tie point grids a datatype field specifies if it is Float32 or Float64 When reading, the reader should use this field to first determine the type and then read the data accordingly |
| |
3 | Readers | All readers which create TPGs in particular for storing lat and lon data shall be changed to supprt Float64 | ||
4 | Interfaces | Access to tie point grids for the purpose of coordinate positions should be via getPixelDouble or getPixels(double[]) |
User interaction and design
Questions
Below is a list of questions to be addressed as a result of this requirements document:
Question | Outcome |
---|---|