# shapely.polygons#

polygons(geometries, holes=None, indices=None, out=None, **kwargs)#

Create an array of polygons.

Parameters:
geometriesarray_like

An array of linearrings or coordinates (see linearrings). Unless `indices` are given (see description below), this include the outer shells only. The `holes` argument should be used to create polygons with holes.

holesarray_like, optional

An array of lists of linearrings that constitute holes for each shell. Not to be used in combination with `indices`.

indicesarray_like, optional

Indices into the target array where input geometries belong. If provided, the holes are expected to be present inside `geometries`; the first geometry for each index is the outer shell and all subsequent geometries in that index are the holes. Both geometries and indices should be 1D and have matching sizes. Indices should be in increasing order. Missing indices result in a ValueError unless `out` is provided, in which case the original value in `out` is kept.

outndarray, optional

An array (with dtype object) to output the geometries into.

**kwargs

For other keyword-only arguments, see the NumPy ufunc docs. Ignored if `indices` is provided.

Examples

Polygons are constructed from rings:

```>>> ring_1 = linearrings([[0, 0], [0, 10], [10, 10], [10, 0]])
>>> ring_2 = linearrings([[2, 6], [2, 7], [3, 7], [3, 6]])
>>> polygons([ring_1, ring_2])
<POLYGON ((0 0, 0 10, 10 10, 10 0, 0 0))>
>>> polygons([ring_1, ring_2])
<POLYGON ((2 6, 2 7, 3 7, 3 6, 2 6))>
```

Or from coordinates directly:

```>>> polygons([[0, 0], [0, 10], [10, 10], [10, 0]])
<POLYGON ((0 0, 0 10, 10 10, 10 0, 0 0))>
```

Adding holes can be done using the `holes` keyword argument:

```>>> polygons(ring_1, holes=[ring_2])
<POLYGON ((0 0, 0 10, 10 10, 10 0, 0 0), (2 6, 2 7, 3 7, 3 6, 2 6))>
```

Or using the `indices` argument:

```>>> polygons([ring_1, ring_2], indices=[0, 1])
<POLYGON ((0 0, 0 10, 10 10, 10 0, 0 0))>
>>> polygons([ring_1, ring_2], indices=[0, 1])
<POLYGON ((2 6, 2 7, 3 7, 3 6, 2 6))>
>>> polygons([ring_1, ring_2], indices=[0, 0])
<POLYGON ((0 0, 0 10, 10 10, 10 0, 0 0), (2 6, 2 7, 3 7, 3 6, 2 6))>
```

Missing input values (`None`) are ignored and may result in an empty polygon:

```>>> polygons(None)
<POLYGON EMPTY>
>>> polygons(ring_1, holes=[None])
<POLYGON ((0 0, 0 10, 10 10, 10 0, 0 0))>
>>> polygons([ring_1, None], indices=[0, 0])
<POLYGON ((0 0, 0 10, 10 10, 10 0, 0 0))>
```