Geometry.MultiPolygon (Geometry v1.1.1)

View Source

A set of polygons from type Geometry.Polygon

MultiPoint implements the protocols Enumerable and Collectable.

Examples

iex> Enum.map(
...>   MultiPolygon.new([
...>     Polygon.new([
...>       LineString.new([
...>         Point.new(11, 12),
...>         Point.new(11, 22),
...>         Point.new(31, 22),
...>         Point.new(11, 12)
...>       ]),
...>     ]),
...>     Polygon.new([
...>       LineString.new([
...>         Point.new(35, 10),
...>         Point.new(45, 45),
...>         Point.new(10, 20),
...>         Point.new(35, 10)
...>       ]),
...>       LineString.new([
...>         Point.new(20, 30),
...>         Point.new(35, 35),
...>         Point.new(30, 20),
...>         Point.new(20, 30)
...>       ])
...>     ])
...>   ]),
...>   fn polygon -> length(polygon) == 1 end
...> )
[true, false]

iex> Enum.into(
...>   [
...>     Polygon.new([
...>       LineString.new([
...>         Point.new(11, 12),
...>         Point.new(11, 22),
...>         Point.new(31, 22),
...>         Point.new(11, 12)
...>       ])
...>     ])
...>   ],
...>   MultiPolygon.new())
%MultiPolygon{
  polygons: [
      [
        [
          [11, 12],
          [11, 22],
          [31, 22],
          [11, 12]
        ]
      ]
    ],
  srid: 0
}

Summary

Functions

Creates an empty MultiPolygon.

Creates a MultiPolygon from the given Geometry.MultiPolygons.

Types

t()

@type t() :: %Geometry.MultiPolygon{
  polygons: [[Geometry.ring()]],
  srid: Geometry.srid()
}

Functions

new()

@spec new() :: t()

Creates an empty MultiPolygon.

Examples

iex> MultiPolygon.new()
%MultiPolygon{polygons: []}

new(polygons, srid \\ 0)

@spec new([Geometry.Polygon.t()], Geometry.srid()) :: t()

Creates a MultiPolygon from the given Geometry.MultiPolygons.

Examples

iex> MultiPolygon.new([
...>   Polygon.new([
...>     LineString.new([
...>       Point.new(6, 2),
...>       Point.new(8, 2),
...>       Point.new(8, 4),
...>       Point.new(6, 2)
...>     ]),
...>   ]),
...>   Polygon.new([
...>     LineString.new([
...>       Point.new(1, 1),
...>       Point.new(9, 1),
...>       Point.new(9, 8),
...>       Point.new(1, 1)
...>     ]),
...>     LineString.new([
...>       Point.new(6, 2),
...>       Point.new(7, 2),
...>       Point.new(7, 3),
...>       Point.new(6, 2)
...>     ])
...>   ])
...> ])
%MultiPolygon{
  polygons: [
      [[[6, 2], [8, 2], [8, 4], [6, 2]]],
      [
        [[1, 1], [9, 1], [9, 8], [1, 1]],
        [[6, 2], [7, 2], [7, 3], [6, 2]]
      ]
    ],
    srid: 0
}

iex> MultiPolygon.new([])
%MultiPolygon{}