Class CRSEnvelope

  • All Implemented Interfaces:
    Bounds

    public class CRSEnvelope
    extends Object
    implements Bounds
    A pair of coordinates and a reference system that represents a section of the Earth.

    Represents one of the following:

    • EX_GeographicBoundingBox: (implicit CRS:84) limits of the enclosing rectangle in longitude and latitude decimal degrees
    • BoundingBox: The BoundingBox attributes indicate the limits of the bounding box in units of the specified coordinate reference system.
    The interpretation of the srsName is based on the version of WMS specification used:
    • After WMS 1.3.0: axis order be returned with forceXY=false
    • Before WMS 1.3.0: axis order defined using forceXY=true
    Author:
    Richard Gould
    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected double maxX
      Max of axis 0 as specified by CRS
      protected double maxY
      Max of axis 1 as specified by CRS
      protected double minX
      Min of axis 0 as specified by CRS
      protected double minY
      Min of axis 1 as specified by CRS
      protected double resX
      optional spatial resolution in the units of crs
      protected double resY
      optional spatial resolution in the units of crs
    • Constructor Summary

      Constructors 
      Constructor Description
      CRSEnvelope()
      Construct an empty BoundingBox
      CRSEnvelope​(String epsgCode, double minX, double minY, double maxX, double maxY)
      Create a bounding box with the specified properties
      CRSEnvelope​(Bounds envelope)  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      double getCenter​(int dimension)  
      CoordinateReferenceSystem getCoordinateReferenceSystem()
      Returns the coordinate reference system for this envelope (if known). return CoordinateReferenceSystem if known, or null
      int getDimension()
      The length of coordinate sequence (the number of entries) in this envelope.
      String getEPSGCode()  
      double getLength​(int dimension)  
      Position getLowerCorner()
      A coordinate position consisting of all the minimal ordinates for each dimension for all points within the Envelope.
      double getMaximum​(int dimension)
      Returns the maximal ordinate along the specified dimension.
      double getMaxX()
      The maxX value is the higher X coordinate value
      double getMaxY()
      The maxY value is the higher Y coordinate value
      double getMedian​(int dimension)
      Returns the median ordinate along the specified dimension.
      double getMinimum​(int dimension)
      Returns the minimal ordinate along the specified dimension.
      double getMinX()
      The minX value is the lower X coordinate value
      double getMinY()
      The minY value is the lower Y coordinate value
      double getResX()
      Optional spatial resolution in the units of crs.
      double getResY()
      Optional spatial resolution in the units of crs.
      double getSpan​(int dimension)
      Returns the envelope span (typically width or height) along the specified dimension.
      String getSRSName()
      The CRS is bounding box's Coordinate Reference System.
      Position getUpperCorner()
      A coordinate position consisting of all the maximal ordinates for each dimension for all points within the Envelope.
      void setEPSGCode​(String epsgCode)
      Helper method to set srsName.
      void setMaxX​(double maxX)
      The maxX value is the higher X coordinate value
      void setMaxY​(double maxY)
      The maxY value is the higher Y coordinate value
      void setMinX​(double minX)
      The minX value is the lower X coordinate value
      void setMinY​(double minY)
      The minY value is the lower Y coordinate value
      void setResX​(double resX)
      Optional spatial resolution in the units of crs.
      void setResY​(double resY)
      Optional spatial resolution in the units of crs.
      void setSRSName​(String srsName, boolean forceXY)
      The CRS is bounding box's Coordinate Reference System.
      String toString()  
    • Field Detail

      • minX

        protected double minX
        Min of axis 0 as specified by CRS
      • minY

        protected double minY
        Min of axis 1 as specified by CRS
      • maxX

        protected double maxX
        Max of axis 0 as specified by CRS
      • maxY

        protected double maxY
        Max of axis 1 as specified by CRS
      • resX

        protected double resX
        optional spatial resolution in the units of crs
      • resY

        protected double resY
        optional spatial resolution in the units of crs
    • Constructor Detail

      • CRSEnvelope

        public CRSEnvelope()
        Construct an empty BoundingBox
      • CRSEnvelope

        public CRSEnvelope​(String epsgCode,
                           double minX,
                           double minY,
                           double maxX,
                           double maxY)
        Create a bounding box with the specified properties
        Parameters:
        epsgCode - The Coordinate Reference System this bounding box is in
      • CRSEnvelope

        public CRSEnvelope​(Bounds envelope)
    • Method Detail

      • getCoordinateReferenceSystem

        public CoordinateReferenceSystem getCoordinateReferenceSystem()
        Returns the coordinate reference system for this envelope (if known). return CoordinateReferenceSystem if known, or null
        Specified by:
        getCoordinateReferenceSystem in interface Bounds
        Returns:
        The envelope CRS, or null if unknown.
      • getSRSName

        public String getSRSName()
        The CRS is bounding box's Coordinate Reference System.
        Returns:
        the CRS/SRS value, or null for implicit CRS:84
      • setEPSGCode

        public void setEPSGCode​(String epsgCode)
        Helper method to set srsName.
        See Also:
        setSRSName(java.lang.String)
      • setSRSName

        public void setSRSName​(String srsName,
                               boolean forceXY)
        The CRS is bounding box's Coordinate Reference System.

        Examples from WMS specification:

        • CRS:84: default in lon / lat order
        Parameters:
        srsName - The SRSName for this envelope; usually an EPSG code
        forceXY - True to forceXY axis order (used prior to WMS 1.3.0), False to use provided axis order (WMS 1.3.0 and later )
      • getDimension

        public int getDimension()
        Description copied from interface: Bounds
        The length of coordinate sequence (the number of entries) in this envelope. Mandatory even when the coordinate reference system is unknown.
        Specified by:
        getDimension in interface Bounds
        Returns:
        The dimensionality of this envelope.
      • getCenter

        public double getCenter​(int dimension)
      • getMedian

        public double getMedian​(int dimension)
        Description copied from interface: Bounds
        Returns the median ordinate along the specified dimension. The result should be equals (minus rounding error) to:
        (getMinimum(dimension) + getMaximum(dimension)) / 2
        Specified by:
        getMedian in interface Bounds
        Parameters:
        dimension - The dimension for which to obtain the ordinate value.
        Returns:
        The median ordinate at the given dimension.
        See Also:
        RectangularShape.getCenterX(), RectangularShape.getCenterY()
      • getLength

        public double getLength​(int dimension)
      • getSpan

        public double getSpan​(int dimension)
        Description copied from interface: Bounds
        Returns the envelope span (typically width or height) along the specified dimension. The result should be equals (minus rounding error) to:
        getMaximum(dimension) - getMinimum(dimension)
        Specified by:
        getSpan in interface Bounds
        Parameters:
        dimension - The dimension for which to obtain the ordinate value.
        Returns:
        The span (typically width or height) at the given dimension.
        See Also:
        RectangularShape.getWidth(), RectangularShape.getHeight()
      • getUpperCorner

        public Position getUpperCorner()
        Description copied from interface: Bounds
        A coordinate position consisting of all the maximal ordinates for each dimension for all points within the Envelope.
        Specified by:
        getUpperCorner in interface Bounds
        Returns:
        The upper corner.
      • getLowerCorner

        public Position getLowerCorner()
        Description copied from interface: Bounds
        A coordinate position consisting of all the minimal ordinates for each dimension for all points within the Envelope.
        Specified by:
        getLowerCorner in interface Bounds
        Returns:
        The lower corner.
      • getMaxX

        public double getMaxX()
        The maxX value is the higher X coordinate value
        Returns:
        the bounding box's maxX value
      • setMaxX

        public void setMaxX​(double maxX)
        The maxX value is the higher X coordinate value
        Parameters:
        maxX - the new value for maxX. Should be greater than minX.
      • getMaxY

        public double getMaxY()
        The maxY value is the higher Y coordinate value
        Returns:
        the bounding box's maxY value
      • setMaxY

        public void setMaxY​(double maxY)
        The maxY value is the higher Y coordinate value
        Parameters:
        maxY - the new value for maxY. Should be greater than minY.
      • getMinX

        public double getMinX()
        The minX value is the lower X coordinate value
        Returns:
        the bounding box's minX value
      • setMinX

        public void setMinX​(double minX)
        The minX value is the lower X coordinate value
        Parameters:
        minX - the new value for minX. Should be less than maxX.
      • getMinY

        public double getMinY()
        The minY value is the lower Y coordinate value
        Returns:
        the bounding box's minY value
      • setMinY

        public void setMinY​(double minY)
        The minY value is the lower Y coordinate value
        Parameters:
        minY - the new value for minY. Should be less than maxY.
      • getResX

        public double getResX()
        Optional spatial resolution in the units of crs.
        Returns:
        spatial resolutionm, or Double.NaN if not provided
      • setResX

        public void setResX​(double resX)
        Optional spatial resolution in the units of crs.
        Parameters:
        resX - spatial resolutionm, or Double.NaN if not provided
      • getResY

        public double getResY()
        Optional spatial resolution in the units of crs.
        Returns:
        spatial resolutionm, or Double.NaN if not provided
      • setResY

        public void setResY​(double resY)
        Optional spatial resolution in the units of crs.
        Parameters:
        resY - spatial resolutionm, or Double.NaN if not provided