An overview of Geotransformers
Georeferencing describes the process of locating an entity in real world coordinates. Once an entity has been georeferenced, the relationship between the entity and its real world location can be used to map and display information about the entity. This relationship can be described as a chain of transformations that can be modeled mathematically. Each of these transformations can be defined through a set of parameters and will process coordinates from one virtual space to another. Such transformations applied to rasters are implemented by a Geotransformer. The set of parameters defining the transformation forms the Geotransformer definition, which is stored as XML for extensibility considerations.
Geotransformers can be applied in a chain with a certain order, as well as encapsulated one into another. Specific raster processes that perform coordinate transformations are called georeferencing processes. Since in most generic cases a composition of Geotransformers represents a sensor model, a georeferencing process will be identified by a sensor definition. There are no restrictions on what kind of transformations are defined within a sensor definition (SDef), meaning it doesn't have to describe a physical sensor.
A raster process is defined by a raster process definition (RPDef) which consists of two parts: raster group and rasters. Both raster group and raster definitions can have georeferencing processes defined by sensor definitions. Their only purpose is to affect the geometry of a raster to match a certain projection in real world coordinates that is defined by its spatial reference system (PRJ).
Geotransformers are used within ArcGIS Image Server processing chains. For more information, see ArcGIS Image Server processing chain. They are processing 3D coordinates, and those which do not utilize the 3rd coordinate (Z) must maintain the value. Whenever possible, a Geotransformer implements the coordinate transformation in both directions, defined as FromGlobal (FG) and ToGlobal (TG).
When imagery is rectified within ArcGIS Image Server, only the FG transformation is applied, which; therefore, needs to be written as efficient as possible. The TG transformations are primarily used within components such as the Image Service Editor when the ground coordinates need to be computed based on image coordinates, and where the efficiency of the transform is not critical.
Several Geotransformers were implemented within a component of ArcGIS Image Server, named GeoTransCore. A brief overview description of each follows:
NOTE: All the XADefs referee to below (with details about each Geotransformer's parameters) are located at <ArcGIS Image Server installation folder>\Developer Kit\Geotransformers\XADefs.
Affine Geotransformer |
Performs an affine transformation. An affine transformation is also called an affinity. It represents a linear transformation that preserves collinearity, parallelism and ratios of distances. While an affine transformation preserves proportions on lines, it does not necessarily preserve angles or lengths. In general, an affine transformation is a composition of rotations, translations, dilations, and shears. It has six degrees of freedom (parameters) A0,A1,A2,B0,B1,B2 used in a well known formula: X = A0 + A1 * x + A2 * y Y = B0 + B1 * x + B2 * y
Type: 2D (changes only X,Y) Implements: Both FromGlobal & ToGlobal Initializes from: Either FromGlobal & ToGlobal Default: ToGlobal Invertible: Yes Control Points Support: No
For details about its parameters, please see Affine.XADef
|
StdFrame Geotransformer |
Implements the sensor model of a standard frame photogrammetric camera. Used in remote sensing, mostly for aerial and close-range photogrammetry applications, the model consists of a composite set of transformations. Each of these transformations is meant to describe a physical process for which different mathematical representations can be used. The chain of transformations represents two reconstructed orientations and several applied corrections, and its intermediar coordinate systems are widely known as: ground (G) <-> corrected camera (CC) <-> camera (C) <-> film (F) <-> image (I)
Interior orientation (IO) The interior orientation is the bijective mapping between camera space and image space, represented by a 2D affine transformation that converts image coordinates to film coordinates, an offset to the principal point of autocollimation and a lens distortion corrections.
Exterior orientation (EO) The exterior orientation is the surjective mapping between ground space and camera space, applying a collinearity condition and two corrections, earth curvature and refraction.
Type: 3D (Z-aware) Implements: Both FromGlobal & ToGlobal Initializes from: Either FromGlobal & ToGlobal Default: FromGlobal Invertible: Yes Control Points Support: No Comments: ToGlobal transformation requires a height at which image coordinates will be transformed into ground coordinates.
For details about its parameters, please see StdFrame.XADef
|
Rational Geotransformer |
Implements the rational polynomial functions (RPF) transformation, defined as a division of cubic polynoms applied to normalized coordinates. The normalization process consists of two trasformations: translation and scaling. For both image and ground coordinates, an offset and scale are specified as normalization parameters. The RPF transformation is then applied to compute normalized image coordinates. Each cubic polynom has 20 terms and usually the constant term of a denominator polynom is 1. Thus, the total degrees of freedom (parameters) is 88. Following the RPC00B model, the order of the coefficients is: C,L,P,H,LP,LH,PH,L2,P2,H2,PLH,L3,LP2,LH2,L2P,P3,PH2,L2H,P2H,H3 where L - longitude, P - latitude, H - height and C denotes the constant term of the polynom.
Type: 3D (Z-aware) Implements: Only FromGlobal Initializes from: FromGlobal Default: FromGlobal Invertible: No Control Points Support: No Comments: Note that PRJ used by this transformation is usually DD_WGS84. Also, the transformation parameters are usually computed for ellipsoidal heights.
For details about its parameters, please see Rational.XADef
|
WarpGrid Geotransformer |
Performs a 2D warp based on a grid of points. The parameters represent a regular grid of points in the output coordinate system with each point being associated with an x,y coordinate in the input coordinate system. The grid of points forms cells. For each output coordinate an associated input coordinate is computed by bilinear interpolation within the associated cell. If a coordinate outside the grid is the selected, a bilinear extrapolation of the nearest cell is performed. The grid is described through either upper-left corner (default) or lower-left corner, number of rows and columns, and the (X,Y) coordinates of each point within the grid.
Type: 2D (changes only X,Y) Implements: Only FromGlobal Initializes from: FromGlobal Default: FromGlobal Invertible: No Control Points Support: No Comments: The bilinear extrapolation used on coordinates outside the grid may fail to return values within required accuracy.
For details about its parameters, please see WarpGrid.XADef
|
LSR Geotransformer |
Performs a 3D rotation representing coordinates transformation from Universal Space Rectangular (USR) to Local Space Rectangular (LSR). Its parameters are defined as the rotation origin (X,Y,Z) and the orthogonal rotation matrix: M11 M12 M13 M21 M22 M23 M31 M32 M33
It can be used in conjunction with a StdFrame Geotransformer which transforms LSR coordinates into image coordinates.
Type: 3D (Z-aware) Implements: Both FromGlobal & ToGlobal Initializes from: FromGlobal Default: FromGlobal Invertible: Yes Control Points Support: No
For details about its parameters, please see LSR.XADef
|
Geodetic Geotransformer |
Converts Cartesian Earth-Centered, Earth-Fixed (ECEF) XYZ coordinates into geodetic-mapping coordinates, based on a reference ellipsoid described by a series of parameters that define its shape. It can also apply a fixed, given approximate regional geiod separation (otherwise known as undulation). Its order of geodetic coordinates is longitude, latitude, height (either geodetic or orthometric) and the units are decimal degrees (DD) for longitude, latitude and meters for height.
Given the semi-major axis (a) and the inverse flattening (denF) of the ellipsoid, the semi-minor axis (b) is computed as: b = a * (denF - 1) / denF
First and second eccentricity at the power 2 are also computed: e1sqr = (a * a - b * b) / (a * a) e2sqr = (a * a - b * b) / (b * b)
Denoting the geoid separation with N, the geodetic to ECEF transformation is: Lon = x * PI / 180.0 Lat = y * PI / 180.0 Alt = z + N RCPV = a / sqrt(1.0 - e1sqr * sin(Lat) * sin(Lat)) X = (RCPV + Alt) * cos(Lat) * cos(Lon) Y = (RCPV + Alt) * cos(Lat) * sin(Lon) Z = (RCPV * (1.0 - e1sqr) + Alt) * sin(Lat)
The ECEF to geodetic transformation is: Alt = ip.Z p = sqrt(x * x + y * y) T = atan((Alt * a) / (p * b)) sT = sin(T) cT = cos(T) Lat = atan((Alt + e2sqr * b * sT * sT * sT) / (p - e1sqr * a * cT * cT * cT)) RCPV = a / sqrt(1.0 - e1sqr * sin(Lat) * sin(Lat)) if (y != 0.0) {sig = y / fabs(y)} else {sig = 1.0} if (x == 0.0) {Lon = sig * PI / 2.0} else {Lon = atan(y / x) if (x < 0.0) {if (y < 0.0) {Lon = Lon - PI} else {Lon = Lon + PI} } } Alt = p / cos(Lat) - RCPV X = Lon * 180.0 / PI Y = Lat * 180.0 / PI Z = Alt - N
Type: 3D (Z-aware) Implements: Both FromGlobal & ToGlobal Initializes from: Either FromGlobal & ToGlobal Default: ToGlobal Invertible: Yes Control Points Support: No Comments: Can apply only a fixed, given undulation which should be used on a limited area, based on required accuracy.
For details about its parameters, please see Geodetic.XADef
|
Projective Geotransformer |
Performs an projective transformation (preserves collinearity). A projective transformation is the most general linear transformation, requires the use of homogenous coordinates and it is considered to be more unstable than a bilinear transformation because it applies a division to a quantity that can be arbitrarily both small and large. Its eight coefficients are denoted A,B,C,D,E,F,G,H, and transforms coordinates from source to destination based on these equations: X = (A * x + B * y + C) / (G * x + H * y + 1) Y = (D * x + E * y + F) / (G * x + H * y + 1)
It can be constructed from coefficients, or they can be computed from four given control points that represent the matching (X,Y) pairs in both spaces.
Type: 2D (changes only X,Y) Implements: Both FromGlobal & ToGlobal Initializes from: Either FromGlobal & ToGlobal Default: ToGlobal Invertible: Yes Control Points Support: Yes Comments: Transformation coefficients can be computed from ONLY four given control points.
For details about its parameters, please see Projective.XADef |
An additional Geotransformer wraps the ESRI projection engine in order to provide coordinates transformations from one spatial reference system to another. Called SRSTransformer, was implemented as an external module, loaded on demand by the Core component.
As the SRSTransformer, other custom Geotransformer modules can be loaded by GeoTransCore component. When these existing transformations, even concatenated, cannot describe some other mathematical model required to georeference your custom raster types, you can implement a custom Geotransformer that does. Basically, you will need to create a Dynamic Link Library (DLL) that implements custom Geotransformers. For details, please see Implementing a custom Geotransformer. Custom Geotransformer modules are loaded on demand and for security reasons are reported in ArcGIS Image Server's logs.