span8
span4
我使用的是一个属性创建者,它有一个坐标列表。从这个列表中,我想要最后一个x值(或者在我的示例中倒数第二个)。我该怎么做呢?
在这张图中,我尝试使用列表元素计数器计算列表中的元素数量,然后我简单地写:@Value(_indices_normal{@sub(@Value(_nbr_indices),2)}.x)。然而这还一场悲哀
我还没有找到任何教程:教程:使用列表属性或在它提供的链接关于这个特定的问题。我找到的最接近答案的是这张幻灯片:list-manipulation-in-fme。
嗨@hadhafang使用一个ListIndexer,将“ListIndex复制”设置为“@Value(_element_count) - 1”,因为列表是从0开始编号的。但是如果您只想要最后一个坐标,那么可以将CoordinateExtractor中的模式设置为“指定坐标”,并将“坐标索引”设置为-1。
类特征处理器(对象):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
这个问题似乎是前一个问题的延续:错误:@Coordinate超出了范围——它必须是一个整数i,使得-n = in,其中n是该特性的顶点数”。
如果输入的几何图形是一个向量,如直线或多边形,@DanAt亚搏在线Safe美国的解决方案将是最简单的。也就是说,您可以在CoordinateExtractor中将“指定坐标”设置为模式参数,并将“-1”设置为坐标索引参数,从而直接提取所需的坐标。
但是,如果输入几何图形是BRepSolid,那么上面的设置可能会导致前一个问题中报告的相同错误。
当您尝试时,将所有坐标提取为list属性,然后选择一个,这是一种解决方案,但是您需要注意这些点。
@ value (_indices_normal {@Evaluate (@int (@sub (@ value (_nbr_indices), 1)))}方式)
@ value (_indices_normal {@Evaluate (@ value (_nbr_indices) 1)}方式)
或者,您可以在AttriuteCreator的第一行计算目标索引,并在以下行中使用它,如下所示:
©2019安全亚搏在线软件公司法律