libpysal.cg.Polygon

class libpysal.cg.Polygon(vertices, holes=None)[source]

Geometric representation of polygon objects. Returns a polygon created from the objects specified.

Examples

>>> p1 = Polygon([Point((0, 0)), Point((1, 0)), Point((1, 1)), Point((0, 1))])

Create a polygon from one or more rings and optional holes.

Parameters:
vertices : list

A list of vertices or a list of lists of vertices.

holes : list, optional

A list of sub-polygons to be considered as holes.

Methods

build_quad_tree_structure()

Build the quad tree structure for this polygon.

contains_point(point)

Test if a polygon contains a point.

Attributes

area

Returns the area of the polygon.

bbox

Returns the bounding box of the polygon as a list.

bounding_box

Returns the bounding box of the polygon.

centroid

Returns the centroid of the polygon.

holes

Returns the holes of the polygon in clockwise order.

len

Returns the number of vertices in the polygon.

parts

Returns the parts of the polygon in clockwise order.

perimeter

Returns the perimeter of the polygon.

vertices

Returns the vertices of the polygon in clockwise order.

property area : float[source]

Returns the area of the polygon.

Examples

>>> p = Polygon([Point((0, 0)), Point((1, 0)), Point((1, 1)), Point((0, 1))])
>>> p.area
1.0
>>> p = Polygon(
...     [Point((0, 0)), Point((10, 0)), Point((10, 10)), Point((0, 10))],
...     [Point((2, 1)), Point((2, 2)), Point((1, 2)), Point((1, 1))]
... )
>>> p.area
99.0
property bbox[source]

Returns the bounding box of the polygon as a list.

Returns:

self._bbox – The bounding box of the polygon as a list.

Return type:

list

See also

libpysal.cg.bounding_box

property bounding_box[source]

Returns the bounding box of the polygon.

Returns:

self._bounding_box – The bounding box of the polygon.

Return type:

libpysal.cg.Rectangle

Examples

>>> p = Polygon([Point((0, 0)), Point((2, 0)), Point((2, 1)), Point((0, 1))])
>>> p.bounding_box.left
0.0
>>> p.bounding_box.lower
0.0
>>> p.bounding_box.right
2.0
>>> p.bounding_box.upper
1.0
build_quad_tree_structure()[source]

Build the quad tree structure for this polygon. Once the structure is built, speed for testing if a point is inside the ring will be increased significantly.

property centroid : tuple[source]

Returns the centroid of the polygon.

Notes

The centroid returned by this method is the geometric centroid and respects multipart polygons with holes. Also known as the ‘center of gravity’ or ‘center of mass’.

Examples

>>> p = Polygon(
...     [Point((0, 0)), Point((10, 0)), Point((10, 10)), Point((0, 10))],
...     [Point((1, 1)), Point((1, 2)), Point((2, 2)), Point((2, 1))]
... )
>>> p.centroid
(5.0353535353535355, 5.0353535353535355)
contains_point(point)[source]

Test if a polygon contains a point.

Parameters:
point : libpysal.cg.Point

A point to test for containment.

Returns:

containsTrue if the polygon contains point otherwise False.

Return type:

bool

Examples

>>> p = Polygon(
...     [Point((0,0)), Point((4,0)), Point((4,5)), Point((2,3)), Point((0,5))]
... )
>>> p.contains_point((3,3))
1
>>> p.contains_point((0,6))
0
>>> p.contains_point((2,2.9))
1
>>> p.contains_point((4,5))
0
>>> p.contains_point((4,0))
0

Handles holes.

>>> p = Polygon(
...     [Point((0, 0)), Point((0, 10)), Point((10, 10)), Point((10, 0))],
...     [Point((2, 2)), Point((4, 2)), Point((4, 4)), Point((2, 4))]
... )
>>> p.contains_point((3.0, 3.0))
False
>>> p.contains_point((1.0, 1.0))
True

Notes

Points falling exactly on polygon edges may yield unpredictable results.

property holes : list[source]

Returns the holes of the polygon in clockwise order.

Examples

>>> p = Polygon(
...     [Point((0, 0)), Point((10, 0)), Point((10, 10)), Point((0, 10))],
...     [Point((1, 2)), Point((2, 2)), Point((2, 1)), Point((1, 1))]
... )
>>> len(p.holes)
1
property len : int[source]

Returns the number of vertices in the polygon.

Examples

>>> p1 = Polygon([Point((0, 0)), Point((0, 1)), Point((1, 1)), Point((1, 0))])
>>> p1.len
4
>>> len(p1)
4
property parts : list[source]

Returns the parts of the polygon in clockwise order.

Examples

>>> p = Polygon(
...     [
...         [Point((0, 0)), Point((1, 0)), Point((1, 1)), Point((0, 1))],
...         [Point((2, 1)), Point((2, 2)), Point((1, 2)), Point((1, 1))]
...     ]
... )
>>> len(p.parts)
2
property perimeter : int | float[source]

Returns the perimeter of the polygon.

Examples

>>> p = Polygon([Point((0, 0)), Point((1, 0)), Point((1, 1)), Point((0, 1))])
>>> p.perimeter
4.0
property vertices : list[source]

Returns the vertices of the polygon in clockwise order.

Examples

>>> p1 = Polygon([Point((0, 0)), Point((0, 1)), Point((1, 1)), Point((1, 0))])
>>> len(p1.vertices)
4