9 from __future__
import print_function
13 from opals
import pyDM
18 class Kernel(pyDM.KernelPointEx):
22 if sys.version_info >= (3, 0):
25 super(Kernel, self).__init__()
30 def leafChanged(self, leaf, localTree):
31 print(
"process tile with id = %d" % leaf.id() )
36 def releaseLeaf(self):
41 def process(self, pt, neighbours):
45 for n
in neighbours.points():
50 pt.info().set(0, neighbours.sizePoint())
51 if neighbours.sizePoint() > 0:
52 zmean = zsum / float(neighbours.sizePoint())
53 pt.info().set(1, zmean)
60 def DM_spatial_processing(filename, maxOutput=1000):
62 dm = pyDM.Datamanager.load(filename,
False,
False)
64 print(
"Unable to open ODM '" + filename +
"'")
68 lf = pyDM.AddInfoLayoutFactory()
69 lf.addColumn(pyDM.ColumnType.int32,
"_pcount")
70 lf.addColumn(pyDM.ColumnType.float_,
"_zmean")
71 layout = lf.getLayout()
72 kernelLayout = lf.getLayout()
76 query = pyDM.QueryDescriptor(
"sphere(r=1)")
83 print(
"Ready to append attribute '_pcount' and '_zmean' to '%s'" % filename)
85 print(
"Number of tiles to process = %d" % dm.getPointIndex().sizeLeaf())
90 start = datetime.datetime.now()
95 processor = pyDM.ProcessorEx(dm, query,
None, layout,
False,
None,
None,
False)
98 diff = datetime.datetime.now() - start
99 print(
"Processing took %.2f [s]" % diff.total_seconds() )
102 print(
"Save manager")
107 if len(sys.argv) == 1:
108 print(
"ODM parameter missing")
111 DM_spatial_processing(sys.argv[1])