View Source Geometry.LineStringM (Geometry v0.3.1)

A line-string struct, representing a 2D line with a measurement.

A none empty line-string requires at least two points.

Link to this section Summary

Functions

Returns true if the given LineStringM is empty.

Creates a LineStringM from the given coordinates.

Returns an :ok tuple with the LineStringM 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 LineStringM 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 LineStringM 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.

Creates an empty LineStringM.

Creates a LineStringM from the given Geometry.PointMs.

Returns the GeoJSON term of a LineStringM.

Returns the WKB representation for a LineStringM.

Returns the WKT representation for a LineStringM. With option :srid an EWKT representation with the SRID is returned.

Link to this section Types

Specs

t() :: %Geometry.LineStringM{points: Geometry.coordinates()}

Link to this section Functions

Specs

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

Returns true if the given LineStringM is empty.

Examples

iex> LineStringM.empty?(LineStringM.new())
true

iex> LineStringM.empty?(
...>   LineStringM.new(
...>     [PointM.new(1, 2, 4), PointM.new(3, 4, 6)]
...>   )
...> )
false
Link to this function

from_coordinates(coordinates)

View Source

Specs

from_coordinates([Geometry.coordinate()]) :: t()

Creates a LineStringM from the given coordinates.

Examples

iex> LineStringM.from_coordinates(
...>   [[-1, 1, 1], [-2, 2, 2], [-3, 3, 3]]
...> )
%LineStringM{
  points: [
    [-1, 1, 1],
    [-2, 2, 2],
    [-3, 3, 3]
  ]
}

Specs

from_geo_json(Geometry.geo_json_term()) ::
  {:ok, t()} | Geometry.geo_json_error()

Returns an :ok tuple with the LineStringM from the given GeoJSON term. Otherwise returns an :error tuple.

Examples

iex> ~s(
...>   {
...>     "type": "LineString",
...>     "coordinates": [
...>       [1.1, 1.2, 1.4],
...>       [20.1, 20.2, 20.4]
...>     ]
...>   }
...> )
iex> |> Jason.decode!()
iex> |> LineStringM.from_geo_json()
{:ok, %LineStringM{points: [
   [1.1, 1.2, 1.4],
   [20.1, 20.2, 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() | {t(), Geometry.srid()}} | Geometry.wkb_error()

Returns an :ok tuple with the LineStringM from the given WKB string. Otherwise returns an :error tuple.

If the geometry contains a SRID the id is added to the tuple.

The optional second argument determines if a :hex-string or a :binary input is expected. The default is :binary.

An example of a simpler geometry can be found in the description for the Geometry.PointM.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 LineStringM 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> LineStringM.from_wkt(
...>   "LineString M (-5.1 7.8 1, 0.1 0.2 2)"
...> )
{:ok, %LineStringM{
  points: [
    [-5.1, 7.8, 1],
    [0.1, 0.2, 2]
  ]
}}

iex> LineStringM.from_wkt(
...>   "SRID=7219;LineString M (-5.1 7.8 1, 0.1 0.2 2)"
...> )
{:ok, {
  %LineStringM{
    points: [
      [-5.1, 7.8, 1],
      [0.1, 0.2, 2]
    ]
  },
  7219
}}

iex> LineStringM.from_wkt("LineString M EMPTY")
{:ok, %LineStringM{}}

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

new() :: t()

Creates an empty LineStringM.

Examples

iex> LineStringM.new()
%LineStringM{points: []}

Specs

new([Geometry.PointM.t()]) :: t()

Creates a LineStringM from the given Geometry.PointMs.

Examples

iex> LineStringM.new([PointM.new(1, 2, 4), PointM.new(3, 4, 6)])
%LineStringM{points: [[1, 2, 4], [3, 4, 6]]}
Link to this function

to_geo_json(line_string_m)

View Source

Specs

to_geo_json(t()) :: Geometry.geo_json_term()

Returns the GeoJSON term of a LineStringM.

Examples

iex> LineStringM.to_geo_json(
...>   LineStringM.new([
...>     PointM.new(-1.1, -2.2, -4.4),
...>     PointM.new(1.1, 2.2, 4.4)
...>   ])
...> )
%{
  "type" => "LineString",
  "coordinates" => [
    [-1.1, -2.2, -4.4],
    [1.1, 2.2, 4.4]
  ]
}
Link to this function

to_wkb(line_string_m, opts \\ [])

View Source

Specs

to_wkb(line_string, opts) :: wkb
when line_string: t() | Geometry.coordinates(),
     opts: [
       endian: Geometry.endian(),
       srid: Geometry.srid(),
       mode: Geometry.mode()
     ],
     wkb: Geometry.wkb()

Returns the WKB representation for a LineStringM.

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.PointM.to_wkb/1 function.

Link to this function

to_wkt(line_string_m, opts \\ [])

View Source

Specs

to_wkt(t(), opts) :: Geometry.wkt() when opts: [{:srid, Geometry.srid()}]

Returns the WKT representation for a LineStringM. With option :srid an EWKT representation with the SRID is returned.

Examples

iex> LineStringM.to_wkt(LineStringM.new())
"LineString M EMPTY"

iex> LineStringM.to_wkt(
...>   LineStringM.new([
...>     PointM.new(7.1, 8.1, 1),
...>     PointM.new(9.2, 5.2, 2)
...>   ])
...> )
"LineString M (7.1 8.1 1, 9.2 5.2 2)"

iex> LineStringM.to_wkt(
...>   LineStringM.new([
...>     PointM.new(7.1, 8.1, 1),
...>     PointM.new(9.2, 5.2, 2)
...>   ]),
...>   srid: 123
...> )
"SRID=123;LineString M (7.1 8.1 1, 9.2 5.2 2)"