[GRASS-SVN] r57958 - in grass/trunk/lib/python: ctypes temporal

svn_grass at osgeo.org svn_grass at osgeo.org
Tue Oct 8 16:02:41 PDT 2013


Author: huhabla
Date: 2013-10-08 16:02:41 -0700 (Tue, 08 Oct 2013)
New Revision: 57958

Modified:
   grass/trunk/lib/python/ctypes/Makefile
   grass/trunk/lib/python/ctypes/__init__.py
   grass/trunk/lib/python/temporal/spatio_temporal_relationships.py
   grass/trunk/lib/python/temporal/unit_tests.py
Log:
Created separate rtree ctypes interface, so that the rtree 
library can be accessed directly without the vector library.
This should also fix the dll rtree issue on windows systems.


Modified: grass/trunk/lib/python/ctypes/Makefile
===================================================================
--- grass/trunk/lib/python/ctypes/Makefile	2013-10-08 20:25:44 UTC (rev 57957)
+++ grass/trunk/lib/python/ctypes/Makefile	2013-10-08 23:02:41 UTC (rev 57958)
@@ -9,7 +9,7 @@
 DOXNAME=
 DOXINPUT=grasspython.dox
 
-MODULES = date gis raster gmath proj imagery vector display stats \
+MODULES = date gis raster gmath proj imagery vector rtree display stats \
 	dbmi raster3d arraystats cluster vedit ogsf nviz segment rowio
 
 date_LIBS       = $(DATETIMELIB)
@@ -19,6 +19,7 @@
 proj_LIBS       = $(GPROJLIB)
 imagery_LIBS    = $(IMAGERYLIB)
 vector_LIBS     = $(VECTORLIB)
+rtree_LIBS      = $(RTREELIB)
 display_LIBS    = $(DISPLAYLIB)
 stats_LIBS      = $(STATSLIB)
 dbmi_LIBS       = $(DBMILIB)
@@ -37,7 +38,8 @@
 gmath_HDRS      = gmath.h defs/gmath.h
 proj_HDRS       = gprojects.h defs/gprojects.h
 imagery_HDRS    = imagery.h defs/imagery.h
-vector_HDRS     = vector.h defs/vector.h vect/dig_structs.h vect/dig_defines.h vect/dig_externs.h rtree.h
+vector_HDRS     = vector.h defs/vector.h vect/dig_structs.h vect/dig_defines.h vect/dig_externs.h 
+rtree_HDRS	= rtree.h
 display_HDRS    = display.h defs/display.h
 stats_HDRS      = stats.h defs/stats.h
 dbmi_HDRS       = dbmi.h defs/dbmi.h

Modified: grass/trunk/lib/python/ctypes/__init__.py
===================================================================
--- grass/trunk/lib/python/ctypes/__init__.py	2013-10-08 20:25:44 UTC (rev 57957)
+++ grass/trunk/lib/python/ctypes/__init__.py	2013-10-08 23:02:41 UTC (rev 57958)
@@ -12,6 +12,7 @@
     'proj',
     'raster3d',
     'raster',
+    'rtree',
     'stats',
     'vector',
     'vedit'

Modified: grass/trunk/lib/python/temporal/spatio_temporal_relationships.py
===================================================================
--- grass/trunk/lib/python/temporal/spatio_temporal_relationships.py	2013-10-08 20:25:44 UTC (rev 57957)
+++ grass/trunk/lib/python/temporal/spatio_temporal_relationships.py	2013-10-08 23:02:41 UTC (rev 57958)
@@ -23,6 +23,7 @@
 from abstract_dataset import *
 from datetime_math import *
 import grass.lib.vector as vector
+import grass.lib.rtree as rtree
 import grass.lib.gis as gis
 from ctypes import *
 
@@ -450,7 +451,7 @@
                           spatial can be None (no spatial topology), "2D" using west, east,
                           #south, north or "3D" using west, east, south, north, bottom, top
         """
-        rect = vector.RTreeAllocRect(tree)
+        rect = rtree.RTreeAllocRect(tree)
 
         start, end = map_.get_temporal_extent_as_tuple()
 
@@ -462,14 +463,14 @@
             end = time_delta_to_relative_time_seconds(end - self._timeref)
 
         if spatial is None:
-            vector.RTreeSetRect1D(rect, tree, float(start), float(end))
+            rtree.RTreeSetRect1D(rect, tree, float(start), float(end))
         elif spatial == "2D":
             north, south, east, west, top, bottom = map_.get_spatial_extent_as_tuple()
-            vector.RTreeSetRect3D(rect, tree, west, east, south, north,
+            rtree.RTreeSetRect3D(rect, tree, west, east, south, north,
                                   float(start), float(end))
         elif spatial == "3D":
             north, south, east, west, top, bottom = map_.get_spatial_extent_as_tuple()
-            vector.RTreeSetRect4D(rect, tree, west, east, south, north,
+            rtree.RTreeSetRect4D(rect, tree, west, east, south, north,
                                   bottom, top, float(start), float(end))
 
         return rect
@@ -488,12 +489,12 @@
         if spatial == "3D":
             dim = 4
 
-        tree = vector.RTreeCreateTree(-1, 0, dim)
+        tree = rtree.RTreeCreateTree(-1, 0, dim)
 
         for i in xrange(len(maps)):
 
             rect = self._map_to_rect(tree, maps[i], spatial)
-            vector.RTreeInsertRect(rect, i + 1, tree)
+            rtree.RTreeInsertRect(rect, i + 1, tree)
 
         return tree
 
@@ -543,7 +544,7 @@
 
             rect = self._map_to_rect(tree, mapsB[j], spatial)
             vector.RTreeSearch2(tree, rect, list_)
-            vector.RTreeFreeRect(rect)
+            rtree.RTreeFreeRect(rect)
 
             for k in xrange(list_.contents.n_values):
                 i = list_.contents.value[k] - 1
@@ -565,7 +566,7 @@
 
         gis.G_free_ilist(list_)
 
-        vector.RTreeDestroyTree(tree)
+        rtree.RTreeDestroyTree(tree)
 
     def __iter__(self):
         start_ = self._first

Modified: grass/trunk/lib/python/temporal/unit_tests.py
===================================================================
--- grass/trunk/lib/python/temporal/unit_tests.py	2013-10-08 20:25:44 UTC (rev 57957)
+++ grass/trunk/lib/python/temporal/unit_tests.py	2013-10-08 23:02:41 UTC (rev 57958)
@@ -28,6 +28,7 @@
 from space_time_datasets import *
 
 import grass.lib.vector as vector
+import grass.lib.rtree as rtree
 import grass.lib.gis as gis
 from ctypes import *
 
@@ -1525,131 +1526,131 @@
 def test_1d_rtree():
     """Testing the rtree ctypes wrapper"""
 
-    tree = vector.RTreeCreateTree(-1, 0, 1)
+    tree = rtree.RTreeCreateTree(-1, 0, 1)
 
     for i in xrange(10):
         
-        rect = vector.RTreeAllocRect(tree)
-        vector.RTreeSetRect1D(rect, tree, float(i - 2), float(i + 2))
-        vector.RTreeInsertRect(rect, i + 1, tree)
+        rect = rtree.RTreeAllocRect(tree)
+        rtree.RTreeSetRect1D(rect, tree, float(i - 2), float(i + 2))
+        rtree.RTreeInsertRect(rect, i + 1, tree)
 
-    rect = vector.RTreeAllocRect(tree)
-    vector.RTreeSetRect1D(rect, tree, 2.0, 7.0)
+    rect = rtree.RTreeAllocRect(tree)
+    rtree.RTreeSetRect1D(rect, tree, 2.0, 7.0)
 
     list_ = gis.ilist()
 
     num = vector.RTreeSearch2(tree, rect, byref(list_))
     
-    vector.RTreeFreeRect(rect)
+    rtree.RTreeFreeRect(rect)
 
     # print rectangle ids
     print "Number of overlapping rectangles", num
     for i in xrange(list_.n_values):
         print "id", list_.value[i]
 
-    vector.RTreeDestroyTree(tree)
+    rtree.RTreeDestroyTree(tree)
     
 ###############################################################################
 
 def test_2d_rtree():
     """Testing the rtree ctypes wrapper"""
 
-    tree = vector.RTreeCreateTree(-1, 0, 2)
+    tree = rtree.RTreeCreateTree(-1, 0, 2)
 
     for i in xrange(10):
         
         
-        rect = vector.RTreeAllocRect(tree)
+        rect = rtree.RTreeAllocRect(tree)
 
-        vector.RTreeSetRect2D(rect, tree, 
+        rtree.RTreeSetRect2D(rect, tree, 
                               float(i - 2), float(i + 2), 
                               float(i - 2), float(i + 2))
-        vector.RTreeInsertRect(rect, i + 1, tree)
+        rtree.RTreeInsertRect(rect, i + 1, tree)
     
-    rect = vector.RTreeAllocRect(tree)
-    vector.RTreeSetRect2D(rect, tree, 2.0, 7.0, 2.0, 7.0)
+    rect = rtree.RTreeAllocRect(tree)
+    rtree.RTreeSetRect2D(rect, tree, 2.0, 7.0, 2.0, 7.0)
 
     list_ = gis.ilist()
 
     num = vector.RTreeSearch2(tree, rect, byref(list_))
-    vector.RTreeFreeRect(rect)
+    rtree.RTreeFreeRect(rect)
 
     # print rectangle ids
     print "Number of overlapping rectangles", num
     for i in xrange(list_.n_values):
         print "id", list_.value[i]
 
-    vector.RTreeDestroyTree(tree)
+    rtree.RTreeDestroyTree(tree)
     
 ###############################################################################
 
 def test_3d_rtree():
     """Testing the rtree ctypes wrapper"""
 
-    tree = vector.RTreeCreateTree(-1, 0, 3)
+    tree = rtree.RTreeCreateTree(-1, 0, 3)
 
     for i in xrange(10):
         
-        rect = vector.RTreeAllocRect(tree)
-        vector.RTreeSetRect3D(rect, tree, 
+        rect = rtree.RTreeAllocRect(tree)
+        rtree.RTreeSetRect3D(rect, tree, 
                               float(i - 2), float(i + 2), 
                               float(i - 2), float(i + 2), 
                               float(i - 2), float(i + 2))
-        vector.RTreeInsertRect(rect, i + 1, tree)
+        rtree.RTreeInsertRect(rect, i + 1, tree)
         print i + 1
-        vector.RTreePrintRect(rect, 1, tree)
+        rtree.RTreePrintRect(rect, 1, tree)
 
-    rect = vector.RTreeAllocRect(tree)
-    vector.RTreeSetRect3D(rect, tree, 2.0, 7.0, 2.0, 7.0, 2.0, 7.0)
+    rect = rtree.RTreeAllocRect(tree)
+    rtree.RTreeSetRect3D(rect, tree, 2.0, 7.0, 2.0, 7.0, 2.0, 7.0)
     print "Select"
-    vector.RTreePrintRect(rect, 1, tree)
+    rtree.RTreePrintRect(rect, 1, tree)
         
     list_ = gis.ilist()
 
     num = vector.RTreeSearch2(tree, rect, byref(list_))
-    vector.RTreeFreeRect(rect)
+    rtree.RTreeFreeRect(rect)
 
     # print rectangle ids
     print "Number of overlapping rectangles", num
     for i in xrange(list_.n_values):
         print "id", list_.value[i]
         
-    vector.RTreeDestroyTree(tree)
+    rtree.RTreeDestroyTree(tree)
 
 ###############################################################################
 
 def test_4d_rtree():
     """Testing the rtree ctypes wrapper"""
 
-    tree = vector.RTreeCreateTree(-1, 0, 4)
+    tree = rtree.RTreeCreateTree(-1, 0, 4)
 
     for i in xrange(10):
         
         # Allocate the boundary
-        rect = vector.RTreeAllocRect(tree)
-        vector.RTreeSetRect4D(rect, tree, 
+        rect = rtree.RTreeAllocRect(tree)
+        rtree.RTreeSetRect4D(rect, tree, 
                               float(i - 2), float(i + 2), 
                               float(i - 2), float(i + 2), 
                               float(i - 2), float(i + 2), 
                               float(i - 2), float(i + 2))
-        vector.RTreeInsertRect(rect, i + 1, tree)
+        rtree.RTreeInsertRect(rect, i + 1, tree)
 
-    rect = vector.RTreeAllocRect(tree)
-    vector.RTreeSetRect4D(rect, tree, 2.0, 7.0, 2.0, 
+    rect = rtree.RTreeAllocRect(tree)
+    rtree.RTreeSetRect4D(rect, tree, 2.0, 7.0, 2.0, 
                           7.0, 2.0, 7.0, 2.0, 7.0)
     
     list_ = gis.ilist()
 
     num = vector.RTreeSearch2(tree, rect, byref(list_))
 
-    vector.RTreeFreeRect(rect)
+    rtree.RTreeFreeRect(rect)
 
     # print rectangle ids
     print "Number of overlapping rectangles", num
     for i in xrange(list_.n_values):
         print "id", list_.value[i]
         
-    vector.RTreeDestroyTree(tree)
+    rtree.RTreeDestroyTree(tree)
 
 ###############################################################################
 



More information about the grass-commit mailing list