Class DefaultEllipsoid

    • Field Detail

      • WGS84

        public static final DefaultEllipsoid WGS84
        WGS 1984 ellipsoid with axis in metres. This ellipsoid is used in GPS systems and is the default for most org.geotools packages.
      • GRS80

        public static final DefaultEllipsoid GRS80
        GRS 80 ellipsoid with axis in metres.
        Since:
        2.2
      • INTERNATIONAL_1924

        public static final DefaultEllipsoid INTERNATIONAL_1924
        International 1924 ellipsoid with axis in metres.
      • CLARKE_1866

        public static final DefaultEllipsoid CLARKE_1866
        Clarke 1866 ellipsoid with axis in metres.
        Since:
        2.2
    • Method Detail

      • createEllipsoid

        public static DefaultEllipsoid createEllipsoid​(String name,
                                                       double semiMajorAxis,
                                                       double semiMinorAxis,
                                                       Unit<Length> unit)
        Constructs a new ellipsoid using the specified axis length.
        Parameters:
        name - The ellipsoid name.
        semiMajorAxis - The equatorial radius.
        semiMinorAxis - The polar radius.
        unit - The units of the semi-major and semi-minor axis values.
        Returns:
        An ellipsoid with the given axis length.
      • createEllipsoid

        public static DefaultEllipsoid createEllipsoid​(Map<String,​?> properties,
                                                       double semiMajorAxis,
                                                       double semiMinorAxis,
                                                       Unit<Length> unit)
        Constructs a new ellipsoid using the specified axis length. The properties map is given unchanged to the super-class constructor.
        Parameters:
        properties - Set of properties. Should contains at least "name".
        semiMajorAxis - The equatorial radius.
        semiMinorAxis - The polar radius.
        unit - The units of the semi-major and semi-minor axis values.
        Returns:
        An ellipsoid with the given axis length.
      • createFlattenedSphere

        public static DefaultEllipsoid createFlattenedSphere​(String name,
                                                             double semiMajorAxis,
                                                             double inverseFlattening,
                                                             Unit<Length> unit)
        Constructs a new ellipsoid using the specified axis length and inverse flattening value.
        Parameters:
        name - The ellipsoid name.
        semiMajorAxis - The equatorial radius.
        inverseFlattening - The inverse flattening value.
        unit - The units of the semi-major and semi-minor axis values.
        Returns:
        An ellipsoid with the given axis length.
      • createFlattenedSphere

        public static DefaultEllipsoid createFlattenedSphere​(Map<String,​?> properties,
                                                             double semiMajorAxis,
                                                             double inverseFlattening,
                                                             Unit<Length> unit)
        Constructs a new ellipsoid using the specified axis length and inverse flattening value. The properties map is given unchanged to the super-class constructor.
        Parameters:
        properties - Set of properties. Should contains at least "name".
        semiMajorAxis - The equatorial radius.
        inverseFlattening - The inverse flattening value.
        unit - The units of the semi-major and semi-minor axis values.
        Returns:
        An ellipsoid with the given axis length.
      • wrap

        public static DefaultEllipsoid wrap​(Ellipsoid ellipsoid)
        Wraps an arbitrary ellipsoid into a Geotools implementation. This method is usefull if orthodromic distance computation (for example) are desired. If the supplied ellipsoid is already an instance of DefaultEllipsoid or is null, then it is returned unchanged.
        Parameters:
        ellipsoid - The ellipsoid to wrap.
        Returns:
        The given ellipsoid as a DefaultEllipsoid instance.
      • getAxisUnit

        public Unit<Length> getAxisUnit()
        Returns the linear unit of the semi-major and semi-minor axis values.
        Specified by:
        getAxisUnit in interface Ellipsoid
        Returns:
        The axis linear unit.
      • getSemiMajorAxis

        public double getSemiMajorAxis()
        Length of the semi-major axis of the ellipsoid. This is the equatorial radius in axis linear unit.
        Specified by:
        getSemiMajorAxis in interface Ellipsoid
        Returns:
        Length of semi-major axis.
      • getSemiMinorAxis

        public double getSemiMinorAxis()
        Length of the semi-minor axis of the ellipsoid. This is the polar radius in axis linear unit.
        Specified by:
        getSemiMinorAxis in interface Ellipsoid
        Returns:
        Length of semi-minor axis.
      • getEccentricity

        public double getEccentricity()
        The ratio of the distance between the center and a focus of the ellipse to the length of its semimajor axis. The eccentricity can alternately be computed from the equation: e=sqrt(2f-f²).
        Returns:
        The eccentricity of this ellipsoid.
      • getInverseFlattening

        public double getInverseFlattening()
        Returns the value of the inverse of the flattening constant. Flattening is a value used to indicate how closely an ellipsoid approaches a spherical shape. The inverse flattening is related to the equatorial/polar radius by the formula

        ivf = re/(re-rp).

        For perfect spheres (i.e. if isSphere() returns true), the Double.POSITIVE_INFINITY value is used.

        Specified by:
        getInverseFlattening in interface Ellipsoid
        Returns:
        The inverse flattening value.
      • isIvfDefinitive

        public boolean isIvfDefinitive()
        Indicates if the inverse flattening is definitive for this ellipsoid. Some ellipsoids use the IVF as the defining value, and calculate the polar radius whenever asked. Other ellipsoids use the polar radius to calculate the IVF whenever asked. This distinction can be important to avoid floating-point rounding errors.
        Specified by:
        isIvfDefinitive in interface Ellipsoid
        Returns:
        true if the inverse flattening is definitive, or false if the polar radius is definitive.
      • isSphere

        public boolean isSphere()
        true if the ellipsoid is degenerate and is actually a sphere. The sphere is completely defined by the semi-major axis, which is the radius of the sphere.
        Specified by:
        isSphere in interface Ellipsoid
        Returns:
        true if the ellipsoid is degenerate and is actually a sphere.
      • orthodromicDistance

        public double orthodromicDistance​(Point2D P1,
                                          Point2D P2)
        Returns the orthodromic distance between two geographic coordinates. The orthodromic distance is the shortest distance between two points on a sphere's surface. The default implementation delegates the work to orthodromicDistance(double,double,double,double).
        Parameters:
        P1 - Longitude and latitude of first point (in decimal degrees).
        P2 - Longitude and latitude of second point (in decimal degrees).
        Returns:
        The orthodromic distance (in the units of this ellipsoid).
      • orthodromicDistance

        public double orthodromicDistance​(double x1,
                                          double y1,
                                          double x2,
                                          double y2)
        Returns the orthodromic distance between two geographic coordinates. The orthodromic distance is the shortest distance between two points on a sphere's surface. The orthodromic path is always on a great circle. This is different from the loxodromic distance, which is a longer distance on a path with a constant direction on the compass.
        Parameters:
        x1 - Longitude of first point (in decimal degrees).
        y1 - Latitude of first point (in decimal degrees).
        x2 - Longitude of second point (in decimal degrees).
        y2 - Latitude of second point (in decimal degrees).
        Returns:
        The orthodromic distance (in the units of this ellipsoid's axis).
      • equals

        public boolean equals​(AbstractIdentifiedObject object,
                              boolean compareMetadata)
        Compare this ellipsoid with the specified object for equality.
        Overrides:
        equals in class AbstractIdentifiedObject
        Parameters:
        object - The object to compare to this.
        compareMetadata - true for performing a strict comparaison, or false for comparing only properties relevant to transformations.
        Returns:
        true if both objects are equal.
      • hashCode

        public int hashCode()
        Returns a hash value for this ellipsoid. Name, remarks and the like are not taken in account. In other words, two ellipsoids will return the same hash value if they are equal in the sense of equals(AbstractIdentifiedObject, false).
        Overrides:
        hashCode in class AbstractIdentifiedObject
        Returns:
        The hash code value. This value doesn't need to be the same in past or future versions of this class.
      • formatPROJ

        public String formatPROJ​(PROJFormatter formatter)
        Description copied from interface: PROJFormattable
        Format the inner part of a PROJFormattable object.

        This method is automatically invoked by PROJFormatter.append(PROJFormattable).

        For example for a element (DefaultOperationMethod) of type Projection, the formatter will invoke this method to prepend the "+proj=" String for completing the PROJ String before appending the Projection Name (e.g. lcc for a Lambert Conformal Conic)

        Specified by:
        formatPROJ in interface PROJFormattable
        Parameters:
        formatter - The PROJFormatter to use.
        Returns:
        The proj String of the PROJ element type if any. (e.g. +ellps= for named ellipsoids, +datum= for named datums).