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.PointZMs.

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

empty?(t()) :: boolean()

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
Link to this function

from_coordinates(coordinates)

View Source

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.

Link to this function

from_wkb(wkb, mode \\ :binary)

View Source

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.

Link to this function

from_wkb!(wkb, mode \\ :binary)

View Source

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.

Link to this function

member?(multi_point_zm, point_zm)

View Source

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.PointZMs.

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
Link to this function

to_geo_json(multi_point_zm)

View Source

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]
]
Link to this function

to_wkb(multi_point, opts \\ [])

View Source

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.

Link to this function

to_wkt(multi_point_zm, opts \\ [])

View Source

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)"