Package org.proj4

Class PJ


  • public class PJ
    extends Object
    Wraps the Proj.4 PJ native data structure. Almost every methods defined in this class are native methods delegating the work to the Proj.4 library. This class is the only place where such native methods are defined.

    In the Proj.4 library, the PJ structure aggregates in a single place information usually splitted in many different ISO 19111 interfaces: Ellipsoid, Datum, PrimeMeridian, CoordinateSystem, CoordinateReferenceSystem and their sub-interfaces. The relationship with the GeoAPI methods is indicated in the "See" tags when appropriate.

    Since:
    3.1
    • Field Detail

    • Constructor Detail

      • PJ

        public PJ​(String definition)
           throws IllegalArgumentException
        Creates a new PJ structure from the given Proj.4 definition string.
        Parameters:
        definition - the Proj.4 definition string.
        Throws:
        IllegalArgumentException - if the PJ structure can not be created from the given string.
      • PJ

        public PJ​(PJ crs,
                  PJ.Type type)
           throws IllegalArgumentException
        Creates a new PJ structure derived from an existing PJ object. This constructor is usually for getting the base geographic CRS from a projected CRS.
        Parameters:
        crs - the CRS (usually projected) from which to derive a new CRS.
        type - the type of the new CRS. Currently, only PJ.Type.GEOGRAPHIC is supported.
        Throws:
        IllegalArgumentException - if the PJ structure can not be created.
    • Method Detail

      • getVersion

        public static String getVersion()
        Returns the version number of the Proj.4 library.
        Returns:
        the Proj.4 release string.
      • getDefinition

        public String getDefinition()
        Returns the Proj.4 definition string. This is the string given to the constructor, expanded with as much information as possible.
        Returns:
        the Proj.4 definition string.
      • getType

        public PJ.Type getType()
        Returns the Coordinate Reference System type.
        Returns:
        the CRS type.
      • getSemiMajorAxis

        public double getSemiMajorAxis()
        Returns the value stored in the a_orig PJ field.
        Returns:
        the axis length stored in a_orig.
        See Also:
        Ellipsoid.getSemiMajorAxis()
      • getSemiMinorAxis

        public double getSemiMinorAxis()
        Returns the value computed from PJ fields by \u221a((a_orig)² × (1 - es_orig)).
        Returns:
        the axis length computed by \u221a((a_orig)² × (1 - es_orig)).
        See Also:
        Ellipsoid.getSemiMinorAxis()
      • getEccentricitySquared

        public double getEccentricitySquared()
        Returns the square of the ellipsoid eccentricity (ε²). The eccentricity is related to axis length by ε=√(1-(b/a)²). The eccentricity of a sphere is zero.
        Returns:
        the eccentricity.
        See Also:
        Ellipsoid.isSphere(), Ellipsoid.getInverseFlattening()
      • getAxisDirections

        public char[] getAxisDirections()
        Returns an array of character indicating the direction of each axis. Directions are characters like 'e' for East, 'n' for North and 'u' for Up.
        Returns:
        the axis directions.
        See Also:
        CoordinateSystemAxis.getDirection()
      • getGreenwichLongitude

        public double getGreenwichLongitude()
        Longitude of the prime meridian measured from the Greenwich meridian, positive eastward.
        Returns:
        the prime meridian longitude, in degrees.
        See Also:
        PrimeMeridian.getGreenwichLongitude()
      • getLinearUnitToMetre

        public double getLinearUnitToMetre​(boolean vertical)
        Returns the conversion factor from the linear units to metres.
        Parameters:
        vertical - false for the conversion factor of horizontal axes, or true for the conversion factor of the vertical axis.
        Returns:
        the conversion factor to metres for the given axis.
      • transform

        public void transform​(PJ target,
                              int dimension,
                              double[] coordinates,
                              int offset,
                              int numPts)
                       throws PJException
        Transforms in-place the coordinates in the given array. The coordinates array shall contain (x,y,z,…) tuples, where the z and any additional dimensions are optional. Note that any dimension after the z value are ignored.

        Input and output units:

        • Angular units (as in longitude and latitudes) are decimal degrees.
        • Linear units are usually metres, but this is actually projection-dependent.
        Parameters:
        target - the target CRS.
        dimension - the dimension of each coordinate value. Must be in the [2-100] range.
        coordinates - the coordinates to transform, as a sequence of (x,y,<z>,…) tuples.
        offset - offset of the first coordinate in the given array.
        numPts - number of points to transform.
        Throws:
        NullPointerException - if the target or coordinates argument is null.
        IndexOutOfBoundsException - if the offset or numPts arguments are invalid.
        PJException - if the operation failed for another reason (provided by Proj.4).
        See Also:
        MathTransform.transform(double[], int, double[], int, int)
      • getLastError

        public String getLastError()
        Returns a description of the last error that occurred, or null if none.
        Returns:
        the last error that occurred, or null.
      • toString

        public String toString()
        Returns the string representation of the PJ structure.
        Overrides:
        toString in class Object
        Returns:
        the string representation.
      • finalize

        protected final void finalize()
        Deallocates the native PJ data structure. This method should be invoked exactly once, only by the garbage collector,
        Overrides:
        finalize in class Object