DM_spatial_query.py
1 ## @package python.demo.DM_spatial_query
2 # "
3 # example script showing how to load an OPALS datamanager
4 # and perform a simple spatial query
5 # (script works in python 2 and 3)
6 #
7 
8 from __future__ import print_function # print function syntax as in python 3
9 import sys
10 
11 from opals import pyDM
12 
13 def DM_spatial_query(filename, maxOutput=1000):
14  # pyDM.Datamanager.load parameter: filename(string), readOnly(bool) threadSafety(bool)
15  dm = pyDM.Datamanager.load(filename, True, False)
16  if not dm:
17  print("Unable to open ODM '" + odm + "'")
18  sys.exit(1)
19 
20  limit = dm.getLimit()
21 
22  # output some pyDM statistics
23  print("ODM contains", dm.sizePoint(), "points")
24  print("2D-limit (%.3f," % limit.xmin, "%.3f) -" % limit.ymin, "(%.3f," % limit.xmax, "%.3f)" % limit.ymax)
25 
26  # spatial query test
27  print("Perform spatial query")
28  pts = dm.searchPoint(limit, True) # search all points inside manager limit
29  assert len(pts) == dm.sizePoint() # check if points found is equal to points within manager
30  print(len(pts), "points found")
31 
32  print("Output points...")
33  i = 0
34  for pt in pts:
35  i = i + 1
36  print("Point", "%5d" % i, "%.3f" % pt.x, "%.3f" % pt.y, "%.3f" % pt.z)
37  if i == maxOutput:
38  break
39 
40  print(i, "of", len(pts), "points listed")
41 
42 if len(sys.argv) == 1:
43  print("ODM parameter missing")
44  sys.exit(-1)
45 
46 DM_spatial_query(sys.argv[1])