web/lib/django/contrib/gis/geos/prepared.py
changeset 38 77b6da96e6f1
parent 0 0d40e90630ef
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/lib/django/contrib/gis/geos/prepared.py	Wed Jun 02 18:57:35 2010 +0200
@@ -0,0 +1,30 @@
+from django.contrib.gis.geos.base import GEOSBase
+from django.contrib.gis.geos.geometry import GEOSGeometry
+from django.contrib.gis.geos.prototypes import prepared as capi
+
+class PreparedGeometry(GEOSBase):
+    """
+    A geometry that is prepared for performing certain operations.
+    At the moment this includes the contains covers, and intersects
+    operations.
+    """
+    ptr_type = capi.PREPGEOM_PTR
+
+    def __init__(self, geom):
+        if not isinstance(geom, GEOSGeometry): raise TypeError
+        self.ptr = capi.geos_prepare(geom.ptr)
+
+    def __del__(self):
+        if self._ptr: capi.prepared_destroy(self._ptr)
+
+    def contains(self, other):
+        return capi.prepared_contains(self.ptr, other.ptr)
+
+    def contains_properly(self, other):
+        return capi.prepared_contains_properly(self.ptr, other.ptr)
+
+    def covers(self, other):
+        return capi.prepared_covers(self.ptr, other.ptr)
+
+    def intersects(self, other):
+        return capi.prepared_intersects(self.ptr, other.ptr)