关于“获取FME列表中最后一个元素的最简单方法是什么?”的评论和答案。 https://knowledge.亚搏在线safe.com/questions/80635/what-is-the-simplest-way-of-getting-the-last-eleme.html “获取FME列表中最后一个元素的最简单方法是什么?” 答案由隆 https://knowledge.亚搏在线safe.com/answers/80640/view.html

这个问题似乎是前一个问题的延续:错误:@Coordinate超出了范围——它必须是一个整数i,使得-n = in,其中n是该特性的顶点数”。

如果输入的几何图形是一个向量,如直线或多边形,@DanAt亚搏在线Safe美国的解决方案将是最简单的。也就是说,您可以在CoordinateExtractor中将“指定坐标”设置为模式参数,并将“-1”设置为坐标索引参数,从而直接提取所需的坐标。

但是,如果输入几何图形是BRepSolid,那么上面的设置可能会导致前一个问题中报告的相同错误。

当您尝试时,将所有坐标提取为list属性,然后选择一个,这是一种解决方案,但是您需要注意这些点。

  • 由于@sub函数返回一个浮点数,即使参数是整数,结果值也不能直接用作列表索引。您必须使用@int函数将返回值转换为整数,或者使用-运算符而不是@sub函数。
  • 嵌入在字符串表达式中的数学运算必须由@Evaluate函数求值。
例如,这些表达式将返回最后一个顶点的x坐标。
@ value (_indices_normal {@Evaluate (@int (@sub (@ value (_nbr_indices), 1)))}方式)
@ value (_indices_normal {@Evaluate (@ value (_nbr_indices) 1)}方式)

或者,您可以在AttriuteCreator的第一行计算目标索引,并在以下行中使用它,如下所示:

也可以有效地使用ListIndexer。



格林威治时间01:06:14,2018年10月17日星期三
哈哈方对哈哈方回答的评论 https://knowledge.亚搏在线safe.com/comments/80638/view.html 谢谢你的快速回答 @DanAt亚搏在线Safe。我想我有一个旧的坐标提取器。然而,它似乎不工作,我的数据集,但我写了一个pythonCaller做同样的事情。

类特征处理器(对象):def _init__(self): self。featureList = [] def input(self,feature): self.featureList.append(feature) xList=feature.getAttribute('_indices_normal{}.x') feature.setAttribute('_x2', xList[-1]) self.pyoutput(feature) def close(self): pass
格林尼治时间2018年10月16日星期二23:07:25 hadhafang
答案由danatsafe亚搏在线 https://knowledge.亚搏在线safe.com/answers/80636/view.html

@hadhafang使用一个ListIndexer,将“ListIndex复制”设置为“@Value(_element_count) - 1”,因为列表是从0开始编号的。但是如果您只想要最后一个坐标,那么可以将CoordinateExtractor中的模式设置为“指定坐标”,并将“坐标索引”设置为-1。

格林尼治时间2018年10月16日星期二22:38:50 danat亚搏在线safe