Hello all

The main work this week has been an effort to increase the accuracy of the matrix computed by the BursaWolfParameters.getPositionVectorTransformation() method. This was a known problem in Geotk. The intend is not to have an accurate "position vector transformation" (that would be pointless since this transformation method, like all datum shifts, is only approximative anyway). The intend is to get back an identity matrix when concatenating a chain of operations having "A -> B" followed by "B -> A". More specifically the problem was:

 * "Position vector transformation", when expressed in matrix form, is
   close to an identity matrix (values are quite small).
 * When performing matrix inversions and multiplications, rounding
   errors accumulate relatively fast.
 * As a consequence of combination of the two above points, some
   concatenation of transformations resulted in matrices difficult to
   distinguish from noise.


The usual strategy for floating point values:

    if (abs(value) < epsilon)

didn't worked in this case, because the overlapping between "signal" and "noise" were too high in some situations: sometime a real datum shift was considered as noise, and conversely. This problem does not happen for a BursaWolfParameters object alone, but appears after a few concatenations. The work of the last few weeks is an attempt to improve the discrimination between signal and noise in coordinate transformation chains.

My plan for next week is to add a new property in BursaWolfParameters: its domain of validity. This information was missing in Geotk, and experience has shown that this was a problem. Then, I plan to complete the GeodeticObjects class. When GeodeticObjects will provide at least the WGS84 GeographicCRS, I think that the class would be okay for a SIS 0.4 release (remaining work would be to provide a basic Feature class for the Shapefile reader).

    Martin

Reply via email to