Source code for pointpats.window
"""
Window class for point patterns
"""
__author__ = "Serge Rey sjsrey@gmail.com"
import libpysal as ps
import numpy as np
__all__ = ["as_window", "poly_from_bbox", "to_ccf", "Window"]
[docs]def poly_from_bbox(bbox):
l, b, r, t = bbox
c = [(l, b), (l, t), (r, t), (r, b), (l, b)]
return ps.cg.shapes.Polygon(c)
[docs]def to_ccf(poly):
if poly[-1] != poly[0]:
poly.append(poly[0])
return poly
[docs]def as_window(pysal_polygon):
"""
Convert a libpysal polygon to a Window.
Parameters
----------
pysal_polygon: libpysal.cg.shapes.Polygon
libpysal Polygon instance.
Returns
-------
Window
A Window instance.
"""
if pysal_polygon.holes == [[]]:
return Window(pysal_polygon.parts)
else:
return Window(pysal_polygon.parts, pysal_polygon.holes)
[docs]class Window(ps.cg.Polygon):
"""
Geometric container for point patterns.
A window is used to define the area over which the pattern is observed.
This area is used in estimating the intensity of the point pattern.
See :attr:`PointPattern.lambda_window`.
Parameters
----------
parts: sequence
A sequence of rings which bound the positive space point
pattern.
holes: sequence
A sequence of rings which bound holes in the polygons that bound the
point pattern.
"""
[docs] def __init__(self, parts, holes=[]):
if holes:
super(Window, self).__init__(parts, holes)
else:
super(Window, self).__init__(parts)
[docs] def filter_contained(self, points):
return [np.asarray(pnt) for pnt in points if self.contains_point(pnt)]