public final class Envelopes extends Static
transform(…)
methods in this class take in account the curvature of the transformed shape.
For example the shape of a geographic envelope (figure below on the left side) is not rectangular in a
conic projection (figure below on the right side). In order to get the envelope represented by the red
rectangle, projecting the four corners of the geographic envelope is not sufficient since we would miss
the southerner part.
Envelope before map projection | Shape of the projected envelope |
---|---|
![]() |
![]() |
MathTransform
implementations involved in the
operation (directly or indirectly) support derivative,
for more accurate calculation of curve extremum. This is the case of most Apache SIS implementations.
The transform(…)
methods in this class expect an arbitrary Envelope
with one
of the following arguments: MathTransform
, CoordinateOperation
or CoordinateReferenceSystem
.
The recommended method is the one expecting a CoordinateOperation
object,
since it contains sufficient information for handling the cases of envelopes that encompass a pole.
The method expecting a CoordinateReferenceSystem
object is merely a convenience method that
infers the coordinate operation itself, but at the cost of performance if the same operation needs
to be applied on many envelopes.
Modifier and Type | Method and Description |
---|---|
static Envelope |
fromWKT(CharSequence wkt)
Returns the bounding box of a geometry defined in Well Known Text (WKT) format.
|
static String |
toPolygonWKT(Envelope envelope)
Formats the given envelope as a
POLYGON element in the Well Known Text
(WKT) format. |
static String |
toString(Envelope envelope)
Formats the given envelope as a
BOX element. |
static GeneralEnvelope |
transform(CoordinateOperation operation,
Envelope envelope)
Transforms an envelope using the given coordinate operation.
|
static Envelope |
transform(Envelope envelope,
CoordinateReferenceSystem targetCRS)
Transforms the given envelope to the specified CRS.
|
static GeneralEnvelope |
transform(MathTransform transform,
Envelope envelope)
Transforms an envelope using the given math transform.
|
public static Envelope transform(Envelope envelope, CoordinateReferenceSystem targetCRS) throws TransformException
CoordinateOperation
or MathTransform
instance once and invoke one of the
others transform(…)
methods.envelope
- The envelope to transform (may be null
).targetCRS
- The target CRS (may be null
).envelope
if no change was required.TransformException
- If a transformation was required and failed.public static GeneralEnvelope transform(MathTransform transform, Envelope envelope) throws TransformException
MathTransform
does not carry sufficient information.
For a more robust envelope transformation, use transform(CoordinateOperation, Envelope)
instead.transform
- The transform to use.envelope
- Envelope to transform, or null
. This envelope will not be modified.null
if envelope
was null.TransformException
- if a transform failed.transform(CoordinateOperation, Envelope)
public static GeneralEnvelope transform(CoordinateOperation operation, Envelope envelope) throws TransformException
This method can handle the case where the envelope contains the North or South pole, or when it cross the ±180° longitude.
null
before to call this method.operation
- The operation to use.envelope
- Envelope to transform, or null
. This envelope will not be modified.null
if envelope
was null.TransformException
- if a transform failed.transform(MathTransform, Envelope)
public static Envelope fromWKT(CharSequence wkt) throws FactoryException
LINESTRING
have the same dimension. However this method
ensures that the parenthesis are balanced, in order to catch some malformed WKT.
Example:
BOX(-180 -90, 180 90)
(not really a geometry, but understood by many softwares)POINT(6 10)
MULTIPOLYGON(((1 1, 5 1, 1 5, 1 1),(2 2, 3 2, 3 3, 2 2)))
GEOMETRYCOLLECTION(POINT(4 6),LINESTRING(3 8,7 10))
GeneralEnvelope.GeneralEnvelope(CharSequence)
for more information about the
parsing rules.wkt
- The BOX
, POLYGON
or other kind of element to parse.FactoryException
- If the given WKT can not be parsed.toString(Envelope)
,
CRS.fromWKT(String)
,
org.apache.sis.io.wkt
public static String toString(Envelope envelope)
BOX
element. The output is like below,
where n is the number of dimensions
(omitted if equals to 2):
BOX
nD(
lower corner,
upper corner)
BOX
element is not part of the standard Well Known Text (WKT) format.
However it is understood by many softwares, for example GDAL and PostGIS.GeneralEnvelope
constructor.envelope
- The envelope to format.BOX
or BOX3D
(most typical dimensions) element.fromWKT(CharSequence)
,
org.apache.sis.io.wkt
public static String toPolygonWKT(Envelope envelope) throws IllegalArgumentException
POLYGON
element in the Well Known Text
(WKT) format. POLYGON
can be used as an alternative to BOX
when the element
needs to be considered as a standard WKT geometry.
The string returned by this method can be parsed by the GeneralEnvelope
constructor.
envelope
- The envelope to format.POLYGON
in WKT format.IllegalArgumentException
- if the given envelope can not be formatted.org.apache.sis.io.wkt
Copyright © 2010–2015 The Apache Software Foundation. All rights reserved.