Class EqualArea
- Object
-
- Formattable
-
- AbstractMathTransform
-
- MapProjection
-
- EqualArea
-
- All Implemented Interfaces:
Serializable
,MathTransform
,MathTransform2D
public class EqualArea extends MapProjection
Equal Earth is a projection inspired by the Robinson projection, but unlike the Robinson projection retains the relative size of areas.The projection was designed in 2018 by Bojan Savric, Tom Patterson and Bernhard Jenny.
Publication: Bojan Savric, Tom Patterson & Bernhard Jenny (2018). The Equal Earth map projection, International Journal of Geographical Information Science, DOI: 10.1080/13658816.2018.1504949
- See Also:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
EqualArea.Provider
The math transform provider for an Plate Carree projection.-
Nested classes/interfaces inherited from class MapProjection
MapProjection.AbstractProvider
-
-
Field Summary
-
Fields inherited from class MapProjection
centralMeridian, en0, en1, en2, en3, en4, excentricity, excentricitySquared, falseEasting, falseNorthing, globalScale, invertible, isSpherical, latitudeOfOrigin, LOGGER, scaleFactor, semiMajor, semiMinor, SKIP_SANITY_CHECKS
-
Fields inherited from class Formattable
SINGLE_LINE
-
-
Constructor Summary
Constructors Constructor Description EqualArea(ParameterValueGroup parameters)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description ParameterDescriptorGroup
getParameterDescriptors()
Returns the parameter descriptors for this map projection.protected Point2D
inverseTransformNormalized(double x, double y, Point2D ptDst)
Transforms the specified coordinate and stores the result inptDst
.protected Point2D
transformNormalized(double lpLambda, double lpPhi, Point2D ptDst)
Transforms the specified coordinate and stores the result inptDst
.-
Methods inherited from class MapProjection
checkReciprocal, equals, getParameterValues, getSourceDimensions, getTargetDimensions, getToleranceForAssertions, hashCode, inv_mlfn, inverse, mlfn, orthodromicDistance, resetWarnings, transform, transform, transform
-
Methods inherited from class AbstractMathTransform
createTransformedShape, derivative, derivative, ensureNonNull, formatWKT, getName, isIdentity, needCopy, normalizeAngle, rollLongitude, 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
-
Methods inherited from interface MathTransform2D
createTransformedShape, derivative
-
-
-
-
Constructor Detail
-
EqualArea
public EqualArea(ParameterValueGroup parameters)
-
-
Method Detail
-
getParameterDescriptors
public ParameterDescriptorGroup getParameterDescriptors()
Description copied from class:MapProjection
Returns the parameter descriptors for this map projection. This is used for a providing a default implementation ofMapProjection.getParameterValues()
, as well as arguments checking.- Specified by:
getParameterDescriptors
in classMapProjection
- Returns:
- The parameter descriptors for this math transform, or
null
. - See Also:
OperationMethod.getParameters()
-
inverseTransformNormalized
protected Point2D inverseTransformNormalized(double x, double y, Point2D ptDst) throws ProjectionException
Description copied from class:MapProjection
Transforms the specified coordinate and stores the result inptDst
. This method returns longitude as x values in the range[-PI..PI]
and latitude as y values in the range[-PI/2..PI/2]
. It will be checked by the caller, so this method doesn't need to performs this check.Input coordinates have the
MapProjection.falseEasting
andMapProjection.falseNorthing
removed and are divided byMapProjection.globalScale
before this method is invoked. After this method is invoked, theMapProjection.centralMeridian
is added to thex
results inptDst
. This means that projections that implement this method are performed on an ellipse (or sphere) with a semi-major axis of 1.In PROJ.4, the same standardization, described above, is handled by
pj_inv.c
. Therefore when porting projections from PROJ.4, the inverse transform equations can be used directly here with minimal change. In the equations of Snyder,MapProjection.falseEasting
,MapProjection.falseNorthing
andMapProjection.scaleFactor
are usually not given. When implementing these equations here, you will not need to add theMapProjection.centralMeridian
to the output longitude or remove theMapProjection.semiMajor
(a or R).- Specified by:
inverseTransformNormalized
in classMapProjection
- Parameters:
x
- The easting of the coordinate, linear distance on a unit sphere or ellipse.y
- The northing of the coordinate, linear distance on a unit sphere or ellipse.ptDst
- the specified coordinate point that stores the result of transformingptSrc
, ornull
. Ordinates will be in radians.- Returns:
- the coordinate point after transforming
x
,y
and storing the result inptDst
. - Throws:
ProjectionException
- if the point can't be transformed.
-
transformNormalized
protected Point2D transformNormalized(double lpLambda, double lpPhi, Point2D ptDst) throws ProjectionException
Description copied from class:MapProjection
Transforms the specified coordinate and stores the result inptDst
. This method is usually (but not guaranteed) to be invoked with values of x in the range[-PI..PI]
and values of y in the range[-PI/2..PI/2]
. Values outside those ranges are accepted (sometime with a warning logged) on the assumption that most implementations use those values only in trigonometric functions like sin and cos.Coordinates have the
MapProjection.centralMeridian
removed from lambda before this method is invoked. After this method is invoked, the results inptDst
are multiplied byMapProjection.globalScale
, and theMapProjection.falseEasting
andMapProjection.falseNorthing
are added. This means that projections that implement this method are performed on an ellipse (or sphere) with a semi-major axis of 1.In PROJ.4, the same standardization, described above, is handled by
pj_fwd.c
. Therefore when porting projections from PROJ.4, the forward transform equations can be used directly here with minimal change. In the equations of Snyder,MapProjection.falseEasting
,MapProjection.falseNorthing
andMapProjection.scaleFactor
are usually not given. When implementing these equations here, you will not need to remove theMapProjection.centralMeridian
from lambda or apply theMapProjection.semiMajor
(a or R).- Specified by:
transformNormalized
in classMapProjection
- Parameters:
lpLambda
- The longitude of the coordinate, in radians.lpPhi
- The latitude of the coordinate, in radians.ptDst
- the specified coordinate point that stores the result of transformingptSrc
, ornull
. Ordinates will be in a dimensionless unit, as a linear distance on a unit sphere or ellipse.- Returns:
- the coordinate point after transforming (
lambda
,phi
) and storing the result inptDst
. - Throws:
ProjectionException
- if the point can't be transformed.
-
-