# Extents

Documentation for Extents.

`Extents.Extent`

`Extents.buffer`

`Extents.contains`

`Extents.coveredby`

`Extents.covers`

`Extents.disjoint`

`Extents.equals`

`Extents.extent`

`Extents.intersection`

`Extents.intersects`

`Extents.overlaps`

`Extents.touches`

`Extents.union`

`Extents.within`

`Extents.Extent`

— Type```
Extent
Extent(; kw...)
Extent(bounds::NamedTuple)
```

A wrapper for a `NamedTuple`

of tuples holding the lower and upper bounds for each dimension of the object.

`keys(extent)`

will return the dimension name Symbols, in the order the dimensions are used in the object.

`values(extent)`

will return a tuple of tuples: `(lowerbound, upperbound)`

for each dimension.

**Examples**

```
julia> ext = Extent(X = (1.0, 2.0), Y = (3.0, 4.0))
Extent(X = (1.0, 2.0), Y = (3.0, 4.0))
julia> keys(ext)
(:X, :Y)
julia> values(ext)
((1.0, 2.0), (3.0, 4.0))
```

`Extents.buffer`

— Method`buffer(ext::Extent, buff::NamedTuple)`

buffer `Extent`

by corresponding name-pair values supplied in `buff`

NamedTuple.

**Examples**

```
julia> ext = Extent(X = (1.0, 2.0), Y = (3.0, 4.0))
Extent(X = (1.0, 2.0), Y = (3.0, 4.0))
julia> ext_buffered = Extents.buffer(ext, (X=1, Y=3))
Extent(X = (0.0, 3.0), Y = (0.0, 7.0))
```

`Extents.contains`

— Method`contains(a::Extent, b::Extent; strict=false)`

`a`

contains `b`

if no points of `b`

lie in the exterior of `a`

, and at least one point of the interior of `b`

lies in the interior of `a`

. If `b`

has no interior points it is not contained in `a`

.

Identical to `within`

with argument order reversed.

Dimensions that are not shared are ignored by default with `strict=false`

. When `strict=true`

, any unshared dimensions cause the function to return `nothng`

.

If there are no common dimensions, `false`

is returned.

The order of dimensions is ignored in all cases.

Conforms to the DE-9IM spatial predicates standard https://en.wikipedia.org/wiki/DE-9IM

`Extents.coveredby`

— Method`coveredby(a::Extent, b::Extent; strict=false)`

At least one point of `a`

lies in `b`

, and no point of `a`

lies in the exterior of `b`

, Every point of `a`

is a point in the interior or boundary of `b`

.

Identical to `covers`

with argument order reversed.

Dimensions that are not shared are ignored by default with `strict=false`

. When `strict=true`

, any unshared dimensions cause the function to return `nothng`

.

If there are no common dimensions with `strict=false`

, `false`

is returned.

The order of dimensions is ignored in all cases.

Conforms to the DE-9IM spatial predicates standard https://en.wikipedia.org/wiki/DE-9IM

`Extents.covers`

— Method`covers(a::Extent, b::Extent; strict=false)`

At least one point of `b`

lies in `a`

, and no point of `b`

lies in the exterior of `a`

, Every point of `b`

is a point in the interior or boundary of `a`

.

Identical to `coveredby`

with argument order reversed.

Dimensions that are not shared are ignored by default with `strict=false`

. When `strict=true`

, any unshared dimensions cause the function to return `nothng`

.

If there are no common dimensions with `strict=false`

, `false`

is returned.

The order of dimensions is ignored in all cases.

Conforms to the DE-9IM spatial predicates standard https://en.wikipedia.org/wiki/DE-9IM

`Extents.disjoint`

— Method`disjoint(a::Extent, b::Extent; strict=false)`

`a`

and `b`

are disjoint if they have no point in common (the inverse of `intersects`

).

Returns `false`

if the extents of all common dimensions share some values, including just the edge values of their range.

`strict=false`

. When `strict=true`

, any unshared dimensions cause the function to return `nothng`

.

If there are no common dimensions when `strict=false`

, `true`

is returned.

The order of dimensions is ignored in all cases.

Conforms to the DE-9IM spatial predicates standard https://en.wikipedia.org/wiki/DE-9IM

`Extents.equals`

— Method`equals(a::Extent, b::Extent; strict=false)`

`a`

and `b`

are topologically equal: their interiors intersect and no part of the interior or boundary of one intersects the exterior of the other.

`strict=false`

. When `strict=true`

, any unshared dimensions cause the function to return `nothng`

.

If there are no common dimensions with `strict=false`

, `false`

is returned.

The order of dimensions is ignored in all cases.

Conforms to the DE-9IM spatial predicates standard https://en.wikipedia.org/wiki/DE-9IM

`Extents.extent`

— Function`extent(x)`

Returns an `Extent`

, holding the bounds for each dimension of the object.

`Extents.intersection`

— Method`intersection(ext1::Extent, ext2::Extent; strict=false)`

Get the intersection of two extents as another `Extent`

, e.g. the area covered by the shared dimensions for both extents.

If there is no intersection for any shared dimension, `nothing`

will be returned.

The order of dimensions is ignored in all cases.

`Extents.intersects`

— Method`intersects(a::Extent, b::Extent; strict=false)`

`a`

intersects `b`

if `a`

and `b`

have at least one point in common (the inverse of `disjoint`

).

Returns `true`

if the extents of all common dimensions share some values, including just the edge values of their range.

`strict=false`

. When `strict=true`

, any unshared dimensions cause the function to return `nothng`

.

If there are no common dimensions with `strict=false`

, `false`

is returned.

The order of dimensions is ignored in all cases.

Conforms to the DE-9IM spatial predicates standard https://en.wikipedia.org/wiki/DE-9IM

`Extents.overlaps`

— Method`overlaps(a::Extent, b::Extent; strict=false)`

`a`

overlaps `b`

: they have some but not all points in common, they have the same dimension, and the intersection of the interiors of the two geometries has the same dimension as the geometries themselves.

Returns `true`

if the extents of common dimensions overlap.

`strict=false`

. When `strict=true`

, any unshared dimensions cause the function to return `nothng`

.

If there are no common dimensions with `strict=false`

, `false`

is returned.

The order of dimensions is ignored in all cases.

Conforms to the DE-9IM spatial predicates standard https://en.wikipedia.org/wiki/DE-9IM

`Extents.touches`

— Method`touches(a::Extent, b::Extent; strict=false)`

`a`

and `b`

have at least one point in common, but their interiors do not intersect.

Returns `true`

if the extents of any common dimensions share boundaries.

`strict=false`

. When `strict=true`

, any unshared dimensions cause the function to return `nothng`

.

If there are no common dimensions with `strict=false`

, `false`

is returned.

The order of dimensions is ignored in all cases.

Conforms to the DE-9IM spatial predicates standard https://en.wikipedia.org/wiki/DE-9IM

`Extents.union`

— Method`union(ext1::Extent, ext2::Extent; strict=false)`

Get the union of two extents, e.g. the combined extent of both objects for all dimensions.

The order of dimensions is ignored in all cases.

`Extents.within`

— Method`within(a::Extent, b::Extent; strict=false)`

`a`

is within `b`

if no points of `a`

lie in the exterior of `b`

, and at least one point of the interior of `a`

lies in the interior of `b`

. If `a`

has no interior points it is not contained in `b`

.

Identical to `contains`

with argument order reversed.

`strict=false`

. When `strict=true`

, any unshared dimensions cause the function to return `nothng`

.

If there are no common dimensions, `false`

is returned.

The order of dimensions is ignored in all cases.

Conforms to the DE-9IM spatial predicates standard https://en.wikipedia.org/wiki/DE-9IM