[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