Class MeridianArcBased
java.lang.Object
org.apache.sis.io.wkt.FormattableObject
org.apache.sis.referencing.operation.transform.AbstractMathTransform
org.apache.sis.referencing.operation.transform.AbstractMathTransform2D
org.apache.sis.referencing.operation.projection.NormalizedProjection
org.apache.sis.referencing.operation.projection.MeridianArcBased
- All Implemented Interfaces:
Serializable
,Parameterized
,LenientComparable
,org.opengis.referencing.operation.MathTransform
,org.opengis.referencing.operation.MathTransform2D
- Direct Known Subclasses:
CassiniSoldner
,Polyconic
,Sinusoidal
Base class of map projections based on distance along the meridian from equator to latitude φ.
Except for some cases like "Sinusoidal equal area", those projections are neither conformal nor equal-area.
- Since:
- 1.0
- Version:
- 1.0
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from class org.apache.sis.referencing.operation.projection.NormalizedProjection
NormalizedProjection.ParameterRole
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final double
Coefficients for the forward transform implemented by thedistance(double, double, double)
method.private final double
Coefficients for the forward transform implemented by thedistance(double, double, double)
method.private final double
Coefficients for the forward transform implemented by thedistance(double, double, double)
method.private final double
Coefficients for the forward transform implemented by thedistance(double, double, double)
method.private final double
Coefficients for the forward transform implemented by thedistance(double, double, double)
method.private final double
Coefficients used in inverse transform.private final double
Coefficients used in inverse transform.private final double
Coefficients used in inverse transform.private final double
Coefficients used in inverse transform.private final double
Denominator of rectifying latitude equation.private static final long
For cross-version compatibility.Fields inherited from class org.apache.sis.referencing.operation.projection.NormalizedProjection
ANGULAR_TOLERANCE, context, eccentricity, eccentricitySquared, ITERATION_TOLERANCE, LARGE_LONGITUDE_LIMIT, MAXIMUM_ITERATIONS, POLAR_AREA_LIMIT
Fields inherited from class org.apache.sis.referencing.operation.transform.AbstractMathTransform2D
DIMENSION
-
Constructor Summary
ConstructorsConstructorDescriptionMeridianArcBased
(Initializer initializer) Creates a new normalized projection from the parameters computed by the given initializer.MeridianArcBased
(MeridianArcBased other) Creates a new projection initialized to the same parameters than the given one. -
Method Summary
Modifier and TypeMethodDescription(package private) final double
distance
(double φ, double sinφ, double cosφ) Computes the distance (M) along meridian arc from equator to a given latitude φ.(package private) final double
dM_dφ
(double sinφ2) Gets the derivative of thisdistance(double, double, double)
method.(package private) final double
latitude
(double distance) Computes latitude φ from a meridian distance M.Methods inherited from class org.apache.sis.referencing.operation.projection.NormalizedProjection
completeWithWraparound, computeHashCode, createMapProjection, delegate, equals, getContextualParameters, getInternalParameterNames, getInternalParameterValues, getParameterDescriptors, getParameterValues, getWraparoundLongitude, inverse, inverseTransform, transform, tryConcatenate, tryConcatenate, variant
Methods inherited from class org.apache.sis.referencing.operation.transform.AbstractMathTransform2D
createTransformedShape, derivative, getSourceDimensions, getTargetDimensions, transform
Methods inherited from class org.apache.sis.referencing.operation.transform.AbstractMathTransform
derivative, equals, formatTo, getDomain, hashCode, isIdentity, transform, transform, transform, transform, transform
Methods inherited from class org.apache.sis.io.wkt.FormattableObject
print, toString, toString, toWKT
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
Methods inherited from interface org.opengis.referencing.operation.MathTransform
derivative, isIdentity, toWKT, transform, transform, transform, transform, transform
-
Field Details
-
serialVersionUID
private static final long serialVersionUIDFor cross-version compatibility.- See Also:
-
cf0
private final double cf0Coefficients for the forward transform implemented by thedistance(double, double, double)
method. Values are computed by the constructor and depend on the form of equation implemented bydistance(…)
. We do not use the formulas in the form published by EPSG or Snyder since a few algebraic operations allow to replace the sin(2φ), sin(4φ), sin(6φ) and sin(8φ) terms by sin²(φ), which is faster to calculate. See comments in constructor body for more information. -
cf1
private final double cf1Coefficients for the forward transform implemented by thedistance(double, double, double)
method. Values are computed by the constructor and depend on the form of equation implemented bydistance(…)
. We do not use the formulas in the form published by EPSG or Snyder since a few algebraic operations allow to replace the sin(2φ), sin(4φ), sin(6φ) and sin(8φ) terms by sin²(φ), which is faster to calculate. See comments in constructor body for more information. -
cf2
private final double cf2Coefficients for the forward transform implemented by thedistance(double, double, double)
method. Values are computed by the constructor and depend on the form of equation implemented bydistance(…)
. We do not use the formulas in the form published by EPSG or Snyder since a few algebraic operations allow to replace the sin(2φ), sin(4φ), sin(6φ) and sin(8φ) terms by sin²(φ), which is faster to calculate. See comments in constructor body for more information. -
cf3
private final double cf3Coefficients for the forward transform implemented by thedistance(double, double, double)
method. Values are computed by the constructor and depend on the form of equation implemented bydistance(…)
. We do not use the formulas in the form published by EPSG or Snyder since a few algebraic operations allow to replace the sin(2φ), sin(4φ), sin(6φ) and sin(8φ) terms by sin²(φ), which is faster to calculate. See comments in constructor body for more information. -
cf4
private final double cf4Coefficients for the forward transform implemented by thedistance(double, double, double)
method. Values are computed by the constructor and depend on the form of equation implemented bydistance(…)
. We do not use the formulas in the form published by EPSG or Snyder since a few algebraic operations allow to replace the sin(2φ), sin(4φ), sin(6φ) and sin(8φ) terms by sin²(φ), which is faster to calculate. See comments in constructor body for more information. -
ci1
private final double ci1Coefficients used in inverse transform. Same comment than forcf0
… applies. -
ci2
private final double ci2Coefficients used in inverse transform. Same comment than forcf0
… applies. -
ci3
private final double ci3Coefficients used in inverse transform. Same comment than forcf0
… applies. -
ci4
private final double ci4Coefficients used in inverse transform. Same comment than forcf0
… applies. -
rµ
private final double rµDenominator of rectifying latitude equation. The rectifying latitude is computed by µ = M/(1 – ℯ²/4 – 3ℯ⁴/64 – 5ℯ⁶/256 – …) (Snyder 7-19 with a=1).
-
-
Constructor Details
-
MeridianArcBased
MeridianArcBased(Initializer initializer) Creates a new normalized projection from the parameters computed by the given initializer. -
MeridianArcBased
MeridianArcBased(MeridianArcBased other) Creates a new projection initialized to the same parameters than the given one.
-
-
Method Details
-
distance
final double distance(double φ, double sinφ, double cosφ) Computes the distance (M) along meridian arc from equator to a given latitude φ. Special cases:- If φ is 0°, then this method returns 0.
- If φ=+π/2, then this method returns a value slightly smaller than +π/2, depending on the eccentricity.
- If φ=-π/2, then this method returns a value slightly greater than -π/2, depending on the eccentricity.
- Parameters:
\u03c6
- latitude for which to compute the distance, in radians.sin\u03c6
- value of sin(φ).cos\u03c6
- value of cos(φ).- Returns:
- distance for the given latitude on an ellipsoid of semi-major axis of 1.
-
dM_dφ
final double dM_dφ(double sinφ2) Gets the derivative of thisdistance(double, double, double)
method.- Returns:
- the derivative at the specified latitude.
-
latitude
final double latitude(double distance) Computes latitude φ from a meridian distance M.- Parameters:
distance
- meridian distance for which to compute the latitude.- Returns:
- the latitude of given meridian distance, in radians.
-