原文发布时间:2011-04-29
作者:糖糖
Inline Inspection——联机检查是FME的新功能之一,通过在工作空间里任意两个函数间插入检查点来检查从第一个函数通过下一个函数的要素的状态,就好比在两个函数的连接线上放了个照相机,把每个函数通过时的状态拍了个照片一样,如下图。
通过联机检查可以在转换中起到调试控制的作用。把今天对这个功能的研究和大家分享下
一、添加检查点。右键点击两函数间的连线,选择Inspection Point→Add Inspection Point ,添加了检查点后连线变成蓝色
二、启动调试
选择菜单栏Inspection中的Run Translation with Inspection。工作空间中即会弹出要素检查框,显示第一个进入检查点的要素信息,包括几何形状、性质、属性和几何信息等,检查就开始了,如下图所示:
三、下面简单说说关于联机调试的技巧:
1 判断调试位置。在设置了多个检查点并检查多个要素时,准确判断当下所检查要素的位置是最关键的。可以通过判断连线颜色和读取要素信息的方式来判断。如图,当蓝色连线变成橘红色时表示调试该处要素。
这可以帮助我们区分调试位置,另外还可以通过要素检查框中Feature Type属性判断要素出处,如下表示要素从函数2DGridReplacer的OUTPUT端输出。
2 分步检查
FME内联检查有两种调试方法——跳至下一个连接和跳至下一个检查点,它们之间的差别是什么呢?
跳至下一个连接表示检查下一步的转换操作,跳至下一个检查点表示该检查点结束后再跳至下一个检查点,经过测试发现以下规律:
1) 跳至下一个连接,检查的位置是随要素的转换顺序进行,例如在第二个函数和第三个函数间设置一个检查点并启动调试后,第一次出现检查框表示第一个达到检查点的要素信息,若点击跳至下一个连接的方式进行检查,则位置转移到下一个要素的所在转换位置,这个位置不一定在检查点。为了帮助大家理解,我先创建了一个二维格网生成函数创建了一个”田”字形格网,然后排序以区分四个格网的先后顺序,再用给一个格网替换函数将每个格网转换成4个点,最后在这三个函数间设置了两个检查点。如图所示:
先启动调试后,然后点击跳至下一个连接按钮,两个检查框的信息如下:
左图表示第一个到达检查点的要素信息,CounterID=1;右图表示第二个要素的信息,该要素的状态是从2DGridCreator输出状态,还未到达检查点。再次点击跳至下一个连接按钮,检查框显示如下:
可以看到刚从2DGridCreator输出要素为第二个格网,再点击生成第三个格网,通过counter后属性counter=3,依次类推直到第四个网格counter=4生成后,若再进行跳至下一个连接检查,调试位置才转移到下一个检查点。因此得出的结论是:跳至下一个连接,表示检查位置将跳至运行的下一步操作,注意的是这其中也包含了visualizer的操作。
2)跳至下一个检查点,表示将检查位置转换至下一个检查点,注意的是要当下的检查点全部完成后再跳至下一个检查点,可以用上面的模板进行测试,启动调试后,再点击跳至下一个检查点按钮,两个检查框的信息如下:
左图表示第一个到达检查点的要素信息,CounterID=1,右图表示第二个要素的信息,CounterID=2,仍停留在原来的检查点,再次点击跳至下一个检查点按钮,直至四个要素都通过后,才转换至下一个检查点,如下图,表示跳至第二个检查点时,生成的第一个点的信息:
因此我们可以得出一个结论,跳至下一个检查点,是完成本次检查点的后再跳至下一个检查点
3、对要素进行筛选后检查
右键点击连线Inspection Ponit→Edit Inspection Point,可在如下对话框中进行设置
在对话框中的Conditions中可对要素做一个条件查询,满足该条件的要素才做检查,也可以在stop中限制通过检查点的要素数量,这样都能够提高检查效率,节约检查时间
四、总结:
运用联线检查,不需要等转换结束就能看到调试结果,很大提高了检查效率
通过选择筛选要素,使检查更有针对性
通过下一步连接检查,可以直观看出要素转换过程