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
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
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:
using the appropriate filename for "sdk_file.tar.gz".gunzip -c sdk_file.tar.gz | tar xf -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
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
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
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:
ORM RT 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
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.
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.
- The calculateVerticalSeparationOffset() method only supports the EGM96_GEOID and WGS84_ELLIPSOID DSS codes.
- The calculateConvergenceOfTheMeridian() method does not work for Polar Stereographic SRF.
- The "get natural region" methods only support the UTM and GTRS SRF sets.
- The methods involving orientation do not currently support LTSAS, LTSC, and EC SRFs.
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
These links require Internet access.
Return to: Top
Copyright © 2009 SEDRIS