第8页
第4排
转换矩阵将由记录器记录,所以我认为如果你偷看日志,你可以从功能日志中提取所需的信息。
#pythoncaller脚本导入fmeobjectsdef收集日志(sevirity,message):g_logger.append(message)类预处理器(object):def_uu init_uuuu(self):fmeobjects.fmelogfile().setcallback(collectlog)def input(self,feature):global g_logger g_logger=[]self.pyoutput(feature)
#pythoncaller_2脚本类后处理器(对象):def输入(self,feature):feature.setattribute(“日志”,“”.join(g_logger))self.pyoutput(功能)
名为“_log”的属性存储这样的文本字符串。然后您可以解析此文本以提取转换矩阵。
记录器:功能为:+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++Feature Type:`logger\u logged'attribute(string):`fme\u basename'具有值'pointcloudcreator'attribute(string):`fme\u feature\u type'具有值'pointcloudcreator'attribute(string):`fme\u geometry'具有值'fme_polygon'属性(字符串):'fme_type'具有值'fme_point_cloud'坐标系:`'几何类型:ifmepointcloudtransformation矩阵:0.86602540378443904-0.4999999999928 0 30 0.49999999999999928 0.86602540378443904 0 50 0 0 0 1 0 00 0 1全局范围最小值:(-31.999999999999 08,50,0)全局范围最大值:(137.38715006927043219.38715006927035,20)点数:15625个分量:X(real64)Y(real64)Z(real64)====================================================================
[更新]pythoncaller_的脚本从日志中提取转换矩阵的各个元素,并将它们存储为功能属性。
#pythoncaller_2 script[update]类后处理器(对象):def输入(self,功能):从日志中提取包含转换矩阵的行。矩阵,标志=[],在[s.strip()中为r,在g_logger中为s,则为false]:if not flag和r.startswith(“转换矩阵”):flag=true elif flag和len(矩阵)<4:matrix.append(r.strip(“”))提取矩阵的每个元素。如果len(matrix)==4:r=[s.split()for s in matrix]attrs=“”:r[0][0],“B”:r[0][1],“C”:R[0][2],“U D”:R[0][3],“E”:R[1][0],“F”:R[1][1],“G”:R[1][2],“U H”:R[1][3],“U I”:R[2][0],“J”:R[2][1],“k”:r[2][2],“左”:R[2][3],“_m”:r[3][0],“U N”:R[3][1],“O”:R[3][2],“U P”:R[3][3],}对于attrs.keys()中的k:feature.setattribute(k,float(attrs[k])feature.setattribute(“日志”,“\n”.join(g_logger))可选功能.setattribute(”“,矩阵)可选的self.pyoutput(功能)
?2019安全亚搏在线软件公司|法律