libpysal.cg.Polygon

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

Geometric representation of polygon objects.

Attributes
verticeslist

Returns the vertices of the polygon in clockwise order.

lenint

Returns the number of vertices in the polygon.

perimeterfloat

Returns the perimeter of the polygon.

bounding_boxRectangle

Returns the bounding box of the polygon.

bboxList

Returns the bounding box of the polygon as a list

areafloat

Returns the area of the polygon.

centroidtuple

Returns the centroid of the polygon

__init__(self, vertices, holes=None)[source]

Returns a polygon created from the objects specified.

__init__(Point list or list of Point lists, holes list ) -> Polygon

Parameters
verticeslista list of vertices or a list of lists of vertices.
holeslista list of sub-polygons to be considered as holes.
is_quad_tree_structure_built

: bool – record if the quad tree structure has been built for this polygon. This quad tree structure could help speed up the contains_point test

Examples

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

Methods

__init__(self, vertices[, holes])

Returns a polygon created from the objects specified.

build_quad_tree_structure(self)

Build the quad tree structure for this polygon.

contains_point(self, point)

Test if polygon contains 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

Returns the area of the polygon.

area -> number

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

Returns the bounding box of the polygon as a list

See also bounding_box

property bounding_box

Returns the bounding box of the polygon.

bounding_box -> 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(self)[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 inscreased significantly. :return:

property centroid

Returns the centroid of the polygon

centroid -> Point

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(self, point)[source]

Test if polygon contains point

Notes

Points falling exactly on polygon edges may yield unpredictable results

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
>>>
property holes

Returns the holes of the polygon in clockwise order.

holes -> Point list

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

Returns the number of vertices in the polygon.

len -> int

Examples

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

Returns the parts of the polygon in clockwise order.

parts -> Point list

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

Returns the perimeter of the polygon.

perimeter() -> number

Examples

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

Returns the vertices of the polygon in clockwise order.

vertices -> Point list

Examples

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