Release Notes

SRM SDK Release 4.4.0

December 7, 2009



  1. Introduction
  2. Distribution Packages
  3. Installation
  4. SDK Documentation
  5. Applications
  6. Included Upgrades
  7. Migration from 4.0 to 4.2
  8. Known Defects and Limitations
  9. Bug Reports and Feedback
  10. Web Pages

Introduction

Thank you for downloading this release of the SRM Software Development Kit (SRM SDK). The SRM SDK is the development environment for creating applications that use the Spatial Reference Model (SRM), a conceptual model that allows a set of spatial reference frames to be defined in such a way that they describe geometric properties uniquely. The SRM supports unambiguous specification of the positions, directions, distances, and times associated with spatial information. It also defines algorithms for precise transformation of positions, directions, and distances (for a given time) among different spatial reference frames. Its spatial operation algorithms are designed to achieve high accuracy (typically 1 mm "error ball" accuracy), and are optimized to achieve very high performance measures without compromising that accuracy.

This release has been tested on multiple platforms, such as Linux, Irix, Sun, and Windows 98/Me/NT/2000. For detailed information on platform and compiler versions supported see the Build Kit.

For help, comments, and bug reports please send email to help@sedris.org. If you are an associate, please use se-coders@sedris.org.

Return to: Top


Distribution Packages

This version of the SDK is being made available in three API implementations, and distribution formats. The three API implementations are in C, C++ and Java. In addition to source code, pre-compiled binaries for all supported platforms can be downloaded from the SEDRIS web site (www.sedris.org).

The following table shows the contents of the different packages and the directories you will find in them. Note that the links on the column headers take you to the directories, so they may not work depending on your distribution and, as in the case of a source distribution, on whether you have compiled the libraries and/or applications:

Package and Contents bin:

Compiled binaries for applications

docs:

Documentation, including Release Notes and Reference Manual

include:

Header files for applications and libraries

lib:

Compiled binaries for libraries

src:

Source code and headers for libraries and applications

Complete Suite Source:
  • Libraries
  • Applications
  • Documentation
  X     X
Complete Suite Binary:
  • Libraries and available extensions
  • Applications
  • Documentation
X X X X  

Return to: Top


Installation

The SRM SDK is distributed as a GNU-zipped tar file for Unix systems and a Zip file in Win32 systems.

Note: This is a major release. It is not compatible with earlier versions of SRM releases.

To install, extract the contents of the compressed file:

Unix

Use the "tar" and "gzip" commands to extract the contents of the SDK:

gunzip -c sdk_file.tar.gz | tar xf -
using the appropriate filename for "sdk_file.tar.gz".

If you have GNU tar installed, you can use the following command instead:

tar xzf sdk_file.tar.gz

Win32

Use WinZip or other decompression utility to extract the contents of the downloaded file.

If you are installing the SRM SDK under the SEDRIS SDK, you will need to extract the contents of the file into the "sedris/src/lib" directory of the SEDRIS SDK, so that the extraction process puts all the files in the "sedris/src/lib/srm" directory.

See the Build Kit page for information on how to compile and link the software, and how to link your applications or libraries against this SDK.

Note that the file name for binary releases includes the OS/System architecture type as part of the name. After extracting the software, users should see a top-level "srm" directory. Binary releases associated with different OS/architecture can be installed on a common "srm" directory. This is to allow users who work on several platforms to install all the releases under a common "srm" directory in a shared network drive. In that case, on each installation, the non-OS-specific files are replaced by the new release and the OS specific libraries and executables are stored under their respective sub-directories under the "lib" and "bin" directories discriminated by their platform/version/architecture combination.

Return to: Top


SDK Documentation

The SDK Documentation is divided into the following areas:

Release Notes (this document)
Describes the capabilities of this release, its contents, and supported platforms and compilers.

Build Kit.

SRM API Documentation.
SRM C API
SRM C++ API

SRMUsers' Guide
SRM C API Users' Guide
SRM C++ API Users' Guide

User's Manual for SRM Orientation & Vector Transformations

Return to: Top


Applications

This release includes a sample application that demonstrates the use of the SRM SDK.

Applications:

Sample SRM Access
An application that converts a 3D coordinate from a Celestiodetic SRF to a Celestiocentric SRF.

Return to: Top


Included Upgrades

The table below summarizes the changes in this release since SRM 4.1.

Features
  • New methods in the BaseSRF class to retrieve ORM parameter values associated with the SRF:
    • getA() - method to retrieve the semi-major axis (A) value.
    • getF() - method to retrieve the flattening (F) value.
  • New experimental ORM/RT value pairs associated with the NGA golden data:
    • SRM_ORMCOD_EXPERIMENTAL_NGA_SPHERE / SRM_RTCOD_EXPERIMENTAL_NGA_SPHERE_IDENTITY_BY_DEFAULT.
    • SRM_ORMCOD_EXPERIMENTAL_NGA_MAX / SRM_RTCOD_EXPERIMENTAL_NGA_MAX_IDENTITY_BY_DEFAULT.
  • New orientation representation classes and methods replacing the existing orientation methods:
    • Axis-angle
    • Euler (ZXZ) angles
    • Matrix 3x3
    • Quaternion
    • Tait-Bryan angles
  • New orientation methods replacing the existing pre-4.2 orientation methods, and additional methods for conversion of vector quantities (velocity, acceleration) involving orientations:
    • computeSRFOrientation: Sets the values of the orientation object representing the orientation of the source SRF (at the source reference location) with respect the target SRF (at the target reference location).
    • getLocalTangentFrameSRFParameters: Computes the parameters corresponding to the local tangent frame at the input reference location.
    • createLococentricEuclidean3DSRF: Creates a Lococentric Euclidean 3D SRF whose origin is at the input lococentre and the primary and secondary axes are aligned with the input direction axes.
    • transformOrientation: Given an orientation with respect to a local tangent frame (LTF_S) associated with a reference location in the source SRF, this method computes the orientation with respect to the local tangent frame (LTF_T) associated with the specified reference location in the target SRF.
    • transformOrientationCommonOrigin: Given an orientation with respect to a local tangent frame (LTF_S) associated with a reference location in the source SRF, this method computes the orientation with respect to the local tangent frame (LTF_T) associated with the specified reference location in the target SRF. LTF_S and LTF_T have a common origin.
    • transformVectorInBodyFrame: Given a vector in a body frame (or in general any linear reference frame) whose orientation with respect to the local tangent frame (LTF_S) that is associated with a reference location in the source SRF, this method computes the vector in the local tangent frame (LTF_T) associated with the specified reference location in the target SRF.
    • transformVectorInBodyFrameCommonOrigin: Given a vector in a body frame (or in general any linear reference frame) whose orientation with respect to the local tangent frame (LTF_S) that is associated with a reference location in the source SRF, this method computes the vector in the local tangent frame (LTF_T) associated with the specified reference location in the target SRF. LTF_S and LTF_T have a common origin.
    • transformVector: Given a vector in the local tangent frame (LTF_S) associated with a reference location in the source SRF, this method computes the vector in the local tangent frame (LTF_T) associated with the specified reference location in the target SRF.
    • transformVectorCommonOrigin: Given a vector in the local tangent frame (LTF_S) associated with a reference location in the source SRF, this method computes the vector in the local tangent frame (LTF_T) associated with the specified reference location in the target SRF. LTF_S and LTF_T have a common origin.
  • Faster changeCoordinate3DSRF method implementation for some of the more commonly used SRFs (CC, CD, M, TM, PS, LTSE and LCE_3D).
Fixes
  • Fixed the lower bound value of the Scale Factor parameter associated with map projection SRFs from 0.75 to 0.5.
  • Fixed a few SRM labels concerning ORM, RT, CS and SRFT to comply with the SRM LB rule of uniqueness in the first 31 characters. See Migration from 4.2 to 4.3 for more details.
  • The coordinate component ordering for Local Space Polar and for Planetodetic have been changed so that they are explicitly represented as right-handed systems.
  • Updated valid coordinate ranges (including SRF parameters that contain coordinates) to handle boundary cases in accordance with SRM edition 2, which updated the range of valid input for various SRF's coordinates.
    • The valid coordinate range of celestiodetic SRFs previously did not include the poles. This has been addressed.
    • The valid coordinate range of azimuthal spherical SRFs previously did not include the origin. This has been addressed.
  • Solar Magnetic Dipole and Solar Magnetic Ecliptic have been reformulated as Euclidean rather than angular coordinate systems, in accordance with SRM edition 2. See Migration from 4.2 to 4.3 for more details.
  • The instanceAbstractSpaceCoordinate() method has been removed.
  • For the following ORM / RT pairs, parameter values have been updated to improve accuracy for datum transformations:
    ORMRT
    SRM_ORMCOD_MIDWAY_1961 SRM_RTCOD_MIDWAY_1961_MIDWAY_ISLANDS
    SRM_ORMCOD_DJAKARTA_1987_PM_DJAKARTA SRM_RTCOD_DJAKARTA_1987_PM_DJAKARTA_SUMATRA
    SRM_ORMCOD_ROME_1940_PM_ROME SRM_RTCOD_ROME_1940_PM_ROME_SARDINIA
  • Updated SRM_ValidRTCode() for all RTs defined as prime meridians, so that they are validated against the correct ORMs.
  • Fixed coordinate conversion formulation involving Lambert Conformal Conic (LCC) SRFs. CD - LCC and LCC - CD coordinate conversions have been updated to prevent a loss of accuracy near the poles.
  • Fixed coordinate conversion formulation involving Transverse Mercator (TM) SRFs for spherical ORMs (CD - TM and TM - CD conversions).
  • Fixed the Planetodetic coordinate component ordering for the latitude and longitude values.
  • Fixed the handling of Easting/Northing offsets and Ellipsoidal Height values in a coordinate conversion involving LTSAS SRF.

Return to: Top


Migration from 4.0 to 4.2

For users who have developed applications using the SRM C++ API version 4.0, the 4.2 version was mostly an extension of the existing classes. The exception are the methods involving orientation which were completely replaced.

For users who have developed applications using the SRM C API version 4.0 the SRM C API 4.0 to 4.2 Migration Guide describes the main differences between the two versions.


Migration from 4.2 to 4.3

For users who have developed applications using the SRM C++ API version 4.2, this 4.3 version is mostly an extension of the classes involving orientation.

For users who have developed applications using the SRM C API version 4.2 the SRM C API 4.2 to 4.3 Migration Guide describes the main differences between the two versions.


Known Defects and Limitations


Bug Reports and Feedback

Questions, comments, and bug reports should be sent to help@sedris.org.

If you are an associate, please send email to se-coders@sedris.org.

Return to: Top


Web Pages

These links require Internet access.

Return to: Top

Copyright © 2009 SEDRIS