Class NADCONTransform
- All Implemented Interfaces:
Serializable
,MathTransform
,MathTransform2D
Some of the NADCON grids, their areas of use, and source datums are shown in the following table.
Shift File Name | Area | Source Datum | Accuracy at 67% confidence (m) |
---|---|---|---|
CONUS | Conterminous U S (lower 48 states) | NAD27 | 0.15 |
ALASKA | Alaska, incl. Aleutian Islands | NAD27 | 0.5 |
HAWAII | Hawaiian Islands | Old Hawaiian (4135) | 0.2 |
STLRNC | St. Lawrence Is., AK | St. Lawrence Island (4136) | -- |
STPAUL | St. Paul Is., AK | St. Paul Island (4137) | -- |
STGEORGE | St. George Is., AK | St. George Island (4138) | -- |
PRVI | Puerto Rico and the Virgin Islands | Puerto Rico (4139) | 0.05 |
Grid shift files come in two formats: binary and text. The files from the NGS are binary and have .las
(latitude shift) and .los
(longitude shift) extentions. Text grids may be created with the NGS
nadgrd program and have .laa
(latitude shift) and .loa
(longitude shift) file extentions. Both
types of files may be used here.
The grid names to use for transforming are parameters of this MathTransform
. This parameter may be the
full name and path to the grids or just the name of the grids if the default location of the grids was set as a
preference. This preference may be set with the main method of this class.
Transformations here have been tested to be within 0.00001 seconds of values given by the NGS ndcon210 program for NADCON grids. American Samoa and HARN shifts have not yet been tested. References:
- NADCONreadme
- American Samoa Grids for NADCON - Samoa_Readme.txt
- NADCON - The Application of Minimum-Curvature-Derived Surfaces in the Transformation of Positional Data From the North American Datum of 1927 to the North American Datum of 1983 - NOAA TM.
ndcon210.for
- NGS fortran source code for NADCON conversions. See the following subroutines: TRANSF, TO83, FGRID, INTRP, COEFF and SURFnadgrd.for
- NGS fortran source code to export/import binary and text grid formats- EPSG Geodesy Parameters database version 6.5
- Since:
- 2.1
- Author:
- Rueben Schulz
- See Also:
-
Nested Class Summary
Nested Classes -
Field Summary
Fields inherited from class Formattable
SINGLE_LINE
-
Constructor Summary
ConstructorsConstructorDescriptionNADCONTransform
(URI latGridName, URI longGridName) Constructs aNADCONTransform
from the specified grid shift files. -
Method Summary
Modifier and TypeMethodDescriptionboolean
Compares the specified object with this math transform for equality.Returns the parameter descriptors for this math transform.Returns the parameter values for this math transform.int
Gets the dimension of input points (always 2).int
Gets the dimension of output points (always 2).int
hashCode()
Returns a hash value for this transform.inverse()
Returns the inverse of this transform.void
inverseTransform
(double[] srcPts, int srcOff, double[] dstPts, int dstOff, int numPts) Transforms nad83 values to nad27.protected URL
locateGrid
(URI uri) static void
Used to set the preference for the default grid shift file location.void
transform
(double[] srcPts, int srcOff, double[] dstPts, int dstOff, int numPts) Transforms a list of coordinate point ordinal values.Methods inherited from class AbstractMathTransform
createTransformedShape, derivative, derivative, ensureNonNull, formatWKT, getName, isIdentity, needCopy, normalizeAngle, rollLongitude, transform, transform, transform, transform, transform
Methods inherited from class Formattable
cleanupThreadLocals, toString, toWKT, toWKT, toWKT, toWKT
Methods inherited from interface MathTransform
derivative, isIdentity, toWKT, transform, transform, transform, transform
Methods inherited from interface MathTransform2D
createTransformedShape, derivative, transform
-
Constructor Details
-
NADCONTransform
public NADCONTransform(URI latGridName, URI longGridName) throws ParameterNotFoundException, FactoryException Constructs aNADCONTransform
from the specified grid shift files.- Parameters:
latGridName
- path and name (or just name ifGRID_LOCATION
is set) to the latitude difference file. This will have a.las
or.laa
file extention.longGridName
- path and name (or just name ifGRID_LOCATION
is set) to the longitude difference file. This will have a.los
or.loa
file extention.- Throws:
ParameterNotFoundException
- if a math transform parameter cannot be found.FactoryException
- if there is a problem creating this math transform (ie file extentions are unknown or there is an error reading the grid files)
-
-
Method Details
-
locateGrid
- Throws:
FactoryException
-
getParameterDescriptors
Returns the parameter descriptors for this math transform.- Overrides:
getParameterDescriptors
in classAbstractMathTransform
- Returns:
- The parameter descriptors for this math transform, or
null
. - See Also:
-
getParameterValues
Returns the parameter values for this math transform.- Overrides:
getParameterValues
in classAbstractMathTransform
- Returns:
- A copy of the parameter values for this math transform.
- See Also:
-
getSourceDimensions
public int getSourceDimensions()Gets the dimension of input points (always 2).- Specified by:
getSourceDimensions
in interfaceMathTransform
- Specified by:
getSourceDimensions
in classAbstractMathTransform
- Returns:
- the source dimensions.
-
getTargetDimensions
public int getTargetDimensions()Gets the dimension of output points (always 2).- Specified by:
getTargetDimensions
in interfaceMathTransform
- Specified by:
getTargetDimensions
in classAbstractMathTransform
- Returns:
- the target dimensions.
-
transform
public void transform(double[] srcPts, int srcOff, double[] dstPts, int dstOff, int numPts) throws TransformException Transforms a list of coordinate point ordinal values. This method is provided for efficiently transforming many points. The supplied array of ordinal values will contain packed ordinal values. For example, if the source dimension is 3, then the ordinals will be packed in this order: (x0,y0,z0,x1,y1,z1 ...). All input and output values are in decimal degrees.
- Specified by:
transform
in interfaceMathTransform
- Parameters:
srcPts
- the array containing the source point coordinates.srcOff
- the offset to the first point to be transformed in the source array.dstPts
- the array into which the transformed point coordinates are returned. May be the same thansrcPts
.dstOff
- the offset to the location of the first transformed point that is stored in the destination array.numPts
- the number of point objects to be transformed.- Throws:
TransformException
- if the input point is outside the area covered by this grid.
-
inverseTransform
public void inverseTransform(double[] srcPts, int srcOff, double[] dstPts, int dstOff, int numPts) throws TransformException Transforms nad83 values to nad27. Input and output values are in decimal degrees. This is done by itteratively finding a nad27 value that shifts to the input nad83 value. The input nad83 value is used as the first approximation.- Parameters:
srcPts
- the array containing the source point coordinates.srcOff
- the offset to the first point to be transformed in the source array.dstPts
- the array into which the transformed point coordinates are returned. May be the same thansrcPts
.dstOff
- the offset to the location of the first transformed point that is stored in the destination array.numPts
- the number of point objects to be transformed.- Throws:
TransformException
- if the input point is outside the area covered by this grid.
-
inverse
Returns the inverse of this transform.- Specified by:
inverse
in interfaceMathTransform
- Specified by:
inverse
in interfaceMathTransform2D
- Overrides:
inverse
in classAbstractMathTransform
- Returns:
- the inverse of this transform
-
hashCode
public int hashCode()Description copied from class:AbstractMathTransform
Returns a hash value for this transform.- Overrides:
hashCode
in classAbstractMathTransform
-
equals
Description copied from class:AbstractMathTransform
Compares the specified object with this math transform for equality. The default implementation checks ifobject
is an instance of the same class thanthis
and use the same parameter descriptor. Subclasses should override this method in order to compare internal fields.- Overrides:
equals
in classAbstractMathTransform
- Parameters:
object
- The object to compare with this transform.- Returns:
true
if the given object is a transform of the same class and if, given identical source position, the transformed position would be the equals.
-
main
Used to set the preference for the default grid shift file location. This allows grids parameters to be specified by name only, without the full path. This needs to be done only once, by the user. Path values may be simple file system paths or more complex text representations of a url. A value of "default" resets this preference to its default value.Example:
java org.geotools.referencing.operation.transform.NADCONTransform file:///home/rschulz/GIS/NADCON/data
- Parameters:
args
- a single argument for the defualt location of grid shift files
-