Geometry.MultiPointZM (Geometry v0.2.0) View Source
A set of points from type Geometry.PointZM
.
MultiPointZM
implements the protocols Enumerable
and Collectable
.
Examples
iex> Enum.map(
...> MultiPointZM.new([
...> PointZM.new(1, 2, 3, 4),
...> PointZM.new(3, 4, 5, 6)
...> ]),
...> fn [x, _y, _z, _m] -> x end
...> )
[1, 3]
iex> Enum.into([PointZM.new(1, 2, 3, 4)], MultiPointZM.new())
%MultiPointZM{
points:
MapSet.new([
[1, 2, 3, 4]
])
}
Link to this section Summary
Functions
Returns true
if the given MultiPointZM
is empty.
Creates a MultiPointZM
from the given coordinates.
Returns an :ok
tuple with the MultiPointZM
from the given GeoJSON term.
Otherwise returns an :error
tuple.
The same as from_geo_json/1
, but raises a Geometry.Error
exception if it fails.
Returns an :ok
tuple with the MultiPointZM
from the given WKB string. Otherwise
returns an :error
tuple.
The same as from_wkb/2
, but raises a Geometry.Error
exception if it fails.
Returns an :ok
tuple with the MultiPointZM
from the given WKT string.
Otherwise returns an :error
tuple.
The same as from_wkt/1
, but raises a Geometry.Error
exception if it fails.
Checks if MulitPointZM
contains point
.
Creates an empty MultiPointZM
.
Creates a MultiPointZM
from the given Geometry.PointZM
s.
Returns the number of elements in MultiPointZM
.
Returns the GeoJSON term of a MultiPointZM
.
Converts MultiPointZM
to a list.
Returns the WKB representation for a MultiPointZM
.
Returns the WKT representation for a MultiPointZM
. With option :srid
an
EWKT representation with the SRID is returned.
Link to this section Types
Specs
t() :: %Geometry.MultiPointZM{points: MapSet.t(Geometry.coordinate())}
Link to this section Functions
Specs
Returns true
if the given MultiPointZM
is empty.
Examples
iex> MultiPointZM.empty?(MultiPointZM.new())
true
iex> MultiPointZM.empty?(
...> MultiPointZM.new(
...> [PointZM.new(1, 2, 3, 4), PointZM.new(3, 4, 5, 6)]
...> )
...> )
false
Specs
from_coordinates([Geometry.coordinate()]) :: t()
Creates a MultiPointZM
from the given coordinates.
Examples
iex> MultiPointZM.from_coordinates(
...> [[-1, 1, 1, 1], [-2, 2, 2, 2], [-3, 3, 3, 3]]
...> )
%MultiPointZM{
points: MapSet.new([
[-1, 1, 1, 1],
[-2, 2, 2, 2],
[-3, 3, 3, 3]
])
}
iex> MultiPointZM.from_coordinates(
...> [[-1, 1, 1, 1], [-2, 2, 2, 2], [-3, 3, 3, 3]]
...> )
%MultiPointZM{
points: MapSet.new([
[-1, 1, 1, 1],
[-2, 2, 2, 2],
[-3, 3, 3, 3]
])
}
Specs
from_geo_json(Geometry.geo_json_term()) :: {:ok, t()} | Geometry.geo_json_error()
Returns an :ok
tuple with the MultiPointZM
from the given GeoJSON term.
Otherwise returns an :error
tuple.
Examples
iex> ~s(
...> {
...> "type": "MultiPoint",
...> "coordinates": [
...> [1.1, 1.2, 1.3, 1.4],
...> [20.1, 20.2, 20.3, 20.4]
...> ]
...> }
...> )
iex> |> Jason.decode!()
iex> |> MultiPointZM.from_geo_json()
{:ok, %MultiPointZM{points: MapSet.new([
[1.1, 1.2, 1.3, 1.4],
[20.1, 20.2, 20.3, 20.4]
])}}
Specs
from_geo_json!(Geometry.geo_json_term()) :: t()
The same as from_geo_json/1
, but raises a Geometry.Error
exception if it fails.
Specs
from_wkb(Geometry.wkb(), Geometry.mode()) :: {:ok, t()} | {:ok, t(), Geometry.srid()} | Geometry.wkb_error()
Returns an :ok
tuple with the MultiPointZM
from the given WKB string. Otherwise
returns an :error
tuple.
If the geometry contains a SRID the id is added to the tuple.
An example of a simpler geometry can be found in the description for the
Geometry.PointZM.from_wkb/2
function.
Specs
from_wkb!(Geometry.wkb(), Geometry.mode()) :: t() | {t(), Geometry.srid()}
The same as from_wkb/2
, but raises a Geometry.Error
exception if it fails.
Specs
from_wkt(Geometry.wkt()) :: {:ok, t()} | {:ok, t(), Geometry.srid()} | Geometry.wkt_error()
Returns an :ok
tuple with the MultiPointZM
from the given WKT string.
Otherwise returns an :error
tuple.
If the geometry contains a SRID the id is added to the tuple.
Examples
iex> MultiPointZM.from_wkt(
...> "MultiPoint ZM (-5.1 7.8 1.1 1, 0.1 0.2 2.2 2)"
...> )
{:ok, %MultiPointZM{
points: MapSet.new([
[-5.1, 7.8, 1.1, 1],
[0.1, 0.2, 2.2, 2]
])
}}
iex> MultiPointZM.from_wkt(
...> "SRID=7219;MultiPoint ZM (-5.1 7.8 1.1 1, 0.1 0.2 2.2 2)"
...> )
{:ok, %MultiPointZM{
points: MapSet.new([
[-5.1, 7.8, 1.1, 1],
[0.1, 0.2, 2.2, 2]
])
}, 7219}
iex> MultiPointZM.from_wkt("MultiPoint ZM EMPTY")
...> {:ok, %MultiPointZM{}}
Specs
from_wkt!(Geometry.wkt()) :: t() | {t(), Geometry.srid()}
The same as from_wkt/1
, but raises a Geometry.Error
exception if it fails.
Specs
member?(t(), Geometry.PointZM.t()) :: boolean()
Checks if MulitPointZM
contains point
.
Examples
iex> MultiPointZM.member?(
...> MultiPointZM.new([
...> PointZM.new(11, 12, 13, 14),
...> PointZM.new(21, 22, 23, 24)
...> ]),
...> PointZM.new(11, 12, 13, 14)
...> )
true
iex> MultiPointZM.member?(
...> MultiPointZM.new([
...> PointZM.new(11, 12, 13, 14),
...> PointZM.new(21, 22, 23, 24)
...> ]),
...> PointZM.new(1, 2, 3, 4)
...> )
false
Specs
new() :: t()
Creates an empty MultiPointZM
.
Examples
iex> MultiPointZM.new()
%MultiPointZM{points: MapSet.new()}
Specs
new([Geometry.PointZM.t()]) :: t()
Creates a MultiPointZM
from the given Geometry.PointZM
s.
Examples
iex> MultiPointZM.new([
...> PointZM.new(1, 2, 3, 4),
...> PointZM.new(1, 2, 3, 4),
...> PointZM.new(3, 4, 5, 6)
...> ])
%MultiPointZM{points: MapSet.new([
[1, 2, 3, 4],
[3, 4, 5, 6]
])}
iex> MultiPointZM.new([])
%MultiPointZM{points: MapSet.new()}
Specs
size(t()) :: non_neg_integer()
Returns the number of elements in MultiPointZM
.
Examples
iex> MultiPointZM.size(
...> MultiPointZM.new([
...> PointZM.new(11, 12, 13, 14),
...> PointZM.new(21, 22, 23, 24)
...> ])
...> )
2
Specs
to_geo_json(t()) :: Geometry.geo_json_term()
Returns the GeoJSON term of a MultiPointZM
.
There are no guarantees about the order of points in the returned
coordinates
.
Examples
MultiPointZM.to_geo_json(
MultiPointZM.new([
PointZM.new(-1.1, -2.2, -3.3, -4.4),
PointZM.new(1.1, 2.2, 3.3, 4.4)
])
)
# =>
# %{
# "type" => "MultiPoint",
# "coordinates" => [
# [-1.1, -2.2, -3.3, -4.4],
# [1.1, 2.2, 3.3, 4.4]
# ]
# }
Specs
to_list(t()) :: [Geometry.PointZM.t()]
Converts MultiPointZM
to a list.
Examples
iex> MultiPointZM.to_list(
...> MultiPointZM.new([
...> PointZM.new(11, 12, 13, 14),
...> PointZM.new(21, 22, 23, 24)
...> ])
...> )
[
[11, 12, 13, 14],
[21, 22, 23, 24]
]
Specs
to_wkb(t(), opts) :: Geometry.wkb() when opts: [ endian: Geometry.endian(), srid: Geometry.srid(), mode: Geometry.mode() ]
Returns the WKB representation for a MultiPointZM
.
With option :srid
an EWKB representation with the SRID is returned.
The option endian
indicates whether :xdr
big endian or :ndr
little
endian is returned. The default is :xdr
.
The :mode
determines whether a hex-string or binary is returned. The default
is :binary
.
An example of a simpler geometry can be found in the description for the
Geometry.PointZM.to_wkb/1
function.
Specs
to_wkt(t(), opts) :: Geometry.wkt() when opts: [{:srid, Geometry.srid()}]
Returns the WKT representation for a MultiPointZM
. With option :srid
an
EWKT representation with the SRID is returned.
There are no guarantees about the order of points in the returned WKT-string.
Examples
MultiPointZM.to_wkt(MultiPointZM.new())
# => "MultiPoint ZM EMPTY"
MultiPointZM.to_wkt(
MultiPointZM.new([
PointZM.new(7.1, 8.1, 1.1, 1),
PointZM.new(9.2, 5.2, 2.2, 2)
]
)
# => "MultiPoint ZM (7.1 8.1 1.1 1, 9.2 5.2 2.2 2)"
MultiPointZM.to_wkt(
MultiPointZM.new([
PointZM.new(7.1, 8.1, 1.1, 1),
PointZM.new(9.2, 5.2, 2.2, 2)
]),
srid: 123
)
# => "SRID=123;MultiPoint ZM (7.1 8.1 1.1 1, 9.2 5.2 2.2 2)"