DM_spatial_query.py
## @package python.DM_spatial_query
## @brief unkown python script prefix=autobuild.swdvlp64.opals.distro.demo
# "
# example script showing how to load an OPALS datamanager
# and perform a simple spatial query
# (script works in python 2 and 3)
#
from __future__ import print_function # print function syntax as in python 3
import sys
# import pyDM_d as pyDM #for pyDM in debug mode
from opals import pyDM # for pyDM in release mode
odm = "fullwave.odm" # odm test file
# load the "fullwave" data set from the opals demo distro
# pyDM.Datamanager.load parameter: filename(string), readOnly(bool) threadSafety(bool)
dm = pyDM.Datamanager.load(odm, True, False)
if not dm:
print("Unable to open ODM '" + odm + "'")
sys.exit(1)
limit = dm.getLimit()
# output some pyDM statistics
print("ODM contains", dm.sizePoint(), "points")
print("2D-limit (%.3f," % limit.xmin, "%.3f) -" % limit.ymin, "(%.3f," % limit.xmax, "%.3f)" % limit.ymax)
# spatial query test
print("Perform spatial query")
pts = dm.searchPoint(limit, True) # search all points inside manager limit
assert len(pts) == dm.sizePoint() # check if points found is equal to points within manager
print(len(pts), "points found")
maxOutput = 1000
print("Output points...")
i = 0
for pt in pts:
i = i + 1
print("Point", "%5d" % i, "%.3f" % pt.x, "%.3f" % pt.y, "%.3f" % pt.z)
if i == maxOutput:
break
print(i, "of", len(pts), "points listed")