Class GeographicBoundingBoxImpl
- Object
-
- AbstractMetadata
-
- ModifiableMetadata
-
- MetadataEntity
-
- GeographicExtentImpl
-
- GeographicBoundingBoxImpl
-
- All Implemented Interfaces:
Serializable
,Cloneable
,GeographicBoundingBox
,GeographicExtent
public class GeographicBoundingBoxImpl extends GeographicExtentImpl implements GeographicBoundingBox
Geographic position of the dataset. This is only an approximate so specifying the coordinate reference system is unnecessary. The CRS shall be geographic with Greenwich prime meridian, but the datum doesn't need to be WGS84.- Since:
- 2.1
- Author:
- Martin Desruisseaux (IRD), Touraïvane
- See Also:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description static GeographicBoundingBox
WORLD
A bounding box ranging from 180°W to 180°E and 90°S to 90°N.-
Fields inherited from class AbstractMetadata
LOGGER
-
-
Constructor Summary
Constructors Constructor Description GeographicBoundingBoxImpl()
Constructs an initially empty geographic bounding box.GeographicBoundingBoxImpl(double westBoundLongitude, double eastBoundLongitude, double southBoundLatitude, double northBoundLatitude)
Creates a geographic bounding box initialized to the specified values.GeographicBoundingBoxImpl(Rectangle2D bounds)
Constructs a geographic bounding box from the specified rectangle.GeographicBoundingBoxImpl(Bounds envelope)
Constructs a geographic bounding box from the specified envelope.GeographicBoundingBoxImpl(GeographicBoundingBox box)
Constructs a geographic bounding box initialized to the same values than the specified one.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
add(GeographicBoundingBox box)
Adds a geographic bounding box to this box.boolean
equals(Object object)
Compares this geographic bounding box with the specified object for equality.double
getEastBoundLongitude()
Returns the eastern-most coordinate of the limit of the dataset extent.double
getNorthBoundLatitude()
Returns the northern-most, coordinate of the limit of the dataset extent.double
getSouthBoundLatitude()
Returns the southern-most coordinate of the limit of the dataset extent.double
getWestBoundLongitude()
Returns the western-most coordinate of the limit of the dataset extent.int
hashCode()
Returns a hash code value for this extent.void
intersect(GeographicBoundingBox box)
Sets this bounding box to the intersection of this box with the specified one.boolean
isEmpty()
Returnstrue
if this bounding box is empty.void
setBounds(double westBoundLongitude, double eastBoundLongitude, double southBoundLatitude, double northBoundLatitude)
Sets the bounding box to the specified values.void
setBounds(GeographicBoundingBox box)
Sets the bounding box to the same values than the specified box.void
setEastBoundLongitude(double newValue)
Set the eastern-most coordinate of the limit of the dataset extent.void
setNorthBoundLatitude(double newValue)
Set the northern-most, coordinate of the limit of the dataset extent.void
setSouthBoundLatitude(double newValue)
Set the southern-most coordinate of the limit of the dataset extent.void
setWestBoundLongitude(double newValue)
Set the western-most coordinate of the limit of the dataset extent.String
toString()
Returns a string representation of this extent using a default angle pattern.static String
toString(GeographicBoundingBox box, String pattern, Locale locale)
Returns a string representation of the specified extent using the specified angle pattern and locale.-
Methods inherited from class GeographicExtentImpl
getInclusion, setInclusion
-
Methods inherited from class MetadataEntity
ensureNonNull, getStandard
-
Methods inherited from class ModifiableMetadata
checkWritePermission, clone, copyCollection, copyList, freeze, isModifiable, nonNullCollection, nonNullList, nonNullSet, unmodifiable
-
Methods inherited from class AbstractMetadata
asMap, asTree, getInterface
-
Methods inherited from interface GeographicExtent
getInclusion
-
-
-
-
Field Detail
-
WORLD
public static final GeographicBoundingBox WORLD
A bounding box ranging from 180°W to 180°E and 90°S to 90°N.- Since:
- 2.2
-
-
Constructor Detail
-
GeographicBoundingBoxImpl
public GeographicBoundingBoxImpl()
Constructs an initially empty geographic bounding box.
-
GeographicBoundingBoxImpl
public GeographicBoundingBoxImpl(GeographicBoundingBox box)
Constructs a geographic bounding box initialized to the same values than the specified one.- Parameters:
box
- The existing box to use for initializing this geographic bounding box.- Since:
- 2.2
-
GeographicBoundingBoxImpl
public GeographicBoundingBoxImpl(Bounds envelope) throws TransformException
Constructs a geographic bounding box from the specified envelope. If the envelope contains a CRS, then the bounding box may be projected to a geographic one. Otherwise, the envelope is assumed already in appropriate CRS.When coordinate transformation is required, the target geographic CRS is not necessarly WGS84. This method preserves the same ellipsoid than in the envelope CRS when possible. This is because geographic bounding box are only approximative and the ISO specification do not mandates a particular CRS, so we avoid transformations that are not strictly necessary.
Note: This constructor is available only if the referencing module is on the classpath.
- Parameters:
envelope
- The envelope to use for initializing this geographic bounding box.- Throws:
UnsupportedOperationException
- if the referencing module is not on the classpath.TransformException
- if the envelope can't be transformed.- Since:
- 2.2
-
GeographicBoundingBoxImpl
public GeographicBoundingBoxImpl(Rectangle2D bounds)
Constructs a geographic bounding box from the specified rectangle. The rectangle is assumed in WGS 84 CRS.- Parameters:
bounds
- The rectangle to use for initializing this geographic bounding box.
-
GeographicBoundingBoxImpl
public GeographicBoundingBoxImpl(double westBoundLongitude, double eastBoundLongitude, double southBoundLatitude, double northBoundLatitude)
Creates a geographic bounding box initialized to the specified values.Caution: Arguments are expected in the same order than they appear in the ISO 19115 specification. This is different than the order commonly found in Java world, which is rather (xmin, ymin, xmax, ymax).
- Parameters:
westBoundLongitude
- The minimal x value.eastBoundLongitude
- The maximal x value.southBoundLatitude
- The minimal y value.northBoundLatitude
- The maximal y value.
-
-
Method Detail
-
getWestBoundLongitude
public double getWestBoundLongitude()
Returns the western-most coordinate of the limit of the dataset extent. The value is expressed in longitude in decimal degrees (positive east).- Specified by:
getWestBoundLongitude
in interfaceGeographicBoundingBox
- Returns:
- The western-most longitude between -180 and +180°.
-
setWestBoundLongitude
public void setWestBoundLongitude(double newValue)
Set the western-most coordinate of the limit of the dataset extent. The value is expressed in longitude in decimal degrees (positive east).- Parameters:
newValue
- The western-most longitude between -180 and +180°.
-
getEastBoundLongitude
public double getEastBoundLongitude()
Returns the eastern-most coordinate of the limit of the dataset extent. The value is expressed in longitude in decimal degrees (positive east).- Specified by:
getEastBoundLongitude
in interfaceGeographicBoundingBox
- Returns:
- The eastern-most longitude between -180 and +180°.
-
setEastBoundLongitude
public void setEastBoundLongitude(double newValue)
Set the eastern-most coordinate of the limit of the dataset extent. The value is expressed in longitude in decimal degrees (positive east).- Parameters:
newValue
- The eastern-most longitude between -180 and +180°.
-
getSouthBoundLatitude
public double getSouthBoundLatitude()
Returns the southern-most coordinate of the limit of the dataset extent. The value is expressed in latitude in decimal degrees (positive north).- Specified by:
getSouthBoundLatitude
in interfaceGeographicBoundingBox
- Returns:
- The southern-most latitude between -90 and +90°.
-
setSouthBoundLatitude
public void setSouthBoundLatitude(double newValue)
Set the southern-most coordinate of the limit of the dataset extent. The value is expressed in latitude in decimal degrees (positive north).- Parameters:
newValue
- The southern-most latitude between -90 and +90°.
-
getNorthBoundLatitude
public double getNorthBoundLatitude()
Returns the northern-most, coordinate of the limit of the dataset extent. The value is expressed in latitude in decimal degrees (positive north).- Specified by:
getNorthBoundLatitude
in interfaceGeographicBoundingBox
- Returns:
- The northern-most latitude between -90 and +90°.
-
setNorthBoundLatitude
public void setNorthBoundLatitude(double newValue)
Set the northern-most, coordinate of the limit of the dataset extent. The value is expressed in latitude in decimal degrees (positive north).- Parameters:
newValue
- The northern-most latitude between -90 and +90°.
-
setBounds
public void setBounds(double westBoundLongitude, double eastBoundLongitude, double southBoundLatitude, double northBoundLatitude)
Sets the bounding box to the specified values.Caution: Arguments are expected in the same order than they appear in the ISO 19115 specification. This is different than the order commonly found in Java world, which is rather (xmin, ymin, xmax, ymax).
- Parameters:
westBoundLongitude
- The minimal x value.eastBoundLongitude
- The maximal x value.southBoundLatitude
- The minimal y value.northBoundLatitude
- The maximal y value.- Since:
- 2.5
-
setBounds
public void setBounds(GeographicBoundingBox box)
Sets the bounding box to the same values than the specified box.- Parameters:
box
- The geographic bounding box to use for setting the values of this box.- Since:
- 2.5
-
add
public void add(GeographicBoundingBox box)
Adds a geographic bounding box to this box. If the inclusion status is the same for this box and the box to be added, then the resulting bounding box is the union of the two boxes. If the inclusion status are opposite (exclusion), then this method attempt to exclude some area of specified box from this box. The resulting bounding box is smaller if the exclusion can be performed without ambiguity.- Parameters:
box
- The geographic bounding box to add to this box.- Since:
- 2.2
-
intersect
public void intersect(GeographicBoundingBox box)
Sets this bounding box to the intersection of this box with the specified one. The inclusion status must be the same for both boxes.- Parameters:
box
- The geographic bounding box to intersect with this box.- Since:
- 2.5
-
isEmpty
public boolean isEmpty()
Returnstrue
if this bounding box is empty.- Returns:
true
if this box is empty.- Since:
- 2.5
-
equals
public boolean equals(Object object)
Compares this geographic bounding box with the specified object for equality.- Overrides:
equals
in classAbstractMetadata
- Parameters:
object
- The object to compare for equality.- Returns:
true
if the given object is equals to this box.
-
hashCode
public int hashCode()
Returns a hash code value for this extent.- Overrides:
hashCode
in classAbstractMetadata
-
toString
public String toString()
Returns a string representation of this extent using a default angle pattern.- Overrides:
toString
in classAbstractMetadata
-
toString
public static String toString(GeographicBoundingBox box, String pattern, Locale locale)
Returns a string representation of the specified extent using the specified angle pattern and locale. SeeAngleFormat
for a description of angle patterns.- Parameters:
box
- The bounding box to format.pattern
- The angle pattern (e.g.DD°MM'SS.s"
.locale
- The locale, ornull
for the default one.- Returns:
- A string representation of the given box in the given locale.
- Since:
- 2.2
-
-